Kaynağa Gözat

fix: 修改bug

zhangxiao 2 yıl önce
ebeveyn
işleme
d50a7bc02d

+ 33 - 16
src/views/sessionManager/components/seniorAgentSession.vue

@@ -298,6 +298,7 @@
           v-if="!getAent"
           ref="fileInput"
           :sessionId="activeSessionId"
+          :handleRemove="handleRemove"
           @selectFileCallback="selectFileCallback"
         ></uploadFile>
         <a-button
@@ -349,14 +350,14 @@
         >
           <template #avatar>
             <a-spin
-              :loading="onFileSelectedLoading"
-              v-if="onFileSelectedLoading"
+              :loading="item.onFileSelectedLoading"
+              v-if="item.onFileSelectedLoading"
             >
               <template #icon>
                 <icon-sync />
               </template>
               <template #tip>
-                <div style="font-size: 12px">{{ textName }}</div>
+                <div style="font-size: 12px">{{ item.textName }}</div>
               </template>
             </a-spin>
             <!--                    <a-button type="text" :loading="onFileSelectedLoading" v-if="onFileSelectedLoading"></a-button>-->
@@ -364,6 +365,7 @@
             <!--                      <icon-file style="color: #0960bd" />-->
             <!--                    </a-avatar>-->
             <img :src="getIconByExtension(item.name)" alt="" />
+            <div style="font-size: 12px">{{ item.textName }}</div>
           </template>
         </a-comment>
         <icon-close-circle-fill
@@ -835,29 +837,42 @@
     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;
+      });
       if (!activeSessionId.value) {
         await createSession(resData);
       }
 
-      onFileSelectedLoading.value = true;
-      textName.value = '上传中';
-      //   for (let i = 0; i < file.length; i++) {
-      //     formData.append('files', file[i].file);
-      //     formData.append('conversation_id', activeSessionId.value);
-      //     formData.append('app_id', agentObj.id);
-      //   }
+      // onFileSelectedLoading.value = true;
+      // textName.value = '上传中';
+
       formData.append('files', file[0].file);
       formData.append('conversation_id', activeSessionId.value);
       formData.append('app_id', agentObj.id);
       console.log(formData, 'formData');
       const { data, code } = await agentUploadApi(formData);
       if (code === 200) {
-        onFileSelectedLoading.value = false;
-        textName.value = '上传成功';
+        uploaditemList.value.map((item) => {
+          item.onFileSelectedLoading = false;
+          item.textName = '上传成功';
+          return item;
+        });
+        // onFileSelectedLoading.value = false;
+        // textName.value = '上传成功';
       }
     } catch (err) {
-      onFileSelectedLoading.value = false;
-      textName.value = '上传失败';
+      uploaditemList.value.map((item) => {
+        item.onFileSelectedLoading = false;
+        item.textName = '上传失败';
+        return item;
+      });
+      // onFileSelectedLoading.value = false;
+      // textName.value = '上传失败';
       Message.error('上传失败');
     }
   };
@@ -875,13 +890,15 @@
     return type;
   };
 
-  let onFileSelectedLoading = ref(true);
-  const textName = ref('上传成功');
+  // let onFileSelectedLoading = ref(true);
+  // const textName = ref('上传成功');
 
   const deleteFile = (item) => {
     console.log(uploaditemList.value);
     uploaditemList.value.splice(item.index, 1);
+    EventBus.emit('queryAgent', item);
   };
+
   const getIconByExtension = computed(() => (extension) => {
     const fileExtension = ref('');
     fileExtension.value = extension.split('.').pop();

+ 35 - 14
src/views/sessionManager/components/uploadFile.vue

@@ -29,6 +29,7 @@
   import { uploadAndParse } from '@/api/session';
   import { useUserStore } from '@/store';
   import { Message } from '@arco-design/web-vue';
+  import EventBus from '@/utils/EventBus';
 
   const userStore = useUserStore();
   const props = defineProps({
@@ -78,30 +79,57 @@
         url: item,
       }));
     }
+    EventBus.on('queryAgent', (eventData) => {
+      // 更新组件的数据
+      if (fileList.value.length == 1) {
+        fileList.value = [];
+      } else {
+        fileList.value.forEach((item) => {
+          if (item.name != eventData.name) {
+            fileList.value = [];
+            fileList.value.push(item);
+          }
+        });
+      }
+    });
   });
 
-  // console.log(urls.value, 8988);
   const beforeRemove = (file) => {
     emit('handleRemove');
     fileList.value = [];
   };
 
   const handleChange = (fileList) => {
-    const formData = new FormData();
-    for (let i = 0; i < fileList.length; i++) {
-      formData.append('file', fileList[i].file);
-      formData.append('conversation_id', props.sessionId);
-    }
+    const dataFile = compareArr(uploaditemList.value, fileList).uniqueToSecond;
     uploaditemList.value = fileList.map((item, index) => {
       return {
         index: index,
         name: item.name,
         size: (item.file.size / 1024).toFixed(2) + 'K',
+        onFileSelectedLoading: false,
+        textName: '',
       };
     });
+
     filesData.value = fileList;
+    emit('selectFileCallback', uploaditemList.value, dataFile);
+    fileList.value = [];
+  };
+
+  //数组比较
+  const compareArr = (arr1, arr2) => {
+    const uniqueToFirst = arr1.filter(
+      (item1) => !arr2.some((item2) => item1.name == item2.name)
+    );
+
+    const uniqueToSecond = arr2.filter(
+      (item2) => !arr1.some((item1) => item1.name == item2.name)
+    );
 
-    emit('selectFileCallback', uploaditemList.value, fileList);
+    return {
+      uniqueToFirst,
+      uniqueToSecond,
+    };
   };
 
   function beforeUpload(resolve) {
@@ -116,12 +144,5 @@
         resolve(true);
       });
     }
-    // if (form.value.maininformation.length > 4) {
-    //   Message.error('文件不能超过5个');
-    // } else {
-    //   return new Promise((resolve) => {
-    //     resolve(true);
-    //   });
-    // }
   }
 </script>