From 2dc6d813aae130e1e8052a31aed35b62030ed834 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Thu, 6 Nov 2025 21:02:47 +0800 Subject: [PATCH] feat: Folder directories support moving or dragging. --- ui/src/components/folder-breadcrumb/index.vue | 36 +++++++--- .../components/folder-tree/MoveToDialog.vue | 34 +++++----- ui/src/components/folder-tree/index.vue | 66 +++++++++++-------- ui/src/styles/element-plus.scss | 3 + .../component/DropdownMenu.vue | 40 +++++------ .../component/AddKnowledgeDialog.vue | 22 +++---- .../application/component/ToolDialog.vue | 40 +++++------ ui/src/views/application/index.vue | 18 ++--- ui/src/views/knowledge/index.vue | 22 +++---- ui/src/views/tool/index.vue | 24 +++---- 10 files changed, 166 insertions(+), 139 deletions(-) diff --git a/ui/src/components/folder-breadcrumb/index.vue b/ui/src/components/folder-breadcrumb/index.vue index 8517c19e8..ac743d33d 100644 --- a/ui/src/components/folder-breadcrumb/index.vue +++ b/ui/src/components/folder-breadcrumb/index.vue @@ -3,14 +3,34 @@ {{ breadcrumbData[0]?.name }} - -
- {{ item.name }} -
- - {{ item.name }} - -
+ +
diff --git a/ui/src/components/folder-tree/MoveToDialog.vue b/ui/src/components/folder-tree/MoveToDialog.vue index aeed2a5e3..af61f6a37 100644 --- a/ui/src/components/folder-tree/MoveToDialog.vue +++ b/ui/src/components/folder-tree/MoveToDialog.vue @@ -11,12 +11,6 @@ ref="treeRef" :source="source" :data="folderList" - :treeStyle="{ - height: 'calc(100vh - 320px)', - border: '1px solid #ebeef5', - borderRadius: '6px', - padding: '8px', - }" :default-expanded-keys="[currentNodeKey]" :canOperation="false" class="move-to-dialog-tree" @@ -74,7 +68,7 @@ watch(dialogVisible, (bool) => { const isFolder = ref(false) -const open = (data: any, is_folder?:any) => { +const open = (data: any, is_folder?: any) => { detail.value = data isFolder.value = is_folder getFolder() @@ -105,17 +99,17 @@ const submitHandle = async () => { } if (isFolder.value) { const folder_obj = { - ...detail.value, - parent_id: selectForderId.value, - } - folderApi.putFolder(detail.value.id, detail.value.folder_type, folder_obj, loading) + ...detail.value, + parent_id: selectForderId.value, + } + folderApi + .putFolder(detail.value.id, detail.value.folder_type, folder_obj, loading) .then(() => { MsgSuccess(t('common.saveSuccess')) - emit('refresh') - dialogVisible.value = false - }) - } - else if (props.source === SourceTypeEnum.KNOWLEDGE) { + emit('refresh') + dialogVisible.value = false + }) + } else if (props.source === SourceTypeEnum.KNOWLEDGE) { if (detail.value.type === 2) { KnowledgeApi.putLarkKnowledge(detail.value.id, obj, loading).then(() => { MsgSuccess(t('common.saveSuccess')) @@ -155,8 +149,12 @@ defineExpose({ open }) padding: 0 !important; margin-bottom: 8px; } - :deep(.tree-label) { - max-width: 100% !important; + :deep(.el-scrollbar) { + border: 1px solid var(--el-border-color-light); + border-radius: 6px; + } + :deep(.el-tree) { + height: calc(100vh - 320px)!important; } } diff --git a/ui/src/components/folder-tree/index.vue b/ui/src/components/folder-tree/index.vue index 68a950b3a..b2a1f44d8 100644 --- a/ui/src/components/folder-tree/index.vue +++ b/ui/src/components/folder-tree/index.vue @@ -5,27 +5,28 @@ :placeholder="$t('common.search')" prefix-icon="Search" clearable - class="p-8" + class="p-16 pb-0" /> - -
-
- - {{ shareTitle }} +
+
+
+ + {{ shareTitle }} +
@@ -198,15 +196,17 @@ function getList() { type: 'tool', isShared: folder_id === 'share', systemType: 'workspace', - }).getToolList({ - folder_id: folder_id, - tool_type: 'CUSTOM' - }).then((res: any) => { - toolList.value = res.data?.tools || res.data || [] - toolList.value = toolList.value?.filter((item: any) => item.is_active) - searchData.value = res.data.tools || res.data - searchData.value = searchData.value?.filter((item: any) => item.is_active) }) + .getToolList({ + folder_id: folder_id, + tool_type: 'CUSTOM', + }) + .then((res: any) => { + toolList.value = res.data?.tools || res.data || [] + toolList.value = toolList.value?.filter((item: any) => item.is_active) + searchData.value = res.data.tools || res.data + searchData.value = searchData.value?.filter((item: any) => item.is_active) + }) } defineExpose({ open }) diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 34a0a197f..c81c5f26e 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -2,15 +2,15 @@