From 1c180d70f0445fa804b40df106e1fdbb50508c55 Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期一, 02 九月 2024 09:22:33 +0800
Subject: [PATCH] 单文档

---
 src/views/sessionManager/components/uploadFile.vue |  120 ++++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 80 insertions(+), 40 deletions(-)

diff --git a/src/views/sessionManager/components/uploadFile.vue b/src/views/sessionManager/components/uploadFile.vue
index ed34dcf..15e9921 100644
--- a/src/views/sessionManager/components/uploadFile.vue
+++ b/src/views/sessionManager/components/uploadFile.vue
@@ -1,10 +1,14 @@
 <template>
   <div>
     <a-upload
+      action="/"
       v-model:fileList="fileList"
-      :limit="limit"
+      :auto-upload="false"
+      :accept="xlsx"
+      :limit="props.limit"
       @change="handleChange"
       @before-remove="beforeRemove"
+      @before-upload="beforeUpload"
       image-preview
     >
       <template #upload-button>
@@ -24,13 +28,16 @@
   import { computed, ref, onMounted, watch, watchEffect } from 'vue';
   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({
     limit: {
       type: Number,
-      default: 3,
+      default: 6,
     },
+    typeXLse: Boolean,
     sessionId: String,
     action: String, // 涓婁紶鐨勬湇鍔″櫒鍦板潃
     url: String, //鍥炴樉鐨勬枃浠跺湴鍧�
@@ -44,6 +51,8 @@
   ]);
   const urls = computed(() => props.url);
   const fileList = ref([]);
+  const filesData = ref([]);
+  const uploaditemList = ref([]);
 
   watch(
     () => [props.url, props.sessionId],
@@ -71,52 +80,83 @@
         url: item,
       }));
     }
+    EventBus.on('queryAgent', (eventData) => {
+      // 鏇存柊缁勪欢鐨勬暟鎹�
+      if (eventData) {
+        if (fileList.value.length == 1) {
+          fileList.value = [];
+        } else {
+          fileList.value.forEach((item) => {
+            if (item.name != eventData.name) {
+              fileList.value = [];
+              fileList.value.push(item);
+            }
+          });
+        }
+      } else {
+        fileList.value = [];
+      }
+    });
   });
 
-  // console.log(urls.value, 8988);
   const beforeRemove = (file) => {
     emit('handleRemove');
     fileList.value = [];
   };
 
   const handleChange = (fileList) => {
-    // emit('update:fileList', fileList);
-
-    // const successFiles = fileList.filter((item) => item.status === 'done');
-    // if (successFiles.length > 0) {
-    //   emit(
-    //     'success',
-    //     successFiles.map((item) => item.response.data)
-    //   );
-    //   emit(
-    //     'selectFileCallback',
-    //     successFiles.map((item) => item.response.data)
-    //   );
-    const formData = new FormData();
-    for (let i = 0; i < fileList.length; i++) {
-      formData.append('file', fileList[i].file);
-      formData.append('conversation_id', props.sessionId);
-      // formData.append('parser_config', '');
-      // if (!parser_id.value) {
-      //   formData.append(
-      //     'parser_id',
-      //     getIconByExtension(successFiles[i].name)
-      //   );
-      // } else {
-      //   formData.append('parser_id', parser_id.value);
-      // }
-    }
-    uploadAndParse(formData).then((res) => {
-      onFileSelectedLoading.value = false;
-      if (res.code == 200) {
-        cancel();
-        // uploaditemList.value = [];
-        emit('selectFileCallback', uploaditemList.value);
-        Message.success('涓婁紶鎴愬姛');
-      } else {
-        Message.error('涓婁紶澶辫触');
-      }
+    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)
+    );
+
+    return {
+      uniqueToFirst,
+      uniqueToSecond,
+    };
+  };
+
+  const typeXLse = computed(() => {
+    return props.type;
+  });
+
+  function beforeUpload(resolve) {
+    if (typeXLse) {
+      return new Promise((resolve) => {
+        resolve(true);
+      });
+    }
+    let name = ['xlsx', 'xls'];
+    let fileName = resolve.name.split('.');
+    let fileExt = fileName[fileName.length - 1];
+    let isTypeOk = name.indexOf(fileExt) >= 0;
+    if (!isTypeOk) {
+      Message.warning('鍙敮鎸佷笂浼狅細xlsx,xls');
+    } else {
+      return new Promise((resolve) => {
+        resolve(true);
+      });
+    }
+  }
 </script>

--
Gitblit v1.8.0