From 516c88a5100fae0e27d6d38045bdf6a37f890186 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Wed, 18 Jun 2025 20:24:29 +0800 Subject: [PATCH] feat: document --- .../modules/2knowledge-shared-system.ts | 8 +- ui/src/router/modules/2knowledge.ts | 7 + ui/src/router/modules/system.ts | 2 +- .../stores/modules-shared-system/knowledge.ts | 12 - ui/src/stores/modules/knowledge.ts | 53 +++- .../component/AddKnowledgeDialog.vue | 2 +- ui/src/views/document/ImportLarkDocument.vue | 293 ++++++++++++++++++ .../component/SelectKnowledgeDialog.vue | 72 ++++- ui/src/views/document/index.vue | 184 +++++++---- .../knowledge/ImportDocumentKnowledge.vue | 290 ----------------- .../knowledge/component/SyncWebDialog.vue | 6 +- .../ImportLarkDocument.vue} | 0 .../component/SelectKnowledgeDialog.vue | 135 ++++---- ui/src/views/shared/document-shared/index.vue | 25 +- .../component/SyncWebDialog.vue | 7 +- 15 files changed, 611 insertions(+), 485 deletions(-) create mode 100644 ui/src/views/document/ImportLarkDocument.vue delete mode 100644 ui/src/views/knowledge/ImportDocumentKnowledge.vue rename ui/src/views/shared/{knowledge-shared/ImportDocumentKnowledge.vue => document-shared/ImportLarkDocument.vue} (100%) diff --git a/ui/src/router/modules/2knowledge-shared-system.ts b/ui/src/router/modules/2knowledge-shared-system.ts index 70f64e685..6f127812d 100644 --- a/ui/src/router/modules/2knowledge-shared-system.ts +++ b/ui/src/router/modules/2knowledge-shared-system.ts @@ -6,7 +6,6 @@ const ModelRouter = { redirect: '/knowledge', component: () => import('@/layout/layout-template/SimpleLayout.vue'), children: [ - { path: '/knowledge/system/document/upload/shared', name: 'UploadDocumentSharedSystem', @@ -14,6 +13,13 @@ const ModelRouter = { component: () => import('@/views/shared/document-shared/UploadDocument.vue'), hidden: true, }, + { + path: '/knowledge/system/import/shared', + name: 'ImportLarkDocumentShared', + meta: { activeMenu: '/knowledge' }, + component: () => import('@/views/shared/document-shared/ImportLarkDocument.vue'), + hidden: true, + }, ], } diff --git a/ui/src/router/modules/2knowledge.ts b/ui/src/router/modules/2knowledge.ts index b9ba743ff..975b0e46f 100644 --- a/ui/src/router/modules/2knowledge.ts +++ b/ui/src/router/modules/2knowledge.ts @@ -20,6 +20,13 @@ const ModelRouter = { component: () => import('@/views/document/UploadDocument.vue'), hidden: true, }, + { + path: '/knowledge/import', + name: 'ImportLarkDocument', + meta: { activeMenu: '/knowledge' }, + component: () => import('@/views/document/ImportLarkDocument.vue'), + hidden: true + }, ], } diff --git a/ui/src/router/modules/system.ts b/ui/src/router/modules/system.ts index 96cd1fe57..a2f29892f 100644 --- a/ui/src/router/modules/system.ts +++ b/ui/src/router/modules/system.ts @@ -218,7 +218,7 @@ const systemRouter = { }, { path: '/system/authentication', - name: 'authentication', + name: 'SystemAuthentication', meta: { title: 'views.system.authentication.title', activeMenu: '/system', diff --git a/ui/src/stores/modules-shared-system/knowledge.ts b/ui/src/stores/modules-shared-system/knowledge.ts index dfbb22a80..312ae52a7 100644 --- a/ui/src/stores/modules-shared-system/knowledge.ts +++ b/ui/src/stores/modules-shared-system/knowledge.ts @@ -58,18 +58,6 @@ const useKnowledgeStore = defineStore('knowledg', { }) }) }, - async asyncSyncKnowledge(id: string, sync_type: string, loading?: Ref) { - return new Promise((resolve, reject) => { - knowledgeApi - .putSyncWebKnowledge(id, sync_type, loading) - .then((data) => { - resolve(data) - }) - .catch((error) => { - reject(error) - }) - }) - }, }, }) diff --git a/ui/src/stores/modules/knowledge.ts b/ui/src/stores/modules/knowledge.ts index a00b7558e..a5129eb3f 100644 --- a/ui/src/stores/modules/knowledge.ts +++ b/ui/src/stores/modules/knowledge.ts @@ -3,6 +3,7 @@ import type { knowledgeData } from '@/api/type/knowledge' import type { UploadUserFile } from 'element-plus' import knowledgeApi from '@/api/knowledge/knowledge' import { type Ref } from 'vue' +import useFolderStore from './folder' export interface knowledgeStateTypes { baseInfo: knowledgeData | null @@ -46,6 +47,46 @@ const useKnowledgeStore = defineStore('knowledge', { }) }) }, + async asyncGetTreeRootKnowledge(loading?: Ref) { + const folder = useFolderStore() + return Promise.all([ + folder.asyncGetFolder('KNOWLEDGE', {}, loading), + this.asyncGetRootKnowledge(loading), + ]) + .then((res: any) => { + const folderList = res[0].data + const knowledgeList = res[1].data + const arrMap: any = {} + function buildIdMap(arr: any) { + arr.forEach((item: any) => { + arrMap[item.id] = item + // 递归处理子节点 + if (item.children && item.children.length > 0) { + buildIdMap(item.children) + } + }) + } + buildIdMap(folderList) + knowledgeList + .filter((v: any) => v.resource_type !== 'folder') + .forEach((item: any) => { + const targetFolder = arrMap[item.folder_id] + if (targetFolder) { + // 检查是否已有相同ID的子节点(避免重复插入) + const existingChild = targetFolder.children.find( + (child: any) => child.id === item.id, + ) + if (!existingChild) { + targetFolder.children.push(item) + } + } + }) + return Promise.resolve(folderList) + }) + .catch((error) => { + return Promise.reject(error) + }) + }, async asyncGetKnowledgeDetail(knowledge_id: string, loading?: Ref) { return new Promise((resolve, reject) => { knowledgeApi @@ -58,18 +99,6 @@ const useKnowledgeStore = defineStore('knowledge', { }) }) }, - async asyncSyncKnowledge(id: string, sync_type: string, loading?: Ref) { - return new Promise((resolve, reject) => { - knowledgeApi - .putSyncWebKnowledge(id, sync_type, loading) - .then((data) => { - resolve(data) - }) - .catch((error) => { - reject(error) - }) - }) - }, }, }) diff --git a/ui/src/views/application/component/AddKnowledgeDialog.vue b/ui/src/views/application/component/AddKnowledgeDialog.vue index 0469d6e79..9f0d87346 100644 --- a/ui/src/views/application/component/AddKnowledgeDialog.vue +++ b/ui/src/views/application/component/AddKnowledgeDialog.vue @@ -215,7 +215,7 @@ defineExpose({ open }) } .max-height { max-height: calc(100vh - 260px); - min-height: 300px; + min-height: 500px; } } diff --git a/ui/src/views/document/ImportLarkDocument.vue b/ui/src/views/document/ImportLarkDocument.vue new file mode 100644 index 000000000..c8adbd057 --- /dev/null +++ b/ui/src/views/document/ImportLarkDocument.vue @@ -0,0 +1,293 @@ + + + diff --git a/ui/src/views/document/component/SelectKnowledgeDialog.vue b/ui/src/views/document/component/SelectKnowledgeDialog.vue index eeb813140..e587a1f0c 100644 --- a/ui/src/views/document/component/SelectKnowledgeDialog.vue +++ b/ui/src/views/document/component/SelectKnowledgeDialog.vue @@ -8,18 +8,49 @@ :close-on-press-escape="false" > + + + + + + + - - -