Explorar el Código

知识库文件的下载

liudong hace 2 años
padre
commit
5ff5e947cb
Se han modificado 4 ficheros con 86 adiciones y 42 borrados
  1. 1 0
      package.json
  2. 61 33
      src/api/kbList.ts
  3. 19 9
      src/views/dmx/knowledgeLib/index.vue
  4. 5 0
      yarn.lock

+ 1 - 0
package.json

@@ -36,6 +36,7 @@
   },
   "dependencies": {
     "@arco-design/web-vue": "^2.44.7",
+    "@vue-office/docx": "^1.6.2",
     "@vueuse/core": "^9.3.0",
     "arco-design-pro-vue": "^2.7.3",
     "axios": "^0.24.0",

+ 61 - 33
src/api/kbList.ts

@@ -1,15 +1,15 @@
-import axios from 'axios';
-import qs from 'query-string';
-import type { DescData } from '@arco-design/web-vue/es/descriptions/interface';
+import axios from "axios";
+import qs from "query-string";
+import type { DescData } from "@arco-design/web-vue/es/descriptions/interface";
 
 export interface PolicyRecord {
   id: string;
   number: number;
   name: string;
-  contentType: 'img' | 'horizontalVideo' | 'verticalVideo';
-  filterType: 'artificial' | 'rules';
+  contentType: "img" | "horizontalVideo" | "verticalVideo";
+  filterType: "artificial" | "rules";
   count: number;
-  status: 'online' | 'offline';
+  status: "online" | "offline";
   createdTime: string;
 }
 
@@ -22,44 +22,49 @@ export interface PolicyListRes {
   list: PolicyRecord[];
   total: number;
 }
+
 // 知识库列表接口
 export function queryKbList(params) {
-  return axios.get('/api/v1/kb/list', {
+  return axios.get("/api/v1/kb/list", {
     params
   });
 }
+
 // 知识库详情接口
 export function queryKbdetail(params) {
-  return axios.get('/api/v1/kb/detail', {
+  return axios.get("/api/v1/kb/detail", {
     params
   });
 }
 
 // 信息接口
 export function queryKbtenantInfo(params) {
-  return axios.get('/api/v1/user/tenant_info', {
+  return axios.get("/api/v1/user/tenant_info", {
     params
   });
 }
+
 // 文档列表接口
 export function queryKbDocumentList(params) {
-  return axios.get('/api/v1/document/list', {
+  return axios.get("/api/v1/document/list", {
     params
   });
 }
 
 // 知识库创建接口
 export function kbcreate(params) {
-  return axios.post('/api/v1/kb/create', params);
+  return axios.post("/api/v1/kb/create", params);
 }
+
 // 知识库删除接口
 export function deleteKnow(params) {
-  return axios.post('/api/v1/kb/rm', params);
+  return axios.post("/api/v1/kb/rm", params);
 }
+
 //知识库更新接口
 
 export function querykbupdate(params) {
-  return axios.post('/api/v1/kb/update', params);
+  return axios.post("/api/v1/kb/update", params);
 }
 
 // 文档上传接口
@@ -71,48 +76,49 @@ export function querykbupdate(params) {
 export function kbdocumentupload(params) {
   const config = {
     headers: {
-      'Content-Type': 'application/x-www-form-urlencoded',
+      "Content-Type": "application/x-www-form-urlencoded"
       // token: token,
-    },
-  }
+    }
+  };
   return axios.post(
-    '/api/v1/document/upload',
+    "/api/v1/document/upload",
     params,
     config
-  )
+  );
 }
 
 
 // 文档启动/取消解析接口
 
 export function kbdocumentrun(params) {
-  return axios.post('/api/v1/document/run', params);
+  return axios.post("/api/v1/document/run", params);
 }
 
 // 文档删除接口
 
 export function kbdocumentrm(params) {
-  return axios.post('/api/v1/document/rm', params);
+  return axios.post("/api/v1/document/rm", params);
 }
 
 
 // 文档重命名接口
 export function kbdocumentrename(params) {
-  return axios.post('/api/v1/document/rename', params);
+  return axios.post("/api/v1/document/rename", params);
 }
+
 // 文件解析方法接口
 export function kbdocumentchangeparser(params) {
-  return axios.post('/api/v1/document/change_parser', params);
+  return axios.post("/api/v1/document/change_parser", params);
 }
 
- // 文档启用/禁用接口
+// 文档启用/禁用接口
 export function kbdocumentchangeStatus(params) {
-  return axios.post('/api/v1/document/change_status', params);
+  return axios.post("/api/v1/document/change_status", params);
 }
 
 // 模型列表接口
 export function queryModelList(params) {
-  return axios.get('/api/v1/llm/list', {
+  return axios.get("/api/v1/llm/list", {
     params
   });
 }
@@ -120,18 +126,40 @@ export function queryModelList(params) {
 
 // 测试接口
 export function kbretrievalTest(params) {
-  return axios.post('/api/v1/chunk/retrieval_test', params);
+  return axios.post("/api/v1/chunk/retrieval_test", params);
 }
 
 
 // 配置接口
 export function kbUpdate(params) {
-  return axios.post('/api/v1/kb/update', params);
-}
-
-
-
-
-
+  return axios.post("/api/v1/kb/update", params);
+}
+
+
+// 文档下载接口
+
+export const downloadFile = ({
+                               url,
+                               filename,
+                               target
+                             }: {
+  url: string;
+  filename?: string;
+  target?: string;
+}) => {
+  const downloadElement = document.createElement("a");
+  downloadElement.style.display = "none";
+  downloadElement.href = url;
+  if (target) {
+    downloadElement.target = "_blank";
+  }
+  downloadElement.rel = "noopener noreferrer";
+  if (filename) {
+    downloadElement.download = filename;
+  }
+  document.body.appendChild(downloadElement);
+  downloadElement.click();
+  document.body.removeChild(downloadElement);
+};
 
 

+ 19 - 9
src/views/dmx/knowledgeLib/index.vue

@@ -223,11 +223,16 @@
                         </template>
                       </a-button>
                     </a-popconfirm>
-                    <a-button type="text" size="small">
+                    <a-button type="text" size="small" @click="onDownloadDocument(record)">
                       <template #icon>
                         <icon-download />
                       </template>
                     </a-button>
+                    <a-button type="text" size="small"  @click="seeload(record)">
+                      <template #icon>
+                        <icon-eye />
+                      </template>
+                    </a-button>
                   </template>
                 </a-table>
               </a-card>
@@ -296,7 +301,7 @@ import {
   queryKbDocumentList,
   deleteKnow,
   queryKbdetail,
-  queryKbtenantInfo, kbdocumentrm, kbdocumentchangeparser, kbdocumentrun, kbdocumentchangeStatus
+  queryKbtenantInfo, kbdocumentrm, kbdocumentchangeparser, kbdocumentrun, kbdocumentchangeStatus,downloadFile
 } from "@/api/kbList";
   import { Pagination } from '@/types/global';
   import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
@@ -433,8 +438,8 @@ import {
       title: t('dmx.column.Operate'),
       dataIndex: 'action',
       slotName: 'action',
-      width: 150,
-      minWidth: 150,
+      width: 200,
+      minWidth: 200,
     },
   ]);
   const contentTypeOptions = computed<SelectOptionData[]>(() => [
@@ -659,6 +664,16 @@ const   deleteItem =  async (row)=>{
       })
     }
   }
+  const   onDownloadDocument =  async (record)=>{
+    console.log(record);
+    downloadFile({
+      url: `/api/v1/document/get/${record.id}`,
+      filename: record.name,
+    });
+  }
+const   seeload =  async (row)=>{
+  console.log(row);
+}
 
 const   handleChangeStatus =  async (row)=>{
   console.log(row);
@@ -685,11 +700,6 @@ const   run =  async (row)=>{
     doc_ids: [row.id],
     run: run
   })
-  // let data = await kbdocumentchangeparser({
-  //   parser_id: row.parser_id,
-  //   doc_id: row.id,
-  //   parser_config: row.parser_config,
-  // })
   if(data.code == 0){
     Message.success('解析成功');
     row.run = '3';

+ 5 - 0
yarn.lock

@@ -1015,6 +1015,11 @@
     "@volar/language-core" "1.11.1"
     path-browserify "^1.0.1"
 
+"@vue-office/docx@^1.6.2":
+  version "1.6.2"
+  resolved "https://registry.npmmirror.com/@vue-office/docx/-/docx-1.6.2.tgz#c97d28db60db5325dd351d90b0202dd3d54ad427"
+  integrity sha512-OHAoUHeY8nHjhWvwDhlPx+/rmRkxmqLpvPgtfCEOZ4H1c1LCdJ6eDbdV3152ww8dcdZ7fgGQu3fmSSaI7JwdpQ==
+
 "@vue/babel-helper-vue-transform-on@1.2.2":
   version "1.2.2"
   resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz#7f1f817a4f00ad531651a8d1d22e22d9e42807ef"