From b8dd5b4f515db7800d257d70825a3d9c91bcb2d4 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Thu, 2 Apr 2026 15:17:35 +0800 Subject: [PATCH] feat: Batch button permission --- .../permission/application/system-manage.ts | 4 +++- ui/src/permission/application/workspace.ts | 20 +++++++++++++++++++ ui/src/permission/knowledge/system-manage.ts | 2 ++ ui/src/permission/knowledge/system-share.ts | 2 ++ .../permission/knowledge/workspace-share.ts | 2 ++ ui/src/permission/knowledge/workspace.ts | 20 +++++++++++++++++++ ui/src/permission/tool/system-manage.ts | 2 ++ ui/src/permission/tool/system-share.ts | 2 ++ ui/src/permission/tool/workspace.ts | 20 +++++++++++++++++++ ui/src/utils/permission/data.ts | 9 +++++++++ ui/src/views/application/index.vue | 5 +++-- .../component/KnowledgeListContainer.vue | 9 +++++++-- .../tool/component/ToolListContainer.vue | 9 +++++++-- 13 files changed, 99 insertions(+), 7 deletions(-) diff --git a/ui/src/permission/application/system-manage.ts b/ui/src/permission/application/system-manage.ts index 2e2058e06ab..b2d5963961c 100644 --- a/ui/src/permission/application/system-manage.ts +++ b/ui/src/permission/application/system-manage.ts @@ -2,7 +2,9 @@ import {hasPermission} from '@/utils/permission/index' import {PermissionConst, RoleConst} from '@/utils/permission/data' const systemManage = { - create: () => false, + create: () => false, + batchDelete: () => false, + batchMove: () => false, folderCreate: () => false, edit: () => hasPermission( diff --git a/ui/src/permission/application/workspace.ts b/ui/src/permission/application/workspace.ts index c06eb599c80..b651758eb45 100644 --- a/ui/src/permission/application/workspace.ts +++ b/ui/src/permission/application/workspace.ts @@ -13,6 +13,26 @@ const workspace = { ], 'OR' ), + batchDelete: () => + hasPermission( + [ + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.APPLICATION_BATCH_DELETE.getWorkspacePermission, + PermissionConst.APPLICATION_BATCH_DELETE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), + batchMove: () => + hasPermission( + [ + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.APPLICATION_BATCH_MOVE.getWorkspacePermission, + PermissionConst.APPLICATION_BATCH_MOVE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), folderCreate: (folder_id: string) => hasPermission( [ diff --git a/ui/src/permission/knowledge/system-manage.ts b/ui/src/permission/knowledge/system-manage.ts index 6dd584275b9..22fd7dbe8cf 100644 --- a/ui/src/permission/knowledge/system-manage.ts +++ b/ui/src/permission/knowledge/system-manage.ts @@ -13,6 +13,8 @@ const systemManage = { 'OR', ), create: () => false, + batchDelete: () => false, + batchMove: () => false, sync: () => hasPermission( [ RoleConst.ADMIN, diff --git a/ui/src/permission/knowledge/system-share.ts b/ui/src/permission/knowledge/system-share.ts index 49af50b8fb6..c1301f6b766 100644 --- a/ui/src/permission/knowledge/system-share.ts +++ b/ui/src/permission/knowledge/system-share.ts @@ -4,6 +4,8 @@ import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/dat const share = { is_share: () => false, create: () => hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_CREATE], 'OR'), + batchDelete: () => false, + batchMove: () => false, sync: () => hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_SYNC], 'OR'), vector: () => hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_VECTOR], 'OR'), generate: () => hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_GENERATE], 'OR'), diff --git a/ui/src/permission/knowledge/workspace-share.ts b/ui/src/permission/knowledge/workspace-share.ts index b72526b4831..96d85a5f427 100644 --- a/ui/src/permission/knowledge/workspace-share.ts +++ b/ui/src/permission/knowledge/workspace-share.ts @@ -4,6 +4,8 @@ import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/dat const workspaceShare = { is_share: () => true, create: () => false, + batchDelete: () => false, + batchMove: () => false, sync: () => false, vector: () => false, generate: () => false, diff --git a/ui/src/permission/knowledge/workspace.ts b/ui/src/permission/knowledge/workspace.ts index 5aafa12edd4..e95fa85ae12 100644 --- a/ui/src/permission/knowledge/workspace.ts +++ b/ui/src/permission/knowledge/workspace.ts @@ -25,6 +25,26 @@ const workspace = { ], 'OR', ), + batchDelete: () => + hasPermission( + [ + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_BATCH_DELETE.getWorkspacePermission, + PermissionConst.KNOWLEDGE_BATCH_DELETE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), + batchMove: () => + hasPermission( + [ + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_BATCH_MOVE.getWorkspacePermission, + PermissionConst.KNOWLEDGE_BATCH_MOVE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), folderRead: (folder_id: string) => hasPermission( [ diff --git a/ui/src/permission/tool/system-manage.ts b/ui/src/permission/tool/system-manage.ts index 1704887750f..51e75e7c3ab 100644 --- a/ui/src/permission/tool/system-manage.ts +++ b/ui/src/permission/tool/system-manage.ts @@ -63,6 +63,8 @@ const systemManage = { 'OR' ), create: () => false, + batchDelete: () => false, + batchMove: () => false, import: () => false, switch: () => hasPermission( diff --git a/ui/src/permission/tool/system-share.ts b/ui/src/permission/tool/system-share.ts index 4ebca8a7e71..683150ccd57 100644 --- a/ui/src/permission/tool/system-share.ts +++ b/ui/src/permission/tool/system-share.ts @@ -21,6 +21,8 @@ const share = { ], 'OR', ), + batchDelete: () => false, + batchMove: () => false, import: () => hasPermission( [ diff --git a/ui/src/permission/tool/workspace.ts b/ui/src/permission/tool/workspace.ts index 8c03b0fb578..1193f1429d6 100644 --- a/ui/src/permission/tool/workspace.ts +++ b/ui/src/permission/tool/workspace.ts @@ -31,6 +31,26 @@ const workspace = { ], 'OR' ), + batchDelete: () => + hasPermission( + [ + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.TOOL_BATCH_DELETE.getWorkspacePermission, + PermissionConst.TOOL_BATCH_DELETE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), + batchMove: () => + hasPermission( + [ + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.TOOL_BATCH_MOVE.getWorkspacePermission, + PermissionConst.TOOL_BATCH_MOVE.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), import: () => hasPermission( [ diff --git a/ui/src/utils/permission/data.ts b/ui/src/utils/permission/data.ts index 89fb7a5771b..9fa1aac7f0e 100644 --- a/ui/src/utils/permission/data.ts +++ b/ui/src/utils/permission/data.ts @@ -128,6 +128,15 @@ const PermissionConst = { KNOWLEDGE_GENERATE: new Permission('KNOWLEDGE:READ+GENERATE'), KNOWLEDGE_RELATE_RESOURCE_VIEW: new Permission('KNOWLEDGE:READ+RELATE_VIEW'), + KNOWLEDGE_BATCH_DELETE: new Permission('KNOWLEDGE:READ+BATCH_DELETE'), + KNOWLEDGE_BATCH_MOVE: new Permission('KNOWLEDGE:READ+BATCH_MOVE'), + + APPLICATION_BATCH_DELETE: new Permission('APPLICATION:READ+BATCH_DELETE'), + APPLICATION_BATCH_MOVE: new Permission('APPLICATION:READ+BATCH_MOVE'), + + TOOL_BATCH_DELETE: new Permission('TOOL:READ+BATCH_DELETE'), + TOOL_BATCH_MOVE: new Permission('TOOL:READ+BATCH_MOVE'), + KNOWLEDGE_WORKFLOW_READ: new Permission('KNOWLEDGE_WORKFLOW:READ'), KNOWLEDGE_WORKFLOW_EDIT: new Permission('KNOWLEDGE_WORKFLOW:READ+EDIT'), KNOWLEDGE_WORKFLOW_EXPORT: new Permission('KNOWLEDGE_WORKFLOW:READ+EXPORT'), diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 83b2672e2de..f06dde7784c 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -61,7 +61,7 @@ - + {{ $t('views.paragraph.setting.batchSelected') }} @@ -338,11 +338,12 @@ class="ml-16" :disabled="multipleSelection.length === 0" @click="openMoveToDialog()" + v-if="permissionPrecise.batchMove()" > {{ $t('common.moveTo') }} - + {{ $t('common.delete') }} diff --git a/ui/src/views/knowledge/component/KnowledgeListContainer.vue b/ui/src/views/knowledge/component/KnowledgeListContainer.vue index 6e432e03f5c..f9de38ac7a1 100644 --- a/ui/src/views/knowledge/component/KnowledgeListContainer.vue +++ b/ui/src/views/knowledge/component/KnowledgeListContainer.vue @@ -35,7 +35,7 @@ - + {{ $t('views.paragraph.setting.batchSelected') }} @@ -378,11 +378,16 @@ class="ml-16" :disabled="multipleSelection.length === 0" @click="openMoveToDialog()" + v-if="permissionPrecise.batchMove()" > {{ $t('common.moveTo') }} - + {{ $t('common.delete') }} diff --git a/ui/src/views/tool/component/ToolListContainer.vue b/ui/src/views/tool/component/ToolListContainer.vue index 14079b63e11..e81794c646a 100644 --- a/ui/src/views/tool/component/ToolListContainer.vue +++ b/ui/src/views/tool/component/ToolListContainer.vue @@ -34,7 +34,7 @@ - + {{ $t('views.paragraph.setting.batchSelected') }} @@ -422,11 +422,16 @@ class="ml-16" :disabled="multipleSelection.length === 0" @click="openMoveToDialog()" + v-if="permissionPrecise.batchMove()" > {{ $t('common.moveTo') }} - + {{ $t('common.delete') }}