From ff0ae974a1c561eaf2915988dac63cd066af189f Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期四, 12 九月 2024 09:23:44 +0800
Subject: [PATCH] bug fix

---
 src/views/sessionManager/index.vue |  166 ++++++++++++++++++++----------------------------------
 1 files changed, 62 insertions(+), 104 deletions(-)

diff --git a/src/views/sessionManager/index.vue b/src/views/sessionManager/index.vue
index 00f9106..6dfc3d0 100644
--- a/src/views/sessionManager/index.vue
+++ b/src/views/sessionManager/index.vue
@@ -121,7 +121,7 @@
                   />
                 </template>
                 <template #content>
-                  <a-card v-if="isExistTip(sessionDetail.content)">
+                  <a-card v-if="isExistTip(sessionDetail.content)" style="padding: 10px">
                     <div
                       :class="{ chatItemAnswer: theme === 'light' }"
                       :style="{
@@ -160,10 +160,13 @@
                               "
                             >
                               <img
-                                style="width: 20px; height: 20px"
+                                style="width: 15px; height: 15px"
                                 :src="tipImage"
                               />
                             </a-tooltip>
+                            <span v-if="tipIndex == item.len - 1">
+                              {{ breakContent.substring(item.index + 5) }}
+                            </span>
                           </span>
                           <span v-else-if="tipIndex == item.len - 1">
                             {{
@@ -179,7 +182,7 @@
                               "
                             >
                               <img
-                                style="width: 20px; height: 20px"
+                                style="width: 15px; height: 15px"
                                 :src="tipImage"
                               />
                             </a-tooltip>
@@ -199,7 +202,7 @@
                               "
                             >
                               <img
-                                style="width: 20px; height: 20px"
+                                style="width: 15px; height: 15px"
                                 :src="tipImage"
                               />
                             </a-tooltip>
@@ -238,12 +241,9 @@
                     </ul>
                   </div> -->
                 </template>
-                <!-- <div>{{ sessionDetail.role === 'assistant' }}</div> -->
+
                 <template #actions>
-                  <!-- <div
-                    v-for="(item, leng) in messagenList.reference"
-                    :key="leng"
-                  > -->
+
                   <div>
                     <div>
                       <template
@@ -308,12 +308,7 @@
                 </template>
 
                 <template #actions>
-                  <!-- <div class="icon-box">
-                    <div>
-                      <img :src="getIconByExtension('pdf')" alt="" />
-                    </div>
-                    <div class="icon-text"> 鏂囦欢绫诲瀷 </div>
-                  </div> -->
+
                   <div
                     class="action"
                     @click="stopChat"
@@ -329,24 +324,12 @@
                 </template>
               </a-comment>
             </div>
-            <!-- <div class="chartStart" v-if="isStart" @click="startChat"
-              >鍋滄鐢熸垚</div
-            >
-            <div class="chartStart v-else" @click="stopChat">閲嶆柊鐢熸垚</div> -->
+
           </a-scrollbar>
 
           <div class="chat_bottom">
             <div class="center-bottom">
-              <!-- <a-textarea
-              v-model="inputMsg"
-              @keydown.shift.enter="sendMessage"
-              style="height: 180px"
-              placeholder="杈撳叆鎮ㄦ兂浜嗚В鐨勫唴瀹癸紝Shift+Enter鍙戦��"
-              :max-length="500"
-              allow-clear
-              show-word-limit
-            >
-            </a-textarea> -->
+
               <a-textarea
                 v-model="inputMsg"
                 @keydown.shift.enter="handleShiftEnter"
@@ -380,14 +363,9 @@
                 <updataFile
                   ref="fileInput"
                   :sessionId="activeSessionId"
+                  :hide="hide_upload"
                   @selectFileCallback="selectFileCallback"
                 ></updataFile>
-                <!-- <uploadFile
-                  ref="fileInput"
-                  :handleRemove="handleRemove"
-                  :typeXLse="false"
-                  @selectFileCallback="selectFileCallback"
-                ></uploadFile> -->
 
                 <a-button
                   :disabled="chatDis"
@@ -483,11 +461,10 @@
       </a-col>
     </a-row>
     <a-modal title=" " v-model:visible="fileVisible" :footer="false" fullscreen>
-      <!--      <docx  previewSrc="http://192.168.20.116:1080/v1/document/get/405c3efa4d8c11ef97560242ac120006"></docx>-->
       <docx v-if="documenttype == 'docx'" :previewSrc="previewSrc"></docx>
-      <excel v-if="documenttype == 'xlsx'" :previewSrc="previewSrc"></excel>
+      <excel v-if="documenttype == ('xlsx' || 'xls')" :previewSrc="previewSrc"></excel>
       <Pdf v-if="documenttype == 'pdf'" :previewSrc="previewSrc"></Pdf>
-      <txt v-if="documenttype == 'txt'" :previewSrc="previewSrc"></txt>
+      <txt  v-if="documenttype == 'txt'" :previewSrc="previewSrc"></txt>
     </a-modal>
     <a-modal
       v-model:visible="visible"
@@ -591,13 +568,14 @@
   let from = reactive({
     name: '鏈懡鍚嶄細璇�',
   });
-  const isStopChat = ref(false);
+
   const currIndex = ref(0);
   const displayedText = ref(''); // 姝e湪鏄剧ず鐨勬枃瀛�
   let timer: number | null = null;
   const streamStr = ref('');
   const inputMsg = ref('');
   const activeSessionId = ref('');
+  const hide_upload=ref(2);
   const fieldNames = { value: 'id', label: 'name' };
   const dialogs = ref([]);
   const dialogObj = reactive({});
@@ -634,13 +612,16 @@
     if (errors) return;
     let chatData = {
       id: chatObj.id,
-      conversation_id: chatObj.id,
-      name: from.name,
+      dialog_id: chatObj.dialog_id,
+      conversation_desc: from.name,
     };
     const { code, data } = await addSessionApi(chatData);
     if (data) {
       Message.success('淇敼鎴愬姛');
       handleCancel();
+      if (data?.id) {
+        activeSessionId.value = data.id;
+      }
       queryNewSessionDetail(activeSessionId.value);
     }
   };
@@ -688,6 +669,12 @@
     if (isExistTip(message)) {
       if (role == 'assistant' && index) {
         let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0;
+        if (data.length == 1) {
+          i = 0;
+        }
+        if (data.length == i) {
+          i = data.length-1;
+        }
         dataItem = data[i].doc_aggs;
       }
     } else {
@@ -700,6 +687,12 @@
   const getTipContent = (data, index): string => {
     let maxSimilarityContent = '';
     let i = index / 2 - 1 > 0 ? index / 2 - 1 : 0;
+    if (data.length == 1) {
+      i = 0;
+    }
+    if (data.length == i) {
+      i = data.length-1;
+    }
     let maxSimilarity = 0;
     data[i].chunks.forEach((chunk) => {
       if (chunk.similarity > maxSimilarity) {
@@ -712,7 +705,7 @@
 
   const clickHref = async (item) => {
     documenttype.value = item.doc_name.split('.').pop();
-    previewSrc.value = httpUrl + `/api/v1/document/get/${item.doc_id}`;
+    previewSrc.value = httpUrl + `/api/v1/document/get/${item.doc_id}`+"?t="+new Date().getTime();
     fileVisible.value = true;
   };
 
@@ -780,53 +773,6 @@
     activeSessionId.value = conversation_id;
   };
 
-  //涓婁紶
-  // const selectFileCallback = async (resData, file) => {
-  //   console.log(111);
-  //   try {
-  //     const formData = new FormData();
-  //     uploaditemList.value = resData;
-  //     uploaditemList.value.map((item) => {
-  //       if (item.name == file[0].file.name) {
-  //         item.onFileSelectedLoading = true;
-  //         item.textName = '涓婁紶涓�';
-  //       }
-  //       return item;
-  //     });
-  //     debugger;
-  //     if (!activeSessionId.value) {
-  //       await createSession(resData);
-  //     }
-
-  //     // onFileSelectedLoading.value = true;
-  //     // textName.value = '涓婁紶涓�';
-
-  //     formData.append('files', file[0].file);
-  //     formData.append('conversation_id', activeSessionId.value);
-
-  //     console.log(formData, 'formData');
-  //     const { data, code } = await uploadAndParse(formData);
-  //     if (code === 200) {
-  //       uploaditemList.value.map((item: any) => {
-  //         item.onFileSelectedLoading = false;
-  //         item.textName = '涓婁紶鎴愬姛';
-  //         return item;
-  //       });
-  //       getInfo(data);
-  //       // onFileSelectedLoading.value = false;
-  //       // textName.value = '涓婁紶鎴愬姛';
-  //     }
-  //   } catch (err) {
-  //     uploaditemList.value.map((item: any) => {
-  //       item.onFileSelectedLoading = false;
-  //       item.textName = '涓婁紶澶辫触';
-  //       return item;
-  //     });
-  //     // onFileSelectedLoading.value = false;
-  //     // textName.value = '涓婁紶澶辫触';
-  //     Message.error('涓婁紶澶辫触');
-  //   }
-  // };
 
   //涓婁紶鎴愬姛瑙f瀽getinfo
   const getInfo = async (id) => {
@@ -942,6 +888,7 @@
 
   // 鍙戦��
   const sentClick = () => {
+    displayedText.value="";
     sendMessage('click');
     uploaditemList.value = [];
   };
@@ -1000,11 +947,14 @@
     }
   };
 
+  let message_stop = [];
+  let message_id = "";
   const startChat = async (valMsg) => {
     chatDis.value = true;
     loading.value = true;
-    chartLoading.value = true;
     toStop = false;
+    displayedText.value = '';
+    chartLoading.value = true;
     sessionDetailList.value.push({
       content: valMsg,
       role: 'user',
@@ -1033,6 +983,7 @@
     currIndex.value = 0;
     while (true) {
       if (toStop) {
+        message_stop.push(message_id);
         displayedText.value = '';
         setChatDataMeg(chatDataMeg);
         break;
@@ -1044,6 +995,16 @@
         try {
           const val = JSON.parse(value?.data || '');
           const d = val?.data;
+          if (message_id != d.message_id) {
+            message_id = d.message_id;
+            message_stop = [];
+          } else {
+            //message_stop涓煡鎵緈essage_id
+            const index = message_stop.findIndex(item => item === message_id);
+            if (index > -1) {
+              break;
+            }
+          }
           if (typeof d !== 'boolean') {
             // console.info("data:", d);
             streamStr.value = d.content;
@@ -1057,12 +1018,8 @@
           console.info('done');
           displayedText.value = '';
           chartLoading.value = false;
-          if (isStopChat.value) {
-            setChatDataMeg(chatDataMeg);
-          } else {
-            queryNewSessionDetail(activeSessionId.value);
-            EventBus.emit('queryAppUsageList');
-          }
+          queryNewSessionDetail(activeSessionId.value);
+          EventBus.emit('queryAppUsageList');
           break;
         }
       }
@@ -1073,14 +1030,8 @@
   };
 
   const stopChat = async () => {
-    // const { code, data } = await stopChatApi(activeSessionId.value);
-    // if (code === 200) {
-    //   Message.success("宸插仠姝�");
-    //   queryNewSessionDetail(activeSessionId.value);
-    // }
     loading.value = false;
     chatDis.value = false;
-    isStopChat.value = true;
     toStop = true;
     console.log('stopChat');
     console.log(displayedText.value, 'displayedText');
@@ -1103,7 +1054,9 @@
       .concat(lastArr);
     console.log(sessionDetailList.value, 'sessionDetailList2');
     console.log(chatObj, 'chatObj瀵硅薄');
-    chatObj.message = chatObj.message.concat(lastArr);
+    if (chatObj?.message) {
+      chatObj.message = chatObj.message.concat(lastArr);
+    }
     Object.assign(chatDataMeg, {
       id: chatObj.id,
       conversation_id: chatObj.id,
@@ -1133,11 +1086,12 @@
       agentTitle.value = data.name;
       from.name = data.name;
       refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
-      isStopChat.value = false;
     }
   };
 
   const changeAgentType = (val, session) => {
+    hide_upload.value = hide_upload.value+1;
+    uploaditemList.value=[];
     agentType.value = val;
     console.log(val, 'val');
   };
@@ -1148,6 +1102,7 @@
     from.name = session.name;
     const { code, data } = await getSessionDetailsApi(session.id);
     if (code === 200) {
+      Object.assign(chatObj, data);
       sessionDetailList.value = data.message;
       messagenList.value = data;
       refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
@@ -1205,7 +1160,10 @@
       // fileInput.value.cancel();
     });
     EventBus.on('newChat', () => {
+      uploaditemList.value = [];
       agentType.value = '1';
+      chatObj = {};
+      hide_upload.value = hide_upload.value+1;
       // createSession('');
       activeSessionId.value = '';
       sessionDetailList.value = [

--
Gitblit v1.8.0