| | |
| | | <span class="use_name">登</span> |
| | | </div> |
| | | </div> |
| | | <div class="agent_line mt-4"></div> |
| | | |
| | | <el-popover placement="right-start" :width="136" trigger="hover"> |
| | | <template #reference> |
| | | <div class="nav__chat"> |
| | | <div class="nav__chat-icon"> |
| | | <span class="chat_img ywifont ywicon-shouji !text-[20px] text-[#fff]"></span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <template #default> |
| | | <div class="relative"> |
| | | <div class="p-0 box-shadow-none rounded-[10px]"> |
| | | <div ref="setPhoneQRCode" class="mt-[8px] mb-[8px]"></div> |
| | | <p class="text-center text-[#5e6772] m-0 p-0 leading-5"> |
| | | 安卓扫码下载 <br /> |
| | | WI 水务智能助手 |
| | | </p> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-popover> |
| | | </div> |
| | | </div> |
| | | <div class="nav_history_list bg-[#1c1e1d]" v-show="isShowHistoryChatRoom" ref="historyChatRoomRef"> |
| | |
| | | <div class="ywifont ywicon-xiaoxi1 flex-0 mr-2.5"></div> |
| | | <div class="flex-auto text-ellipsis text-nowrap text-sm group-hover:text-[#0084ff]">{{ item.title }}</div> |
| | | <div class="text-gray-100 flex items-center space-x-2 ml-1"> |
| | | <div class="ywifont invisible ywicon-bianji group-hover:visible" @click.stop="editChat(item)"></div> |
| | | <div class="ywifont invisible ywicon-bianji group-hover:visible !text-sm" @click="editChat(item)"></div> |
| | | <el-popconfirm title="确定删除聊天记录?" @confirm.stop="confirmDeleteChatRoom(item)" width="180"> |
| | | <template #reference> |
| | | <div class="ywifont invisible ywicon-shanchu3 group-hover:visible"></div> |
| | |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | <!-- <el-dialog v-model="userRenameVisible" title="重命名" width="500" :before-close="handleCloseRename" class="el-dialog-rename"> |
| | | <el-input v-model="userRenameText" :rows="8" type="textarea" /> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button @click="handleCloseRename">取消</el-button> |
| | | <el-button type="primary" @click="confirmRename"> 确 定 </el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> --> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import { onClickOutside } from '@vueuse/core'; |
| | | import { ElMessage, ElMessageBox } from 'element-plus'; |
| | | import moment from 'moment'; |
| | | import { computed, onMounted, ref, watch, watchEffect } from 'vue'; |
| | | import QRCode from 'qrcodejs2-fixes'; |
| | | import { computed, nextTick, onMounted, ref, watch, watchEffect } from 'vue'; |
| | | import type { ChatRoomItem } from './components/types'; |
| | | import { DeleteHistoryGroups } from '/@/api/ai/chat'; |
| | | import { DeleteHistoryGroups, setHistoryGroupTitle } from '/@/api/ai/chat'; |
| | | import { SERVE_URL } from '/@/constants'; |
| | | import { useSearch } from '/@/hooks/useSearch'; |
| | | import { DateFilter, dateFilterMap } from '/@/model/types/date'; |
| | | import { |
| | |
| | | const queryParams = ref({ |
| | | title: '', |
| | | }); |
| | | const userRenameVisible = ref(false); |
| | | const userRenameText = ref(''); |
| | | const historyChatRoomClick = () => { |
| | | isShowHistoryChatRoom.value = true; |
| | | }; |
| | |
| | | inputValue: room.title, |
| | | inputErrorMessage: '请输入新的名称', |
| | | }) |
| | | .then((value) => { |
| | | const foundIndex = chatRoomList.value.findIndex((item) => item.id === activeRoomId.value); |
| | | chatRoomList.value[foundIndex].title = userRenameText.value; |
| | | userRenameVisible.value = false; |
| | | .then(async (edit) => { |
| | | const res = await setHistoryGroupTitle({ |
| | | history_group_id: room.id, |
| | | title: edit.value, |
| | | }); |
| | | if (res.json_ok) { |
| | | const foundIndex = chatRoomList.value.findIndex((item) => item.id === activeRoomId.value); |
| | | chatRoomList.value[foundIndex].title = edit.value; |
| | | chatRoomRef.value.firstElementChild?.scrollIntoView(); |
| | | } |
| | | }) |
| | | .catch(({ value }) => { |
| | | ElMessage({ |
| | |
| | | isShowHistoryChatRoom.value = false; |
| | | }, |
| | | { |
| | | ignore: ['.el-message-box'], |
| | | ignore: ['.el-message-box', '.el-popper'], |
| | | } |
| | | ); |
| | | //#endregion |
| | |
| | | } |
| | | }); |
| | | //#endregion |
| | | //#region ====================== 扫码手机端下载 ====================== |
| | | const setPhoneQRCode = ref<HTMLElement | null>(null); |
| | | // 初始化生成二维码 |
| | | const initQrcode = () => { |
| | | const url = `${SERVE_URL}ai_html/views/mobileDownload/index.html`; |
| | | nextTick(() => { |
| | | (<HTMLElement>setPhoneQRCode.value).innerHTML = ''; |
| | | new QRCode(setPhoneQRCode.value, { |
| | | text: url, |
| | | width: 126, |
| | | height: 126, |
| | | colorDark: '#000000', |
| | | colorLight: '#ffffff', |
| | | }); |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== 搜索聊天室 ====================== |
| | | const { query, queryData } = useSearch(filteredChatRoomList, queryParams); |
| | | const debounceQuery = debounce(query); |
| | |
| | | emitter.on('logout', () => { |
| | | logoutClick(); |
| | | }); |
| | | initQrcode(); |
| | | }); |
| | | </script> |
| | | |