liudong
2024-08-24 6822ce43b71f7b65ec505009acd4ceb5aa6972ba
上传文档解析方法
3个文件已修改
71 ■■■■ 已修改文件
src/api/session.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dmx/knowledgeLib/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sessionManager/components/updataFile.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/session.ts
@@ -61,4 +61,9 @@
    },
  };
  return axios.post('/api/v1/document/upload_without_kb', params, config);
}
// 获取解析方法列表
export function getParseMethodsListApi() {
  return axios.get<ISessionListResult>('/api/v1/user/parse-methods');
}
src/views/dmx/knowledgeLib/index.vue
@@ -309,11 +309,8 @@
                    <div style="display: flex; align-items: center">
                      <div style="width: 100px">
                        <a-popover title="" v-if="record.run == '4'">
                          <a-tag
                            :loading="record.loading"
                            :color="'blue'"
                            border
                            >{{ $t('dmx.list.complete') }}</a-tag
                          <a-tag :loading="record.loading" :color="'red'" border
                            >失败</a-tag
                          >
                          <template #content>
                            <p>流程开始于:{{ record.process_begin_at }}</p>
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>解析方法: </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、EXCEL、PDF、TXT'
  },
]);
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();