From 8189c098dba177425bcdb24d0a8a827f37b23e79 Mon Sep 17 00:00:00 2001 From: liudong <liudong> Date: 星期六, 24 八月 2024 13:48:43 +0800 Subject: [PATCH] agent名称修改 --- src/views/sessionManager/index.vue | 221 +++++++++++++++---------------------------------------- 1 files changed, 61 insertions(+), 160 deletions(-) diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue index 2f37360..a7b426d 100644 --- a/src/views/sessionManager/index.vue +++ b/src/views/sessionManager/index.vue @@ -1,5 +1,5 @@ <template> - <div class="container"> + <div class="container" id="container"> <!-- <AddSession--> <!-- :modalObj="modalObj"--> <!-- @addSession="addSession"--> @@ -30,7 +30,7 @@ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - ">{{ agentTitle }}</span> + ">{{ from.name }}</span> <icon-down style="margin-left: 4px" /> </a-button> <template #content> @@ -234,26 +234,7 @@ }" /> <div style="width: 100%;display: flex;justify-content: space-between"> - <a-button - :disabled="onFileSelectedLoading" - @click="selectFile" - type="text" - style="border-radius: 24px" - > - <icon-attachment - size="28" - style="color: #0960bd" - /> - <input - ref="fileInput" - type="file" - style="display: none" - @change="onFileSelected" - /> - </a-button> - <span - style="cursor: pointer;margin-left: 20px;"> - </span> + <updataFile ref="fileInput" :sessionId="activeSessionId" @selectFileCallback="selectFileCallback"></updataFile> <a-button :disabled="chatDis" @click="sentClick" @@ -264,52 +245,7 @@ <icon-send size="32" style="color: #0960bd" /> </a-button> </div> -<!-- <div class="btn-send">--> -<!-- <a-button--> -<!-- :disabled="chatDis"--> -<!-- @click="sentClick"--> -<!-- type="text"--> -<!-- style="border-radius: 24px"--> -<!-- :loading="loading"--> -<!-- >--> -<!-- <icon-send size="32" style="color: #0960bd" />--> -<!-- </a-button>--> -<!-- </div>--> </div> - <!-- <div style="margin-top: 0px">--> - <!-- <a-upload--> - <!-- ref="uploadRef"--> - <!-- :file-list="uploadList"--> - <!-- :limit="1"--> - <!-- multiple--> - <!-- :custom-request="customRequest"--> - <!-- style="font-size: 24px;margin-bottom: 10px;position: relative;width: 200px">--> - <!-- <template #upload-button>--> - <!-- <icon-attachment style="color: #0960bd;position: absolute;top:-50px;left: 20px;z-index: 10000"/>--> - <!-- </template>--> - <!-- </a-upload>--> - <!-- </div>--> -<!-- <span--> -<!-- style="--> -<!-- position: absolute;--> -<!-- top: 94px;--> -<!-- left: 20px;--> -<!-- z-index: 999;--> -<!-- cursor: pointer;--> -<!-- "--> -<!-- >--> -<!-- <icon-attachment--> -<!-- size="28"--> -<!-- @click="selectFile"--> -<!-- style="color: #0960bd"--> -<!-- />--> -<!-- <input--> -<!-- ref="fileInput"--> -<!-- type="file"--> -<!-- style="display: none"--> -<!-- @change="onFileSelected"--> -<!-- />--> -<!-- </span>--> <div class="uploadFileList"> <div class="files" @@ -319,7 +255,7 @@ > <a-comment :author="item.name" - :content="(item.size/1024).toFixed(2) + 'K'" + :content="item.size" style=" background: var(--color-bg-2); padding: 10px; @@ -392,11 +328,11 @@ <a-form ref="formRef" :rules="rules" - :model="chatObj" + :model="from" @submit="handleSubmit" > <a-form-item field="name" label="鍚嶇О"> - <a-input v-model="agentTitle" placeholder="璇疯緭鍏ュ悕绉�" /> + <a-input v-model="from.name" placeholder="璇疯緭鍏ュ悕绉�" /> </a-form-item> <a-form-item> <div style="width: 100%; text-align: right"> @@ -414,11 +350,6 @@ </div> </template> <script setup lang="ts"> - import { - IconClose, - IconSearch, - IconTiktokColor, - } from '@arco-design/web-vue/es/icon'; import { useAppStore, useUserStore } from '@/store'; import { computed, @@ -439,7 +370,7 @@ import agentSession from '@/views/sessionManager/components/agentSession.vue'; import historySession from '@/views/sessionManager/components/historySession.vue'; import smartAi from '@/views/sessionManager/components/smartAi.vue'; - import setName from '@/views/sessionManager/components/setName.vue'; + import updataFile from '@/views/sessionManager/components/updataFile.vue'; import EventBus from '@/utils/EventBus'; import { addSessionApi, @@ -471,6 +402,9 @@ const agentType = ref('1'); const agentTitle = ref('鏈懡鍚嶄細璇�'); let chatObj = reactive({}); + let from = reactive({ + name:'鏈懡鍚嶄細璇�', + }); const isStopChat = ref(false); const currIndex = ref(0); const displayedText = ref(''); // 姝e湪鏄剧ず鐨勬枃瀛� @@ -493,6 +427,7 @@ const fileInput = ref(null); const chatDataMeg = reactive({}); const visible = ref(false); + let toStop = false; const rules = { name: [ @@ -505,12 +440,10 @@ const handleSubmit = async ({ values, errors }) => { if (errors) return; - // chatObj.name = agentTitle.value; - // chatObj.conversation_id = chatObj.id; let chatData = { id: chatObj.id, conversation_id: chatObj.id, - name: agentTitle.value, + name: from.name, }; const { code, data } = await addSessionApi(chatData); if (data) { @@ -521,13 +454,10 @@ }; let dataItem = []; const getTxt = (data, role, message, index) => { - if (/##0\$\$/.test(message)) { + if (/##[0-9]\$\$/.test(message)) { if (role == 'assistant' && index) { - data.forEach((item) => { - if (Object.keys(item).length !== 0 && item?.doc_aggs.length > 0) { - dataItem = item.doc_aggs; - } - }); + let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0; + dataItem = data[i].doc_aggs; } } else { dataItem = []; @@ -538,7 +468,35 @@ const clickHref = (item) => { // return Message.warning('鏆傛棤娉曟煡鐪�'); - window.open(`/api/v1/document/show/${item.doc_id}`, '_blank'); + // window.open(`/api/v1/document/get/${item.doc_id}`, '_blank'); + downloadFile({ + url: `/api/v1/document/get/${item.doc_id}`, + filename: item.doc_name, + }); + }; + + const downloadFile = ({ + url, + filename, + target, + }: { + url: string; + filename?: string; + target?: string; + }) => { + const downloadElement = document.createElement('a'); + downloadElement.style.display = 'none'; + downloadElement.href = url; + if (target) { + downloadElement.target = '_blank'; + } + downloadElement.rel = 'noopener noreferrer'; + if (filename) { + downloadElement.download = filename; + } + document.body.appendChild(downloadElement); + downloadElement.click(); + document.body.removeChild(downloadElement); }; const getIconByExtension = computed(() => (extension) => { @@ -576,39 +534,12 @@ // formRef.value.resetFields(); }; - const selectFile = () => { - fileInput.value.click(); + const selectFileCallback = (data) => { + console.log(data, 'selectFileCallback'); + uploaditemList.value = data; }; let onFileSelectedLoading = ref(false); - const onFileSelected = (event) => { - const file = event.target.files[0]; - uploaditemList.value = [ - { - name: file.name, - size: file.size, - }, - ]; - if (file) { - onFileSelectedLoading.value = true; - const formData = new FormData(); - formData.append('file', file); - formData.append('conversation_id', activeSessionId.value); - uploadWithoutKb(formData).then((res) => { - // console.log(res); - if (res.code == 200) { - console.log(res); - console.log(uploaditemList.value); - onFileSelectedLoading.value = false; - fileInput.value.value = ''; - uploaditemList.value = []; - Message.success('涓婁紶鎴愬姛'); - } else { - Message.error('涓婁紶澶辫触'); - } - }); - } - }; const deleteFile = (item) => { console.log(uploaditemList.value); @@ -620,31 +551,7 @@ await toClipboard(text); //鍙傛暟涓鸿澶嶅埗鐨勬枃鏈� }; - const onChange = (fileList) => { - // files.value = fileList; - }; - // 涓婁紶鏂囦欢 - const customRequest = async (option) => { - const { onProgress, onError, onSuccess, fileItem, name } = option; - fileItem.status = 'ready'; - if (fileItem.file) { - const formData = new FormData(); - formData.append('file', fileItem.file); - formData.append('conversation_id', activeSessionId.value); - uploadWithoutKb(formData).then((res) => { - // console.log(res); - if (res.code == 200) { - console.log(res); - console.log(uploadList.value); - fileItem.status = 'done'; - // uploadList.value = []; - } else { - fileItem.status = 'error'; - } - }); - } - }; const DialogList = async () => { const { code, data } = await getDialogListApi(); @@ -712,26 +619,6 @@ event.preventDefault(); inputMsg.value += '\n'; }; - const dialogChange = (val) => { - // 鍒ゆ柇褰撳墠鏄櫤鑳戒綋鎴朼gent - // console.log(val, 'val'); - dialogId.value = val; - dialogs.value.forEach((item) => { - if (item.id === val) { - Object.assign(dialogObj, item); - } - }); - console.log(dialogObj.type, 'dialogObj'); - if (dialogObj.type == 1) { - agentType.value = '1'; - querySessionList(); - } else { - agentType.value = '2'; - queryAgentSessionList(); - } - - // querySessionList(); - }; // 鍙戦�� const sentClick = () => { @@ -777,6 +664,7 @@ const startChat = async (valMsg) => { chatDis.value = true; loading.value = true; + toStop = false; sessionDetailList.value.push({ content: valMsg, role: 'user', @@ -804,6 +692,11 @@ .getReader(); currIndex.value = 0; while (true) { + if (toStop) { + displayedText.value = ''; + setChatDataMeg(chatDataMeg); + break; + } const x = await reader?.read(); if (x) { const { done, value } = x; @@ -846,6 +739,7 @@ loading.value = false; chatDis.value = false; isStopChat.value = true; + toStop = true; console.log('stopChat'); console.log(displayedText.value, 'displayedText'); console.log(sessionDetailList.value, 'sessionDetailList'); @@ -896,6 +790,7 @@ sessionDetailList.value = data.message; messagenList.value = data; agentTitle.value = data.name; + from.name = data.name; refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃� isStopChat.value = false; } @@ -909,6 +804,7 @@ const querySessionDetail = async (session) => { sectionList.value = session; activeSessionId.value = session.id; + from.name = session.name; const { code, data } = await getSessionDetailsApi(session.id); if (code === 200) { sessionDetailList.value = data.message; @@ -964,6 +860,11 @@ createSession(''); }); onMounted(() => { + let container = document.getElementById('container'); + container.addEventListener('click', () => { + fileInput.value.cancel(); + + }) EventBus.on('newChat', () => { agentType.value = '1'; createSession(''); -- Gitblit v1.8.0