From b6cf80d6ef557f8b493b5ab9143d09dfe4e8ba26 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Tue, 8 Jul 2025 15:54:55 +0800 Subject: [PATCH] fix: Workspace shared knowledge button visibility --- .../generate-related-dialog/index.vue | 2 +- ui/src/permission/knowledge/index.ts | 2 ++ ui/src/permission/knowledge/system-manage.ts | 4 +-- .../permission/knowledge/workspace-share.ts | 31 +++++++++++++++++++ ui/src/permission/model/system-manage.ts | 4 +-- ui/src/permission/tool/system-manage.ts | 4 +-- ui/src/utils/dynamics-api/shared-api.ts | 4 ++- ui/src/views/chat-user/index.vue | 6 ++-- ui/src/views/document/index.vue | 2 ++ ui/src/views/hit-test/index.vue | 1 + ui/src/views/knowledge/KnowledgeSetting.vue | 14 +++++---- ui/src/views/problem/index.vue | 4 ++- ui/src/views/tool/ToolFormDrawer.vue | 2 +- 13 files changed, 62 insertions(+), 18 deletions(-) create mode 100644 ui/src/permission/knowledge/workspace-share.ts diff --git a/ui/src/components/generate-related-dialog/index.vue b/ui/src/components/generate-related-dialog/index.vue index 6c7e87ad3..6a3f278b6 100644 --- a/ui/src/components/generate-related-dialog/index.vue +++ b/ui/src/components/generate-related-dialog/index.vue @@ -80,7 +80,7 @@ import type { FormInstance } from 'element-plus' import { loadSharedApi } from '@/utils/dynamics-api/shared-api' const props = defineProps<{ - apiType: 'systemShare' | 'workspace' | 'systemManage' + apiType: 'systemShare' | 'workspace' | 'systemManage' | 'workspaceShare' }>() const route = useRoute() diff --git a/ui/src/permission/knowledge/index.ts b/ui/src/permission/knowledge/index.ts index c83e9beb8..2a678d8ae 100644 --- a/ui/src/permission/knowledge/index.ts +++ b/ui/src/permission/knowledge/index.ts @@ -1,9 +1,11 @@ import systemShare from './system-share' import workspace from './workspace' import systemManage from './system-manage' +import workspaceShare from './workspace-share' const permission = { systemShare, workspace, systemManage, + workspaceShare } export default permission diff --git a/ui/src/permission/knowledge/system-manage.ts b/ui/src/permission/knowledge/system-manage.ts index ffeec63cb..848f67a0c 100644 --- a/ui/src/permission/knowledge/system-manage.ts +++ b/ui/src/permission/knowledge/system-manage.ts @@ -1,7 +1,7 @@ import { hasPermission } from '@/utils/permission/index' import { ComplexPermission } from '@/utils/permission/type' import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data' -const workspace = { +const systemManage = { is_share: () => hasPermission( new ComplexPermission( @@ -37,4 +37,4 @@ const workspace = { problem_delete: () => false, } -export default workspace +export default systemManage diff --git a/ui/src/permission/knowledge/workspace-share.ts b/ui/src/permission/knowledge/workspace-share.ts new file mode 100644 index 000000000..5d70c33d1 --- /dev/null +++ b/ui/src/permission/knowledge/workspace-share.ts @@ -0,0 +1,31 @@ +import { hasPermission } from '@/utils/permission/index' +import { ComplexPermission } from '@/utils/permission/type' +import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data' +const workspaceShare = { + is_share: () => true, + create: () => false, + sync: () => false, + vector: () => false, + generate: () => false, + setting: () => false, + export: () => false, + delete: () => false, + + doc_create: () => false, + doc_vector: () => false, + doc_generate: () => false, + doc_migrate: () => false, + doc_edit: () => false, + doc_sync: () => false, + doc_delete: () => false, + doc_export: () => false, + doc_download: () => false, + + knowledge_chat_user_edit: () => false, + + problem_create: () => false, + problem_relate: () => false, + problem_delete: () => false, +} + +export default workspaceShare \ No newline at end of file diff --git a/ui/src/permission/model/system-manage.ts b/ui/src/permission/model/system-manage.ts index 911cfebb6..076345511 100644 --- a/ui/src/permission/model/system-manage.ts +++ b/ui/src/permission/model/system-manage.ts @@ -1,7 +1,7 @@ import { hasPermission } from '@/utils/permission/index' import { ComplexPermission } from '@/utils/permission/type' import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data' -const workspace = { +const systemManage = { is_share: () => hasPermission( new ComplexPermission( @@ -18,4 +18,4 @@ const workspace = { delete: () => false, } -export default workspace +export default systemManage diff --git a/ui/src/permission/tool/system-manage.ts b/ui/src/permission/tool/system-manage.ts index 43396e6b1..0cddcbede 100644 --- a/ui/src/permission/tool/system-manage.ts +++ b/ui/src/permission/tool/system-manage.ts @@ -1,7 +1,7 @@ import { hasPermission } from '@/utils/permission/index' import { ComplexPermission } from '@/utils/permission/type' import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data' -const workspace = { +const systemManage = { is_share: () => hasPermission( new ComplexPermission( @@ -22,4 +22,4 @@ const workspace = { } -export default workspace +export default systemManage diff --git a/ui/src/utils/dynamics-api/shared-api.ts b/ui/src/utils/dynamics-api/shared-api.ts index e5aa458dd..6978e4a64 100644 --- a/ui/src/utils/dynamics-api/shared-api.ts +++ b/ui/src/utils/dynamics-api/shared-api.ts @@ -15,6 +15,7 @@ import problemSystemShareApi from '@/api/system-shared/problem' import chatUserSystemShareApi from '@/api/system-shared/chat-user' import workspaceApi from '@/api/workspace/workspace' import systemUserApi from '@/api/user/user' +import workspaceShare from '@/permission/knowledge/workspace-share' // 普通 API const workspaceApiMap = { @@ -51,6 +52,7 @@ const data = { systemShare: systemShareApiMap, workspace: workspaceApiMap, systemManage: systemManageApiMap, + workspaceShare: workspaceApiMap } /** 动态导入 API 模块的函数 * loadSharedApi('knowledge', true,'systemShare') @@ -62,7 +64,7 @@ export function loadSharedApi({ }: { type: string isShared?: boolean | undefined - systemType?: 'systemShare' | 'workspace' | 'systemManage' + systemType?: 'systemShare' | 'workspace' | 'systemManage' | 'workspaceShare' }) { if (isShared) { // 共享 API diff --git a/ui/src/views/chat-user/index.vue b/ui/src/views/chat-user/index.vue index 5b92d0d4c..1128a677b 100644 --- a/ui/src/views/chat-user/index.vue +++ b/ui/src/views/chat-user/index.vue @@ -56,7 +56,8 @@ :disabled="current?.is_auth" @click="handleSave" v-if=" - hasPermission( + route.path.includes('share/') ? false + : hasPermission( permissionObj[ route.path.includes('shared') ? 'SHAREDKNOWLEDGE' @@ -87,7 +88,8 @@
{{ $t('common.save') }} @@ -190,6 +185,8 @@ import BaseForm from '@/views/knowledge/component/BaseForm.vue' import { MsgSuccess, MsgConfirm } from '@/utils/message' import { t } from '@/locales' import { PermissionConst, RoleConst } from '@/utils/permission/data' +import permissionMap from '@/permission' + import { loadSharedApi } from '@/utils/dynamics-api/shared-api' const route = useRoute() @@ -206,6 +203,11 @@ const apiType = computed(() => { return 'workspace' } }) + +const permissionPrecise = computed(() => { + return permissionMap['knowledge'][apiType.value] +}) + const webFormRef = ref() const BaseFormRef = ref() const loading = ref(false) diff --git a/ui/src/views/problem/index.vue b/ui/src/views/problem/index.vue index a5a88b9c3..5e646014f 100644 --- a/ui/src/views/problem/index.vue +++ b/ui/src/views/problem/index.vue @@ -43,7 +43,7 @@ class="mt-16" :data="problemData" :pagination-config="paginationConfig" - :quick-create="permissionPrecise.doc_create(id)" + :quick-create="permissionPrecise.problem_create(id)" :quickCreateName="$t('views.problem.quickCreateName')" :quickCreatePlaceholder="$t('views.problem.quickCreateProblem')" :quickCreateMaxlength="256" @@ -178,6 +178,8 @@ const apiType = computed(() => { return 'systemShare' } else if (route.path.includes('resource-management')) { return 'systemManage' + } else if (route.path.includes('share/')) { + return 'workspaceShare' } else { return 'workspace' } diff --git a/ui/src/views/tool/ToolFormDrawer.vue b/ui/src/views/tool/ToolFormDrawer.vue index fce8816a9..3c04dc1ff 100644 --- a/ui/src/views/tool/ToolFormDrawer.vue +++ b/ui/src/views/tool/ToolFormDrawer.vue @@ -234,7 +234,7 @@ {{ $t('common.debug') }} - + {{ isEdit ? $t('common.save') : $t('common.create') }}