From 53b2d317989daddbe30a936df0974f76aee87361 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Sat, 22 Aug 2026 21:32:16 +0800 Subject: [PATCH] feat: folder --- ui/src/api/admin/workspace/folder.ts | 12 +- ui/src/api/types/folder.ts | 2 +- .../business/folder-tree/FolderFormDialog.vue | 104 +++++---- ...{MoveFolderDialog.vue => MoveToDialog.vue} | 39 ++-- .../business/folder-tree/VirtualizedTree.vue | 5 +- .../components/business/folder-tree/index.vue | 205 ++++++++++-------- ui/src/components/global/mk-icon/ToolIcon.vue | 10 +- .../global/mk-infinite-scroll/index.vue | 5 +- ui/src/layout/avatar-dropdown/index.vue | 4 +- ui/src/styles/STYLE_README.md | 1 + ui/src/views/application/ApplicationView.vue | 14 +- ui/src/views/tool/ToolView.vue | 5 +- 12 files changed, 230 insertions(+), 176 deletions(-) rename ui/src/components/business/folder-tree/{MoveFolderDialog.vue => MoveToDialog.vue} (73%) diff --git a/ui/src/api/admin/workspace/folder.ts b/ui/src/api/admin/workspace/folder.ts index c8c9cad1cb7..36d4f6cc9c1 100644 --- a/ui/src/api/admin/workspace/folder.ts +++ b/ui/src/api/admin/workspace/folder.ts @@ -1,5 +1,5 @@ import { del, get, post, put } from '../core/request' -import type { FolderSource, FolderItem, RequestParams, FolderRequest } from '@/api/types' +import type { FolderSource, FolderItem, RequestParams, FolderPayload } from '@/api/types' import { getWorkspaceId } from '@/utils/workspace-context' const getPrefix = (source: FolderSource) => { @@ -13,17 +13,17 @@ const getFolderTree = (source: FolderSource, query?: RequestParams) => { } /** 更新 Workspace 的文件夹。 */ -const putFolder = (folderId: string, source: FolderSource, payload?: FolderRequest) => { - return put(`${getPrefix(source)}/${folderId}`, payload) +const putFolder = (folderId: string, source: FolderSource, payload?: FolderPayload) => { + return put(`${getPrefix(source)}/${folderId}`, payload) } /** 在指定资源模块中创建 Workspace 文件夹。 */ -const postFolder = (source: FolderSource, payload: FolderRequest) => { - return post(getPrefix(source), payload) +const postFolder = (source: FolderSource, payload: FolderPayload) => { + return post(getPrefix(source), payload) } /** 删除指定 Workspace 文件夹及其中的资源。 */ -const deleteFolder = (source: FolderSource, folderId: string) => { +const deleteFolder = (folderId: string, source: FolderSource) => { return del(`${getPrefix(source)}/${folderId}`) } diff --git a/ui/src/api/types/folder.ts b/ui/src/api/types/folder.ts index 4978b6a17a6..f390593839f 100644 --- a/ui/src/api/types/folder.ts +++ b/ui/src/api/types/folder.ts @@ -16,7 +16,7 @@ export interface FolderItem { workspace_id?: string } -export interface FolderRequest { +export interface FolderPayload { desc?: string | null name?: string parent_id?: string | null diff --git a/ui/src/components/business/folder-tree/FolderFormDialog.vue b/ui/src/components/business/folder-tree/FolderFormDialog.vue index f60e5fa9611..094af40f13f 100644 --- a/ui/src/components/business/folder-tree/FolderFormDialog.vue +++ b/ui/src/components/business/folder-tree/FolderFormDialog.vue @@ -1,93 +1,101 @@