From 8048e73741d23cd159aa5626750394a2ba174bd0 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Wed, 18 Jun 2025 20:22:33 +0800 Subject: [PATCH] feat: Button Permission --- ui/src/router/modules/4model.ts | 2 +- ui/src/utils/permission/data.ts | 52 ++++++++++++++++++- ui/src/views/application-overview/index.vue | 19 +++++-- .../views/application/ApplicationAccess.vue | 7 ++- .../views/application/ApplicationSetting.vue | 6 ++- ui/src/views/application/index.vue | 14 +++-- ui/src/views/chat-log/index.vue | 19 +++++-- ui/src/views/knowledge/index.vue | 40 ++++++++------ ui/src/views/model/component/ModelCard.vue | 11 ++-- ui/src/views/tool/index.vue | 15 ++++-- 10 files changed, 144 insertions(+), 41 deletions(-) diff --git a/ui/src/router/modules/4model.ts b/ui/src/router/modules/4model.ts index 95fde26e2..3fac4a950 100644 --- a/ui/src/router/modules/4model.ts +++ b/ui/src/router/modules/4model.ts @@ -1,7 +1,7 @@ const ModelRouter = { path: '/model', name: 'model', - meta: { title: 'views.model.title', permission: 'MODEL:READ' }, + meta: { title: 'views.model.title' }, redirect: '/model', component: () => import('@/layout/layout-template/SimpleLayout.vue'), children: [ diff --git a/ui/src/utils/permission/data.ts b/ui/src/utils/permission/data.ts index 7da663c54..3040ba8c5 100644 --- a/ui/src/utils/permission/data.ts +++ b/ui/src/utils/permission/data.ts @@ -27,7 +27,6 @@ import { Permission, Role, Edition } from '@/utils/permission/type' const PermissionConst = { USER_READ: new Permission('USER:READ'), USER_CREATE: new Permission('USER:CREATE'), - APPLICATION_OVERVIEW_READ: new Permission('APPLICATION_OVERVIEW_READ'), KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'), KNOWLEDGE_CREATE: new Permission('KNOWLEDGE:READ+CREATE'), @@ -57,6 +56,57 @@ const PermissionConst = { MODEL_EDIT:new Permission('MODEL:READ+EDIT'), MODEL_DELETE:new Permission('MODEL:READ+DELETE'), + APPLICATION_READ:new Permission('APPLICATION:READ'), + APPLICATION_EXPORT:new Permission('APPLICATION:READ+EXPORT'), + APPLICATION_DELETE:new Permission('APPLICATION:READ+DELETE'), + APPLICATION_EDIT:new Permission('APPLICATION:READ+EDIT'), + + APPLICATION_OVERVIEW_READ:new Permission('OVERVIEW:READ'), + APPLICATION_OVERVIEW_EMBEDDED:new Permission('OVERVIEW:READ'), + APPLICATION_OVERVIEW_ACCESS:new Permission('OVERVIEW:READ'), + APPLICATION_OVERVIEW_DISPLAY:new Permission('OVERVIEW:READ'), + APPLICATION_OVERVIEW_API_KEY:new Permission('OVERVIEW:READ'), + APPLICATION_OVERVIEW_PUBLIC:new Permission('OVERVIEW:READ'), + + APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'), + APPLICATION_CHAT_LOG_ANNOTATION:new Permission('APPLICATION_CHAT_LOG:READ+ANNOTATION'), + APPLICATION_CHAT_LOG_EXPORT:new Permission('APPLICATION_CHAT_LOG:READ+EXPORT'), + APPLICATION_CHAT_LOG_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'), + + APPLICATION_ACCESS_READ:new Permission('APPLICATION_CHAT_LOG:READ'), + APPLICATION_ACCESS_EDIT:new Permission('APPLICATION_CHAT_LOG:READ+EDIT'), + + SHARED_TOOL_READ:new Permission('SYSTEM_TOOL:READ'), + SHARED_TOOL_CREATE:new Permission('SYSTEM_TOOL:READ+CREATE'), + SHARED_TOOL_EDIT:new Permission('SYSTEM_TOOL:READ+EDIT'), + SHARED_TOOL_DELETE:new Permission('SYSTEM_TOOL:READ+DELETE'), + SHARED_TOOL_IMPORT:new Permission('SYSTEM_TOOL:READ+IMPORT'), + SHARED_TOOL_EXPORT:new Permission('SYSTEM_TOOL:READ+EXPORT'), + SHARED_TOOL_DEBUG:new Permission('SYSTEM_TOOL:READ+DEBUG'), + + TOOL_CREATE:new Permission('TOOL:READ+CREATE'), + TOOL_EDIT:new Permission('TOOL:READ+EDIT'), + TOOL_READ:new Permission('TOOL:READ'), + TOOL_DELETE:new Permission('TOOL:READ+DELETE'), + TOOL_DEBUG:new Permission('TOOL:READ+DEBUG'), + TOOL_IMPORT:new Permission('TOOL:READ+IMPORT'), + TOOL_EXPORT:new Permission('TOOL:READ+EXPORT'), + + RESOURCE_TOOL_CREATE:new Permission('SYSTEM_RES_TOOL:READ+CREATE'), + RESOURCE_TOOL_EDIT:new Permission('SYSTEM_RES_TOOL:READ+EDIT'), + RESOURCE_TOOL_READ:new Permission('SYSTEM_RES_TOOL:READ'), + RESOURCE_TOOL_DELETE:new Permission('SYSTEM_RES_TOOL:READ+DELETE'), + RESOURCE_TOOL_DEBUG:new Permission('SYSTEM_RES_TOOL:READ+DEBUG'), + RESOURCE_TOOL_IMPORT:new Permission('SYSTEM_RES_TOOL:READ+IMPORT'), + RESOURCE_TOOL_EXPORT:new Permission('SYSTEM_RES_TOOL:READ+EXPORT'), + + WORKSPACE_ROLE_READ:new Permission('WORKSAPCE_ROLE:READ'), + WORKSPACE_ROLE_ADD_MEMBER:new Permission('WORKSAPCE_ROLE:READ+ADD_MEMBER'), + WORKSPACE_ROLE_REMOVE_MEMBER:new Permission('WORKSAPCE_ROLE:READ+REMOVE_MEMBER'), + + + + diff --git a/ui/src/views/application-overview/index.vue b/ui/src/views/application-overview/index.vue index ea54a5447..7740152fe 100644 --- a/ui/src/views/application-overview/index.vue +++ b/ui/src/views/application-overview/index.vue @@ -53,6 +53,7 @@ :active-text="$t('views.applicationOverview.appInfo.openText')" :inactive-text="$t('views.applicationOverview.appInfo.closeText')" :before-change="() => changeState(accessToken.is_active)" + v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission]" /> @@ -91,15 +92,21 @@ {{ $t('views.application.operation.toChat') }} - + {{ $t('views.applicationOverview.appInfo.embedInWebsite') }} - + {{ $t('views.applicationOverview.appInfo.accessControl') }} - + {{ $t('views.applicationOverview.appInfo.displaySetting') }} @@ -139,7 +146,9 @@
- + {{ $t('views.applicationOverview.appInfo.apiKey') }} @@ -215,6 +224,8 @@ import { copyClick } from '@/utils/clipboard' import { isAppIcon } from '@/utils/common' import useStore from '@/stores' import { t } from '@/locales' +import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' const { user, application } = useStore() const route = useRoute() const { diff --git a/ui/src/views/application/ApplicationAccess.vue b/ui/src/views/application/ApplicationAccess.vue index 94100700d..f6c9784f8 100644 --- a/ui/src/views/application/ApplicationAccess.vue +++ b/ui/src/views/application/ApplicationAccess.vue @@ -28,9 +28,12 @@ v-model="item.isActive" @change="changeStatus(item.key, item.isActive)" :disabled="!item.exists" + v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermission]" /> - {{ + {{ $t('views.application.applicationAccess.setting') }}
@@ -49,6 +52,8 @@ import applicationApi from '@/api/application/application' import { MsgSuccess } from '@/utils/message' import { useRoute } from 'vue-router' import { t } from '@/locales' +import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' // 平台数据 const platforms = reactive([ diff --git a/ui/src/views/application/ApplicationSetting.vue b/ui/src/views/application/ApplicationSetting.vue index dd55fdb53..cd4925f4e 100644 --- a/ui/src/views/application/ApplicationSetting.vue +++ b/ui/src/views/application/ApplicationSetting.vue @@ -4,7 +4,9 @@

{{ $t('common.setting') }}

- + {{ $t('views.application.buttons.publish') }} @@ -439,6 +441,8 @@ import useStore from '@/stores' import { t } from '@/locales' import TTSModeParamSettingDialog from './component/TTSModeParamSettingDialog.vue' import ReasoningParamSettingDialog from './component/ReasoningParamSettingDialog.vue' +import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' const { knowledge, model, application } = useStore() diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 8dd6cfbb4..4fad1217e 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -42,7 +42,8 @@ - + {{ $t('common.create') }} @@ -217,11 +218,15 @@ {{ $t('views.application.operation.toChat') }} - + {{ $t('common.setting') }} - + {{ $t('common.export') }} @@ -229,6 +234,7 @@ divided icon="Delete" @click.stop="deleteApplication(item)" + v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_DELETE.getWorkspacePermission],'OR')" >{{ $t('common.delete') }} @@ -262,6 +268,8 @@ import { t } from '@/locales' import { useRouter } from 'vue-router' import { isWorkFlow } from '@/utils/application' import { dateFormat } from '@/utils/time' +import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' const router = useRouter() const { folder, application, user } = useStore() diff --git a/ui/src/views/chat-log/index.vue b/ui/src/views/chat-log/index.vue index 157fcd97b..df414e8aa 100644 --- a/ui/src/views/chat-log/index.vue +++ b/ui/src/views/chat-log/index.vue @@ -38,12 +38,19 @@ clearable />
- {{ - $t('views.chatLog.buttons.clearStrategy') - }} - {{ $t('common.export') }} + + {{$t('views.chatLog.buttons.clearStrategy')}} + + + {{ $t('common.export') }} + {{ $t('views.chatLog.addToKnowledge') }} + v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission]" + >{{ $t('views.chatLog.addToKnowledge') }}
@@ -278,6 +285,8 @@ import type { Dict } from '@/api/type/common' import { t } from '@/locales' import type { FormInstance, FormRules } from 'element-plus' import { ElTable } from 'element-plus' +import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' const { application, chatLog, document, user } = useStore() const route = useRoute() diff --git a/ui/src/views/knowledge/index.vue b/ui/src/views/knowledge/index.vue index 284382d41..d6b102b35 100644 --- a/ui/src/views/knowledge/index.vue +++ b/ui/src/views/knowledge/index.vue @@ -227,10 +227,6 @@ @@ -241,10 +237,14 @@ {{ $t('views.knowledge.setting.sync') }} - + {{ $t('views.knowledge.setting.vectorization') }} @@ -252,28 +252,36 @@ {{ $t('views.document.generateQuestion.title') }} + v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')" + >{{ $t('views.document.generateQuestion.title') }} + - {{ $t('common.setting') }} + - {{ $t('views.document.setting.export') }} Excel{{ $t('views.document.setting.export') }} Excel + + - {{ $t('views.document.setting.export') }} ZIP - {{ - $t('common.delete') + + {{$t('common.delete') }} diff --git a/ui/src/views/model/component/ModelCard.vue b/ui/src/views/model/component/ModelCard.vue index 7d3bb9654..4a68ea7b7 100644 --- a/ui/src/views/model/component/ModelCard.vue +++ b/ui/src/views/model/component/ModelCard.vue @@ -75,11 +75,11 @@