@@ -3,6 +3,7 @@ import type { knowledgeData } from '@/api/type/knowledge'
33import type { UploadUserFile } from 'element-plus'
44import knowledgeApi from '@/api/knowledge/knowledge'
55import { type Ref } from 'vue'
6+ import useFolderStore from './folder'
67
78export interface knowledgeStateTypes {
89 baseInfo : knowledgeData | null
@@ -46,6 +47,46 @@ const useKnowledgeStore = defineStore('knowledge', {
4647 } )
4748 } )
4849 } ,
50+ async asyncGetTreeRootKnowledge ( loading ?: Ref < boolean > ) {
51+ const folder = useFolderStore ( )
52+ return Promise . all ( [
53+ folder . asyncGetFolder ( 'KNOWLEDGE' , { } , loading ) ,
54+ this . asyncGetRootKnowledge ( loading ) ,
55+ ] )
56+ . then ( ( res : any ) => {
57+ const folderList = res [ 0 ] . data
58+ const knowledgeList = res [ 1 ] . data
59+ const arrMap : any = { }
60+ function buildIdMap ( arr : any ) {
61+ arr . forEach ( ( item : any ) => {
62+ arrMap [ item . id ] = item
63+ // 递归处理子节点
64+ if ( item . children && item . children . length > 0 ) {
65+ buildIdMap ( item . children )
66+ }
67+ } )
68+ }
69+ buildIdMap ( folderList )
70+ knowledgeList
71+ . filter ( ( v : any ) => v . resource_type !== 'folder' )
72+ . forEach ( ( item : any ) => {
73+ const targetFolder = arrMap [ item . folder_id ]
74+ if ( targetFolder ) {
75+ // 检查是否已有相同ID的子节点(避免重复插入)
76+ const existingChild = targetFolder . children . find (
77+ ( child : any ) => child . id === item . id ,
78+ )
79+ if ( ! existingChild ) {
80+ targetFolder . children . push ( item )
81+ }
82+ }
83+ } )
84+ return Promise . resolve ( folderList )
85+ } )
86+ . catch ( ( error ) => {
87+ return Promise . reject ( error )
88+ } )
89+ } ,
4990 async asyncGetKnowledgeDetail ( knowledge_id : string , loading ?: Ref < boolean > ) {
5091 return new Promise ( ( resolve , reject ) => {
5192 knowledgeApi
@@ -58,18 +99,6 @@ const useKnowledgeStore = defineStore('knowledge', {
5899 } )
59100 } )
60101 } ,
61- async asyncSyncKnowledge ( id : string , sync_type : string , loading ?: Ref < boolean > ) {
62- return new Promise ( ( resolve , reject ) => {
63- knowledgeApi
64- . putSyncWebKnowledge ( id , sync_type , loading )
65- . then ( ( data ) => {
66- resolve ( data )
67- } )
68- . catch ( ( error ) => {
69- reject ( error )
70- } )
71- } )
72- } ,
73102 } ,
74103} )
75104
0 commit comments