From 5ff5e947cbd5cc0d0819be8da5bbc18df8965a06 Mon Sep 17 00:00:00 2001
From: liudong <liudong>
Date: 星期四, 01 八月 2024 11:06:36 +0800
Subject: [PATCH] 知识库文件的下载
---
src/api/kbList.ts | 92 ++++++++++++++++++++----------
yarn.lock | 5 +
package.json | 1
src/views/dmx/knowledgeLib/index.vue | 28 ++++++---
4 files changed, 85 insertions(+), 41 deletions(-)
diff --git a/package.json b/package.json
index 12aaa78..38ad2c8 100644
--- a/package.json
+++ b/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",
diff --git a/src/api/kbList.ts b/src/api/kbList.ts
index 1f0448e..af8f7cc 100644
--- a/src/api/kbList.ts
+++ b/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 @@
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 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
- )
+ );
}
// 鏂囨。鍚姩/鍙栨秷瑙f瀽鎺ュ彛
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);
-}
-// 鏂囦欢瑙f瀽鏂规硶鎺ュ彛
-export function kbdocumentchangeparser(params) {
- return axios.post('/api/v1/document/change_parser', params);
+ return axios.post("/api/v1/document/rename", params);
}
- // 鏂囨。鍚敤/绂佺敤鎺ュ彛
+// 鏂囦欢瑙f瀽鏂规硶鎺ュ彛
+export function kbdocumentchangeparser(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 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);
+};
diff --git a/src/views/dmx/knowledgeLib/index.vue b/src/views/dmx/knowledgeLib/index.vue
index 8df5eb4..7da5b5e 100644
--- a/src/views/dmx/knowledgeLib/index.vue
+++ b/src/views/dmx/knowledgeLib/index.vue
@@ -223,9 +223,14 @@
</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>
@@ -296,7 +301,7 @@
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 @@
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 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 @@
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('瑙f瀽鎴愬姛');
row.run = '3';
diff --git a/yarn.lock b/yarn.lock
index 619cb2e..4700063 100644
--- a/yarn.lock
+++ b/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"
--
Gitblit v1.8.0