From fe004c235c598c714506e8fa87c34e3e56e9c6d7 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Fri, 19 Dec 2025 17:25:46 +0800 Subject: [PATCH] feat: Support folder sort --- .../serializers/application_folder.py | 2 +- .../knowledge/serializers/knowledge_folder.py | 2 +- apps/tools/serializers/tool_folder.py | 2 +- ui/src/components/folder-tree/constant.ts | 34 ++ ui/src/components/folder-tree/index.vue | 369 +++++++++++++++++- ui/src/utils/folder.ts | 36 ++ 6 files changed, 422 insertions(+), 23 deletions(-) create mode 100644 ui/src/components/folder-tree/constant.ts create mode 100644 ui/src/utils/folder.ts diff --git a/apps/application/serializers/application_folder.py b/apps/application/serializers/application_folder.py index 3208be6f8..4e97c50a7 100644 --- a/apps/application/serializers/application_folder.py +++ b/apps/application/serializers/application_folder.py @@ -8,7 +8,7 @@ class ApplicationFolderTreeSerializer(serializers.ModelSerializer): class Meta: model = ApplicationFolder - fields = ['id', 'name', 'desc', 'user_id', 'workspace_id', 'parent_id', 'children'] + fields = ['id', 'name', 'desc', 'user_id', 'workspace_id', 'parent_id', 'children','create_time','update_time'] def get_children(self, obj): return ApplicationFolderTreeSerializer(obj.get_children(), many=True).data diff --git a/apps/knowledge/serializers/knowledge_folder.py b/apps/knowledge/serializers/knowledge_folder.py index 32b7afcef..c477b288e 100644 --- a/apps/knowledge/serializers/knowledge_folder.py +++ b/apps/knowledge/serializers/knowledge_folder.py @@ -8,7 +8,7 @@ class KnowledgeFolderTreeSerializer(serializers.ModelSerializer): class Meta: model = KnowledgeFolder - fields = ['id', 'name', 'desc', 'user_id', 'workspace_id', 'parent_id', 'children'] + fields = ['id', 'name', 'desc', 'user_id', 'workspace_id', 'parent_id', 'children', 'create_time','update_time'] def get_children(self, obj): return KnowledgeFolderTreeSerializer(obj.get_children(), many=True).data diff --git a/apps/tools/serializers/tool_folder.py b/apps/tools/serializers/tool_folder.py index f725b4c31..4cc736faa 100644 --- a/apps/tools/serializers/tool_folder.py +++ b/apps/tools/serializers/tool_folder.py @@ -10,7 +10,7 @@ class ToolFolderTreeSerializer(serializers.ModelSerializer): class Meta: model = ToolFolder - fields = ['id', 'name', 'desc', 'user_id', 'workspace_id', 'parent_id', 'children'] + fields = ['id', 'name', 'desc', 'user_id', 'workspace_id', 'parent_id', 'children','create_time','update_time'] def get_children(self, obj): return ToolFolderTreeSerializer(obj.get_children(), many=True).data diff --git a/ui/src/components/folder-tree/constant.ts b/ui/src/components/folder-tree/constant.ts new file mode 100644 index 000000000..f5ee311fa --- /dev/null +++ b/ui/src/components/folder-tree/constant.ts @@ -0,0 +1,34 @@ +import { t } from '@/locales' + + +export const SORT_TYPES = { + CREATE_TIME_ASC: 'createTime-asc', + CREATE_TIME_DESC: 'createTime-desc', + NAME_ASC: 'name-asc', + NAME_DESC: 'name-desc', + CUSTOM: 'custom' +} as const + +export type SortType = typeof SORT_TYPES[keyof typeof SORT_TYPES] + +export const SORT_MENU_CONFIG = [ + { + title: 'time', + items: [ + { label: t('components.folder.ascTime', '按创建时间升序'), value: SORT_TYPES.CREATE_TIME_ASC}, + { label: t('components.folder.descTime', '按创建时间降序'), value: SORT_TYPES.CREATE_TIME_DESC }, + ] + }, + { + title: 'name', + items: [ + { label: t('components.folder.ascName', '按名称升序'), value: SORT_TYPES.NAME_ASC }, + { label: t('components.folder.descName', '按名称降序'), value: SORT_TYPES.NAME_DESC }, + ] + }, + { + items: [ + { label: t('components.folder.custom', '按用户拖拽排序'), value: SORT_TYPES.CUSTOM }, + ] + } +] \ No newline at end of file diff --git a/ui/src/components/folder-tree/index.vue b/ui/src/components/folder-tree/index.vue index c31f7ca80..f50790fa5 100644 --- a/ui/src/components/folder-tree/index.vue +++ b/ui/src/components/folder-tree/index.vue @@ -1,12 +1,37 @@