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