Browse Source

知识库页面文件上传接口调用开发

liudong 2 years ago
parent
commit
33afc123fd
3 changed files with 94 additions and 121 deletions
  1. 16 1
      src/api/kbList.ts
  2. 50 106
      src/views/dmx/knowledgeLib/add.vue
  3. 28 14
      src/views/dmx/knowledgeLib/index.vue

+ 16 - 1
src/api/kbList.ts

@@ -64,10 +64,25 @@ export function querykbupdate(params) {
 
 
 // 文档上传接口
 // 文档上传接口
 
 
+// export function kbdocumentupload(params) {
+//   return axios.post('/api/v1/document/upload', params);
+// }
+
 export function kbdocumentupload(params) {
 export function kbdocumentupload(params) {
-  return axios.post('/api/v1/document/upload', params);
+  const config = {
+    headers: {
+      'Content-Type': 'application/x-www-form-urlencoded',
+      // token: token,
+    },
+  }
+  return axios.post(
+    '/api/v1/document/upload',
+    params,
+    config
+  )
 }
 }
 
 
+
 // 文档启动/取消解析接口
 // 文档启动/取消解析接口
 
 
 export function kbdocumentrun(params) {
 export function kbdocumentrun(params) {

+ 50 - 106
src/views/dmx/knowledgeLib/add.vue

@@ -9,27 +9,36 @@
   <a-modal v-model:visible="visible" title="上传文件" @before-open="handleOpened" @cancel="handleCancel" @before-ok="handleBeforeOk" title-align="start">
   <a-modal v-model:visible="visible" title="上传文件" @before-open="handleOpened" @cancel="handleCancel" @before-ok="handleBeforeOk" title-align="start">
     <a-tabs :default-active-key="activeKey" @change="activeKeyChange">
     <a-tabs :default-active-key="activeKey" @change="activeKeyChange">
       <a-tab-pane key="1" title="文件">
       <a-tab-pane key="1" title="文件">
-        <div class="aUpload">
-<!--          <a-upload :file-list="uploadList" draggable accept=".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm," :custom-request="customRequest" />-->
-          <a-upload :file-list="uploadList" draggable :accept="acceptNameList" :custom-request="customRequest" />
-        </div>
       </a-tab-pane>
       </a-tab-pane>
       <a-tab-pane key="2" title="文件夹">
       <a-tab-pane key="2" title="文件夹">
-        <div class="aUpload">
-          <a-upload :file-list="uploadList" draggable accept=".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt,"  directory   :custom-request="customRequest" />
-        </div>
       </a-tab-pane>
       </a-tab-pane>
     </a-tabs>
     </a-tabs>
+    <div class="aUpload">
+      <!--          <a-upload :file-list="uploadList" draggable accept=".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm," :custom-request="customRequest" />-->
+      <a-upload
+        action="/"
+        :auto-upload="false"
+        ref="uploadRef"
+        :file-list="uploadList"
+        draggable
+        :directory="directory"
+        @change="onChange"
+        multiple
+      />
+    </div>
   </a-modal>
   </a-modal>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
 import { onMounted, onBeforeMount, reactive, ref, computed } from "vue";
 import { onMounted, onBeforeMount, reactive, ref, computed } from "vue";
 import axios from 'axios';
 import axios from 'axios';
+import { kbdocumentupload } from "@/api/kbList";
+import { Message } from '@arco-design/web-vue';
 let CancelToken = axios.CancelToken
 let CancelToken = axios.CancelToken
 let source = null
 let source = null
 const visible = ref(false);
 const visible = ref(false);
 const loading = ref(false);
 const loading = ref(false);
+const directory = ref(false);
 const activeKey = ref('1');
 const activeKey = ref('1');
 const formRef = ref(null);
 const formRef = ref(null);
 const uploadList = ref([]);
 const uploadList = ref([]);
@@ -39,130 +48,65 @@ const form = reactive({
   post: '',// 岗位
   post: '',// 岗位
   txt: '',// 备注
   txt: '',// 备注
 });
 });
+const props =  defineProps(['kbobj'])
+const emit =  defineEmits(['changeFetchData'])
+const uploadRef = ref();
+const files = ref([]);
+console.log(props.kbobj);
 const acceptNameList = computed(
 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,'
     return '.word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,'
   }
   }
 )
 )
-const customRequest = (option) => {
-  const {onProgress, onError, onSuccess, fileItem, name} = option
-  const xhr = new XMLHttpRequest();
-  if (xhr.upload) {
-    xhr.upload.onprogress = function (event) {
-      let percent;
-      if (event.total > 0) {
-        // 0 ~ 1
-        percent = event.loaded / event.total;
-      }
-      onProgress(percent, event);
-    };
-  }
-  xhr.onerror = function error(e) {
-    onError(e);
-  };
-  xhr.onload = function onload() {
-    if (xhr.status < 200 || xhr.status >= 300) {
-      return onError(xhr.responseText);
-    }
-    onSuccess(xhr.response);
-  };
-
-  const formData = new FormData();
-  formData.append(name || 'file', fileItem.file);
-  xhr.open('post', '/v1/user/login', true);
-  xhr.send(formData);
-
-  return {
-    abort() {
-      xhr.abort()
-    }
+// 上传文件
+const submitForm = async()=>{
+  if (files.value && files.value.length > 0) {
+    files.value.map((item) => {
+      const formData = new FormData()
+      formData.append(name || 'file', item.file);
+      formData.append('kb_id', props.kbobj.id);
+      kbdocumentupload(formData).then((res) => {
+        if(res.code == 0){
+          emit('changeFetchData')
+          Message.success('上传成功');
+          visible.value = false;
+        }
+      })
+    })
   }
   }
+}
+
+const handleSubmit = ({values, errors}) => {
+
+}
+
+
+const onChange = (fileList) => {
+  files.value = fileList;
 };
 };
-// 上传文件
-// async submitForm = ()=>{
-//   if (this.fileList && this.fileList.length > 0) {
-//     source = CancelToken.source()
-//     this.fileUploadLoad = true
-//     const formdata = new FormData()
-//     let param = {
-//       userName: this.userInfo.userName,
-//       userId: this.userInfo.userID,
-//       cfeId: this.currow.conferences[0].id,
-//     }
-//     this.fileList.map((item) => {
-//       formdata.append('file', item.raw)
-//     })
-//     uploadCfeFile(
-//       { param, formdata },
-//       (progressEvent) => {
-//         let total = progressEvent.total
-//         let loaded = progressEvent.loaded
-//         this.uploadPercent = parseInt(((loaded / total) * 100).toFixed(0))
-//       },
-//       source
-//     )
-//       .then((res) => {
-//         if (res.data.code === '0') {
-//           //上传成功
-//           this.$successMessage(
-//             this.translateTitle(
-//               'json_fileupload.json_file_tip.json_file_tip08'
-//             )
-//           )
-//           this.fileList = []
-//           this.$refs.upload.clearFiles()
-//           this.queryList()
-//         } else {
-//           this.$errorMessage(res.data.message)
-//         }
-//         this.fileUploadLoad = false
-//         this.uploadPercent = 0
-//       })
-//       .catch((error) => {
-//         this.fileUploadLoad = false
-//         this.uploadPercent = 0
-//         if (axios.isCancel(error)) {
-//           //已终止上传
-//           this.$errorMessage(
-//             this.translateTitle(
-//               'json_fileupload.json_file_tip.json_file_tip09'
-//             )
-//           )
-//         } else {
-//           this.$errorMessage('文件大小超过限制,上传失败')
-//         }
-//       })
-//   } else {
-//     //请选择要上传的文件
-//     this.$warningMessage(
-//       this.translateTitle('json_fileupload.json_file_tip.json_file_tip10')
-//     )
-//   }
-// }
 
 
 
 
 
 
-const handleSubmit = ({values, errors}) => {
-  console.log('values:', values, '\nerrors:', errors)
-}
+
+
 
 
 const handleClick = () => {
 const handleClick = () => {
   visible.value = true;
   visible.value = true;
 };
 };
 const handleBeforeOk = (done) => {
 const handleBeforeOk = (done) => {
-
+  submitForm();
 };
 };
 const handleCancel = () => {
 const handleCancel = () => {
   visible.value = false;
   visible.value = false;
 }
 }
 
 
 const handleOpened =(el) => {
 const handleOpened =(el) => {
+  console.log(props.kbobj);
   uploadList.value = [];
   uploadList.value = [];
-  console.log(uploadList, 'uploadList');
-  console.log(activeKey.value, 'activeKey');
 }
 }
 const activeKeyChange = (value)=>{
 const activeKeyChange = (value)=>{
   activeKey.value = value;
   activeKey.value = value;
+  directory.value = value == '2' ? true : false;
 }
 }
 onBeforeMount(()=>{
 onBeforeMount(()=>{
 
 

+ 28 - 14
src/views/dmx/knowledgeLib/index.vue

@@ -53,7 +53,7 @@
                             style="width: 200px;margin-right: 10px"
                             style="width: 200px;margin-right: 10px"
                           />
                           />
                           <!--            新建-->
                           <!--            新建-->
-                          <add />
+                          <add :kbobj="kbobj" @changeFetchData="changeFetchData"/>
                         </a-col>
                         </a-col>
                       </a-row>
                       </a-row>
                     </a-form>
                     </a-form>
@@ -292,7 +292,7 @@ import {
   queryKbDocumentList,
   queryKbDocumentList,
   deleteKnow,
   deleteKnow,
   queryKbdetail,
   queryKbdetail,
-  queryKbtenantInfo, kbdocumentrm, kbdocumentchangeparser
+  queryKbtenantInfo, kbdocumentrm, kbdocumentchangeparser, kbdocumentrun
 } from "@/api/kbList";
 } from "@/api/kbList";
   import { Pagination } from '@/types/global';
   import { Pagination } from '@/types/global';
   import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
   import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
@@ -333,13 +333,15 @@ import { parseTime } from "@/utils";
   let visible = ref(false)
   let visible = ref(false)
   let detailsShow = ref(false)
   let detailsShow = ref(false)
   let selectedTab = ref(0)
   let selectedTab = ref(0)
+  let kbobj = reactive({})
   let tabs = ref([])
   let tabs = ref([])
 
 
   const  selectTab = (index,item) => {
   const  selectTab = (index,item) => {
     selectedTab.value= index;
     selectedTab.value= index;
     console.log(item.id);
     console.log(item.id);
+    kbobj= item
     fetchData({
     fetchData({
-      kb_id: item.id,
+      kb_id: kbobj.id,
       page: 1,
       page: 1,
       page_size: 20
       page_size: 20
     })
     })
@@ -505,8 +507,9 @@ import { parseTime } from "@/utils";
       tabs.value = data;
       tabs.value = data;
       console.log(tabs.value, 'tabs');
       console.log(tabs.value, 'tabs');
       if(tabs.value.length>0 && tabs.value[0]){
       if(tabs.value.length>0 && tabs.value[0]){
+        kbobj = tabs.value[0]
         fetchData({
         fetchData({
-          kb_id: tabs.value[0].id,
+          kb_id: kbobj.id,
           page: 1,
           page: 1,
           page_size: 20
           page_size: 20
         })
         })
@@ -523,10 +526,6 @@ import { parseTime } from "@/utils";
   };
   };
 
 
   const deleteKnowledge = async (id) => {
   const deleteKnowledge = async (id) => {
-
-
-
-
     let data = await deleteKnow({
     let data = await deleteKnow({
       kb_id:id
       kb_id:id
     })
     })
@@ -615,18 +614,27 @@ const   deleteItem =  async (row)=>{
     let data = await kbdocumentrm({doc_id: row.id})
     let data = await kbdocumentrm({doc_id: row.id})
     if(data.code == 0){
     if(data.code == 0){
       Message.success('删除成功');
       Message.success('删除成功');
-      knowledgeData()
+      console.log(kbobj, 'kbobj');
+      fetchData({
+        kb_id: kbobj.id,
+        page: 1,
+        page_size: 20
+      })
     }
     }
   }
   }
 
 
 const   run =  async (row)=>{
 const   run =  async (row)=>{
   console.log(row);
   console.log(row);
   row.loading = true;
   row.loading = true;
-  let data = await kbdocumentchangeparser({
-    parser_id: row.parser_id,
-    doc_id: row.id,
-    parser_config: row.parser_config,
+  let data = await kbdocumentrun({
+    doc_ids: [row.id],
+    run: '1'
   })
   })
+  // let data = await kbdocumentchangeparser({
+  //   parser_id: row.parser_id,
+  //   doc_id: row.id,
+  //   parser_config: row.parser_config,
+  // })
   if(data.code == 0){
   if(data.code == 0){
     Message.success('解析成功');
     Message.success('解析成功');
     row.run = '3';
     row.run = '3';
@@ -637,7 +645,13 @@ const   run =  async (row)=>{
   row.loading = false;
   row.loading = false;
 }
 }
 
 
-
+const   changeFetchData =  async (row)=>{
+  fetchData({
+    kb_id: kbobj.id,
+    page: 1,
+    page_size: 20
+  })
+}
   watch(
   watch(
     () => columns.value,
     () => columns.value,
     (val) => {
     (val) => {