feat: Knowledge problem permission

This commit is contained in:
zhangzhanwei 2025-06-24 15:40:18 +08:00 committed by zhanweizhang7
parent c253e8b696
commit 58a44b315e
3 changed files with 43 additions and 23 deletions

View File

@ -20,7 +20,10 @@ const share = {
doc_sync: () => false,
doc_delete: () => false,
doc_export: () => false,
problem_create: () => false,
problem_relate: () => false,
problem_delete: () => false,
}
export default share

View File

@ -173,6 +173,36 @@ const workspace = {
],
'OR',
),
problem_create: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
problem_relate: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
problem_delete: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
}
export default workspace

View File

@ -7,24 +7,18 @@
<div class="flex-between">
<div>
<el-button type="primary" @click="createProblem"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getKnowledgeWorkspaceResourcePermission(id),]">
v-if="permissionPrecise.problem_create(id)"
>
{{ $t('views.problem.createProblem') }}
</el-button>
<el-button @click="relateProblem()" :disabled="multipleSelection.length === 0"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getKnowledgeWorkspaceResourcePermission(id)]">
v-if="permissionPrecise.problem_relate(id)"
>
{{ $t('views.problem.relateParagraph.title') }}
</el-button>
<el-button @click="deleteMulDocument" :disabled="multipleSelection.length === 0"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getKnowledgeWorkspaceResourcePermission(id)]">
v-if="permissionPrecise.problem_delete(id)"
>
{{ $t('views.problem.setting.batchDelete') }}
</el-button>
</div>
@ -43,8 +37,7 @@
class="mt-16"
:data="problemData"
:pagination-config="paginationConfig"
:quick-create="permissionPrecise.doc_create(id)""
:quick-create="permissionPrecise.doc_create(id)"
:quickCreateName="$t('views.problem.quickCreateName')"
:quickCreatePlaceholder="$t('views.problem.quickCreateProblem')"
:quickCreateMaxlength="256"
@ -114,10 +107,7 @@
placement="top"
>
<el-button type="primary" text @click.stop="relateProblem(row)"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getKnowledgeWorkspaceResourcePermission(id)]">
v-if="permissionPrecise.problem_relate(id)" >
<el-icon><Connection /></el-icon>
</el-button>
</el-tooltip>
@ -125,10 +115,7 @@
<span>
<el-tooltip effect="dark" :content="$t('common.delete')" placement="top">
<el-button type="primary" text @click.stop="deleteProblem(row)"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getKnowledgeWorkspaceResourcePermission(id)]">
v-if="permissionPrecise.problem_delete(id)" >
<el-icon><Delete /></el-icon>
</el-button>
</el-tooltip>