From 6822ce43b71f7b65ec505009acd4ceb5aa6972ba Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期六, 24 八月 2024 19:01:47 +0800
Subject: [PATCH] 上传文档解析方法

---
 src/views/sessionManager/components/updataFile.vue |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 55 insertions(+), 4 deletions(-)

diff --git a/src/views/sessionManager/components/updataFile.vue b/src/views/sessionManager/components/updataFile.vue
index 7457a25..be0c3b5 100644
--- a/src/views/sessionManager/components/updataFile.vue
+++ b/src/views/sessionManager/components/updataFile.vue
@@ -8,6 +8,7 @@
       type="text"
       style="border-radius: 24px"
       @click="visibleChange"
+      :disabled="!activeSessionId"
     >
       <icon-attachment
         size="28"
@@ -31,13 +32,14 @@
         ref="uploadRef"
         @change="onChange"
         multiple
+        :limit="1"
       />
       <div style="width: 100%;margin-top: 10px;display: flex; justify-content: space-between;" class="upload-wrap">
         <div>
           <span>瑙f瀽鏂规硶: </span>
-          <a-radio-group v-model="parser_id" style="width: 500px;">
+          <a-radio-group v-model="parser_id" style="width: 400px;" @change="parserChange">
             <a-popover title=""
-             v-for="item in parser_ids.filter(val => parser_configs.includes(val.name)).reverse().slice(0,4).reverse()"
+             v-for="item in filterData"
              :key="item.value"
             >
               <a-radio
@@ -74,7 +76,7 @@
 import { onMounted, onBeforeMount, reactive, ref, computed, watch } from "vue";
 import axios from "axios";
 import { Message } from "@arco-design/web-vue";
-import { uploadWithoutKb } from "@/api/session";
+import { getParseMethodsListApi, uploadWithoutKb } from "@/api/session";
 
 const visible = ref(false);
 const loading = ref(false);
@@ -83,6 +85,7 @@
 const filesBtn = ref(null);
 const onFileSelectedLoading = ref(false);
 const parser_id = ref("");
+const parseridConfig = ref(false);
 const uploaditemList = ref([]);
 const activeSessionId = ref('');
 let kbtenantInfo = reactive({
@@ -207,6 +210,7 @@
     parser_config_str: '鏀寔鐨勬枃浠舵牸寮忎负DOCX銆丒XCEL銆丳DF銆乀XT'
   },
 ]);
+const parser_idsArr = ref([]);
 const uploadList = ref([]);
 const props = defineProps(["sessionId"]);
 const emit = defineEmits(["selectFileCallback"]);
@@ -214,6 +218,32 @@
 const files = ref([]);
 const acceptNameList = computed(() => {
   return ".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,";
+});
+
+
+const getIconByExtension = (extension) => {
+  const fileExtension = ref('');
+  fileExtension.value = extension.split('.').pop();
+  parser_idsArr.value.forEach((item)=>{
+    // 鍖呭惈鍏冪礌
+    if (item.formats.includes(fileExtension.value)){
+      return item.id;
+    }
+  })
+};
+
+
+
+
+const filterData = computed(() => {
+  const result = parser_ids.value.filter(val => parser_configs.value.includes(val.name)).reverse().slice(0,4).reverse();
+  result.unshift({
+    name: '鏅鸿兘璇嗗埆',
+    value: '',
+    parser_config_str: '',
+    parser_config: ''
+  });
+  return result;
 });
 
 const init = () => {
@@ -224,6 +254,7 @@
   //     value: value1
   //   };
   // });
+  getParseMethodsList();
 }
 
 const chooseParser = (item) => {
@@ -232,7 +263,14 @@
 
 const onChange = (fileList) => {
   files.value = fileList;
+  files.value.forEach((item) => {
+
+  });
+
 };
+const parserChange = ()=>{
+  parseridConfig.value = false;
+}
 
 const visibleChange = (e) => {
   e.stopPropagation();
@@ -258,7 +296,7 @@
   for (let i = 0; i < files.value.length; i++) {
     formData.append('file', files.value[i].file);
     formData.append('conversation_id', activeSessionId.value);
-    formData.append('parser_id', parser_id.value);
+    formData.append('parser_id', getIconByExtension(files.value[i].name));
     formData.append('parser_config', '');
   }
   uploadWithoutKb(formData).then((res) => {
@@ -292,6 +330,19 @@
   cancel
 })
 
+const getParseMethodsList = async () => {
+  let res = await getParseMethodsListApi();
+  parser_ids.value = res.data.map((item) => {
+    return {
+      name: item.name,
+      value: item.id,
+      parser_config: '',
+      parser_config_str: item.parser_config_str
+    };
+  });
+  parser_idsArr.value = res.data;
+}
+
 
 onBeforeMount(() => {
   init();

--
Gitblit v1.8.0