feat: Knowledge permission list

This commit is contained in:
zhangzhanwei 2025-06-24 15:20:21 +08:00 committed by zhanweizhang7
parent 66bb8f605d
commit 69e60b5800
9 changed files with 317 additions and 258 deletions

View File

@ -6,21 +6,33 @@ const workspace = {
hasPermission( hasPermission(
new ComplexPermission( new ComplexPermission(
[RoleConst.ADMIN], [RoleConst.ADMIN],
[PermissionConst.SHARED_TOOL_READ], [PermissionConst.SHARED_KNOWLEDGE_READ],
[EditionConst.IS_EE], [EditionConst.IS_EE],
'OR', 'OR',
), ),
'OR', 'OR',
), ),
delete: () => create: () => false,
hasPermission( single: () => false,
[ sync: () => false,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, vector: () => false,
RoleConst.USER.getWorkspaceRole, generate: () => false,
PermissionConst.TOOL_DELETE.getWorkspacePermission, setting: () => false,
], export: () => false,
'OR', 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,
problem_create: () => false,
problem_relate: () => false,
problem_delete: () => false,
} }
export default workspace export default workspace

View File

@ -3,5 +3,24 @@ import { ComplexPermission } from '@/utils/permission/type'
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data' import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
const share = { const share = {
is_share: () => false, is_share: () => false,
create: () => false,
single: () => 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,
} }
export default share export default share

View File

@ -6,12 +6,173 @@ const workspace = {
hasPermission( hasPermission(
new ComplexPermission( new ComplexPermission(
[RoleConst.ADMIN], [RoleConst.ADMIN],
[PermissionConst.SHARED_TOOL_READ], [PermissionConst.SHARED_KNOWLEDGE_READ],
[EditionConst.IS_EE], [EditionConst.IS_EE],
'OR', 'OR',
), ),
'OR', 'OR',
), ),
create: () =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission,
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
single: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_READ.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_READ.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
sync: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
vector: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
generate: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_GENERATE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_GENERATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
setting: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_EDIT.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
export: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_EXPORT.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
delete: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DELETE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_create: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_vector: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_generate: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_migrate: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_edit: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_sync: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_delete: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_export: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EXPORT.getKnowledgeWorkspaceResourcePermission(source_id),
PermissionConst.KNOWLEDGE_DOCUMENT_EXPORT.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
} }
export default workspace export default workspace

View File

@ -19,12 +19,6 @@ const DocumentRouter = {
active: 'document', active: 'document',
parentPath: '/knowledge/:id/:folderId', parentPath: '/knowledge/:id/:folderId',
parentName: 'KnowledgeDetail', parentName: 'KnowledgeDetail',
permission: [
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermission,
PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole
],
}, },
component: () => import('@/views/document/index.vue'), component: () => import('@/views/document/index.vue'),
}, },
@ -38,12 +32,6 @@ const DocumentRouter = {
active: 'problem', active: 'problem',
parentPath: '/knowledge/:id/:folderId', parentPath: '/knowledge/:id/:folderId',
parentName: 'KnowledgeDetail', parentName: 'KnowledgeDetail',
permission: [
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermission,
PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole
],
}, },
component: () => import('@/views/problem/index.vue'), component: () => import('@/views/problem/index.vue'),
}, },
@ -70,12 +58,6 @@ const DocumentRouter = {
parentPath: '/knowledge/:id/:folderId', parentPath: '/knowledge/:id/:folderId',
parentName: 'KnowledgeDetail', parentName: 'KnowledgeDetail',
resourceType: ChatUserResourceEnum.KNOWLEDGE, resourceType: ChatUserResourceEnum.KNOWLEDGE,
permission: [
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.WORKSPACE_CHAT_USER_READ.getWorkspacePermission,
PermissionConst.WORKSPACE_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole
],
}, },
component: () => import('@/views/chat-user/index.vue'), component: () => import('@/views/chat-user/index.vue'),
}, },
@ -89,13 +71,6 @@ const DocumentRouter = {
active: 'setting', active: 'setting',
parentPath: '/knowledge/:id/:folderId', parentPath: '/knowledge/:id/:folderId',
parentName: 'KnowledgeDetail', parentName: 'KnowledgeDetail',
permission: [
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission,
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole
]
}, },
component: () => import('@/views/knowledge/KnowledgeSetting.vue'), component: () => import('@/views/knowledge/KnowledgeSetting.vue'),
}, },

View File

@ -89,6 +89,7 @@ const PermissionConst = {
KNOWLEDGE_EDIT: new Permission('KNOWLEDGE:READ+EDIT'), KNOWLEDGE_EDIT: new Permission('KNOWLEDGE:READ+EDIT'),
KNOWLEDGE_EXPORT: new Permission('KNOWLEDGE:READ+EXPORT'), KNOWLEDGE_EXPORT: new Permission('KNOWLEDGE:READ+EXPORT'),
KNOWLEDGE_DELETE: new Permission('KNOWLEDGE:READ+DELETE'), KNOWLEDGE_DELETE: new Permission('KNOWLEDGE:READ+DELETE'),
KNOWLEDGE_GENERATE: new Permission('KNOWLEDGE:READ+GENERATE'),
KNOWLEDGE_DOCUMENT_READ:new Permission('KNOWLEDGE_DOCUMENT:READ'), KNOWLEDGE_DOCUMENT_READ:new Permission('KNOWLEDGE_DOCUMENT:READ'),
KNOWLEDGE_DOCUMENT_CREATE:new Permission('KNOWLEDGE_DOCUMENT:READ+CREATE'), KNOWLEDGE_DOCUMENT_CREATE:new Permission('KNOWLEDGE_DOCUMENT:READ+CREATE'),

View File

@ -1,4 +1,5 @@
import useStore from '@/stores' import useStore from '@/stores'
import { useRoute } from 'vue-router'
export type PF = () => Role | string | Permission | ComplexPermission export type PF = () => Role | string | Permission | ComplexPermission
export type CRF = () => Role | string export type CRF = () => Role | string
export type CPF = () => Permission | string export type CPF = () => Permission | string
@ -69,6 +70,12 @@ export class Permission {
getKnowledgeWorkspaceResourcePermission = (resource_id: string) => { getKnowledgeWorkspaceResourcePermission = (resource_id: string) => {
return this.getWorkspaceResourcePermission('KNOWLEDGE', resource_id) return this.getWorkspaceResourcePermission('KNOWLEDGE', resource_id)
} }
getTest=()=>{
const route=useRoute()
debugger
console.log(route)
return ""
}
/** /**
* *
* @param resource_id id * @param resource_id id

View File

@ -7,73 +7,51 @@
<div class="flex-between"> <div class="flex-between">
<div> <div>
<el-button <el-button
v-if="knowledgeDetail.type === 0" v-if="knowledgeDetail.type === 0 &&
type="primary" permissionPrecise.doc_create(id)
"
type="danger"
@click=" @click="
router.push({ path: `/knowledge/document/upload/${folderId}`, query: { id: id } }) router.push({ path: `/knowledge/document/upload/${folderId}`, query: { id: id } })
" "
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(id),
]"
>{{ $t('views.document.uploadDocument') }} >{{ $t('views.document.uploadDocument') }}
</el-button> </el-button>
<el-button <el-button
v-if="knowledgeDetail.type === 1" v-if="knowledgeDetail.type === 1 &&
permissionPrecise.doc_create(id)
"
type="primary" type="primary"
@click="importDoc" @click="importDoc"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(id),
]"
>{{ $t('views.document.importDocument') }} >{{ $t('views.document.importDocument') }}
</el-button> </el-button>
<el-button <el-button
v-if="knowledgeDetail.type === 2" v-if="knowledgeDetail.type === 2 &&
permissionPrecise.doc_create(id)
"
type="primary" type="primary"
@click=" @click="
router.push({ router.push({
path: `/knowledge/import`, path: `/knowledge/import`,
query: { id: id, folder_token: knowledgeDetail.meta.folder_token }, query: { id: id, folder_token: knowledgeDetail.meta.folder_token },
})" })"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(id),
]"
>{{ $t('views.document.importDocument') }} >{{ $t('views.document.importDocument') }}
</el-button> </el-button>
<el-button <el-button
@click="batchRefresh" @click="batchRefresh"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-hasPermission="[ v-if="permissionPrecise.doc_vector(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getKnowledgeWorkspaceResourcePermission(id),
]"
>{{ $t('views.knowledge.setting.vectorization') }} >{{ $t('views.knowledge.setting.vectorization') }}
</el-button> </el-button>
<el-button <el-button
@click="openGenerateDialog()" @click="openGenerateDialog()"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-hasPermission="[ v-if="permissionPrecise.doc_generate(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getKnowledgeWorkspaceResourcePermission(id),
]"
>{{ $t('views.document.generateQuestion.title') }} >{{ $t('views.document.generateQuestion.title') }}
</el-button> </el-button>
<el-button <el-button
@click="openknowledgeDialog()" @click="openknowledgeDialog()"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-hasPermission="[ v-if="permissionPrecise.doc_migrate(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getKnowledgeWorkspaceResourcePermission(id),
]"
>{{ $t('views.document.setting.migration') }} >{{ $t('views.document.setting.migration') }}
</el-button> </el-button>
<el-dropdown> <el-dropdown>
@ -87,10 +65,7 @@
<el-dropdown-item <el-dropdown-item
@click="openBatchEditDocument" @click="openBatchEditDocument"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, v-if="permissionPrecise.doc_edit(id)"
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getKnowledgeWorkspaceResourcePermission(id)],'OR')"
> >
{{ $t('common.setting') }} {{ $t('common.setting') }}
</el-dropdown-item> </el-dropdown-item>
@ -98,11 +73,9 @@
divided divided
@click="syncMulDocument" @click="syncMulDocument"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-if="knowledgeDetail.type === 1 && v-if="
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, permissionPrecise.doc_sync(id)
RoleConst.ADMIN, "
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermission,
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getKnowledgeWorkspaceResourcePermission(id)],'OR')"
>{{ $t('views.document.syncDocument') }} >{{ $t('views.document.syncDocument') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
@ -110,10 +83,8 @@
@click="syncLarkMulDocument" @click="syncLarkMulDocument"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-if="knowledgeDetail.type === 2 && v-if="knowledgeDetail.type === 2 &&
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, permissionPrecise.doc_sync(id)
RoleConst.ADMIN, "
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermission,
PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getKnowledgeWorkspaceResourcePermission(id)],'OR')"
>{{ $t('views.document.syncDocument') }} >{{ $t('views.document.syncDocument') }}
</el-dropdown-item> </el-dropdown-item>
@ -122,10 +93,7 @@
@click="deleteMulDocument" @click="deleteMulDocument"
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
v-if=" v-if="
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, permissionPrecise.doc_delete(id)
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getWorkspacePermission,
PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getKnowledgeWorkspaceResourcePermission(id)],'OR')
" "
>{{ $t('common.delete') }} >{{ $t('common.delete') }}
</el-dropdown-item> </el-dropdown-item>
@ -148,10 +116,8 @@
class="mt-16" class="mt-16"
:data="documentData" :data="documentData"
:pagination-config="paginationConfig" :pagination-config="paginationConfig"
:quick-create="knowledgeDetail.type === 0&&hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, :quick-create="knowledgeDetail.type === 0 &&
RoleConst.USER.getWorkspaceRole, permissionPrecise.doc_create(id)"
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermission],'OR')"
@sizeChange="handleSizeChange" @sizeChange="handleSizeChange"
@changePage="getList" @changePage="getList"
@cell-mouse-enter="cellMouseEnter" @cell-mouse-enter="cellMouseEnter"
@ -395,6 +361,7 @@
size="small" size="small"
v-model="row.is_active" v-model="row.is_active"
:before-change="() => changeState(row)" :before-change="() => changeState(row)"
v-if="permissionPrecise.doc_edit(id)"
/> />
</span> </span>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
@ -412,10 +379,7 @@
text text
@click.stop="cancelTask(row, TaskType.EMBEDDING)" @click.stop="cancelTask(row, TaskType.EMBEDDING)"
:title="$t('views.document.setting.cancelVectorization')" :title="$t('views.document.setting.cancelVectorization')"
v-hasPermission="[ v-if="permissionPrecise.doc_vector(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission,
]"
> >
<AppIcon iconName="app-close" style="font-size: 16px"></AppIcon> <AppIcon iconName="app-close" style="font-size: 16px"></AppIcon>
</el-button> </el-button>
@ -426,10 +390,7 @@
text text
@click.stop="refreshDocument(row)" @click.stop="refreshDocument(row)"
:title="$t('views.knowledge.setting.vectorization')" :title="$t('views.knowledge.setting.vectorization')"
v-hasPermission="[ v-if="permissionPrecise.doc_vector(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission,
]"
> >
<AppIcon iconName="app-document-refresh" style="font-size: 16px"></AppIcon> <AppIcon iconName="app-document-refresh" style="font-size: 16px"></AppIcon>
</el-button> </el-button>
@ -440,10 +401,7 @@
text text
@click.stop="settingDoc(row)" @click.stop="settingDoc(row)"
:title="$t('common.setting')" :title="$t('common.setting')"
v-hasPermission="[ v-if="permissionPrecise.doc_edit(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission,
]"
> >
<el-icon><Setting /></el-icon> <el-icon><Setting /></el-icon>
</el-button> </el-button>
@ -453,10 +411,6 @@
<el-button <el-button
text text
type="primary" type="primary"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission,
]"
> >
<el-icon><MoreFilled /></el-icon> <el-icon><MoreFilled /></el-icon>
</el-button> </el-button>
@ -467,51 +421,38 @@
([State.STARTED, State.PENDING] as Array<string>).includes( ([State.STARTED, State.PENDING] as Array<string>).includes(
getTaskState(row.status, TaskType.GENERATE_PROBLEM), getTaskState(row.status, TaskType.GENERATE_PROBLEM),
)&& )&&
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, permissionPrecise.doc_generate(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')
"
@click="cancelTask(row, TaskType.GENERATE_PROBLEM)" @click="cancelTask(row, TaskType.GENERATE_PROBLEM)"
> >
<el-icon><Connection /></el-icon> <el-icon><Connection /></el-icon>
{{ $t('views.document.setting.cancelGenerateQuestion') }} {{ $t('views.document.setting.cancelGenerateQuestion') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-else @click="openGenerateDialog(row)" <el-dropdown-item v-else @click="openGenerateDialog(row)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, v-if="permissionPrecise.doc_generate(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')"
> >
<el-icon><Connection /></el-icon> <el-icon><Connection /></el-icon>
{{ $t('views.document.generateQuestion.title') }} {{ $t('views.document.generateQuestion.title') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="openknowledgeDialog(row)" <el-dropdown-item @click="openknowledgeDialog(row)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, v-if="permissionPrecise.doc_migrate(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermission],'OR')"
> >
<AppIcon iconName="app-migrate"></AppIcon> <AppIcon iconName="app-migrate"></AppIcon>
{{ $t('views.document.setting.migration') }} {{ $t('views.document.setting.migration') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="exportDocument(row)" <el-dropdown-item @click="exportDocument(row)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, v-if="permissionPrecise.doc_export(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EXPORT.getWorkspacePermission],'OR')"
> >
<AppIcon iconName="app-export"></AppIcon> <AppIcon iconName="app-export"></AppIcon>
{{ $t('views.document.setting.export') }} Excel {{ $t('views.document.setting.export') }} Excel
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="exportDocumentZip(row)" <el-dropdown-item @click="exportDocumentZip(row)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, v-if="permissionPrecise.doc_export(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EXPORT.getWorkspacePermission],'OR')"
> >
<AppIcon iconName="app-export"></AppIcon> <AppIcon iconName="app-export"></AppIcon>
{{ $t('views.document.setting.export') }} Zip {{ $t('views.document.setting.export') }} Zip
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)" <el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, v-if="permissionPrecise.doc_delete(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getWorkspacePermission],'OR')"
> >
{{ $t('common.delete') }}</el-dropdown-item {{ $t('common.delete') }}</el-dropdown-item
> >
@ -527,10 +468,7 @@
text text
@click.stop="syncDocument(row)" @click.stop="syncDocument(row)"
:title="$t('views.knowledge.setting.sync')" :title="$t('views.knowledge.setting.sync')"
v-hasPermission="[ v-if="permissionPrecise.sync(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_SYNC.getWorkspacePermission,
]"
> >
<el-icon><Refresh /></el-icon> <el-icon><Refresh /></el-icon>
</el-button> </el-button>
@ -540,16 +478,13 @@
v-if=" v-if="
([State.STARTED, State.PENDING] as Array<string>).includes( ([State.STARTED, State.PENDING] as Array<string>).includes(
getTaskState(row.status, TaskType.EMBEDDING), getTaskState(row.status, TaskType.EMBEDDING),
) ) &&
permissionPrecise.doc_vector(id)
" "
type="primary" type="primary"
text text
@click.stop="cancelTask(row, TaskType.EMBEDDING)" @click.stop="cancelTask(row, TaskType.EMBEDDING)"
:title="$t('views.document.setting.cancelVectorization')" :title="$t('views.document.setting.cancelVectorization')"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission,
]"
> >
<AppIcon iconName="app-close" style="font-size: 16px"></AppIcon> <AppIcon iconName="app-close" style="font-size: 16px"></AppIcon>
</el-button> </el-button>
@ -560,10 +495,7 @@
text text
@click.stop="refreshDocument(row)" @click.stop="refreshDocument(row)"
:title="$t('views.knowledge.setting.vectorization')" :title="$t('views.knowledge.setting.vectorization')"
v-hasPermission="[ v-if="permissionPrecise.vector(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission,
]"
> >
<AppIcon iconName="app-document-refresh" style="font-size: 16px"></AppIcon> <AppIcon iconName="app-document-refresh" style="font-size: 16px"></AppIcon>
</el-button> </el-button>
@ -574,10 +506,6 @@
<el-button <el-button
text text
type="primary" type="primary"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission,
]"
> >
<el-icon><MoreFilled /></el-icon> <el-icon><MoreFilled /></el-icon>
</el-button> </el-button>
@ -631,20 +559,14 @@
<el-button <el-button
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
@click="cancelTaskHandle(1)" @click="cancelTaskHandle(1)"
v-hasPermission="[ v-if="permissionPrecise.doc_vector(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission,
]"
> >
{{ $t('views.document.setting.cancelVectorization') }} {{ $t('views.document.setting.cancelVectorization') }}
</el-button> </el-button>
<el-button <el-button
:disabled="multipleSelection.length === 0" :disabled="multipleSelection.length === 0"
@click="cancelTaskHandle(2)" @click="cancelTaskHandle(2)"
v-hasPermission="[ v-if="permissionPrecise.doc_generate(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermission,
]"
> >
{{ $t('views.document.setting.cancelGenerate') }} {{ $t('views.document.setting.cancelGenerate') }}
</el-button> </el-button>
@ -686,9 +608,26 @@ import { TaskType, State } from '@/utils/status'
import { t } from '@/locales' import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index' import { hasPermission } from '@/utils/permission/index'
import permissionMap from '@/permission'
const route = useRoute()
const { folder, user } = useStore()
const type = computed(() => {
if (route.path.includes('shared')) {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else {
return 'workspace'
}
})
const permissionPrecise = computed(() => {
return permissionMap['knowledge'][type.value]
})
const router = useRouter() const router = useRouter()
const route = useRoute()
const { const {
params: { id, folderId }, // idknowledgeID params: { id, folderId }, // idknowledgeID
} = route as any } = route as any

View File

@ -8,7 +8,8 @@
:currentNodeKey="currentFolder?.id" :currentNodeKey="currentFolder?.id"
@handleNodeClick="folderClickHandel" @handleNodeClick="folderClickHandel"
class="p-8" class="p-8"
showShared :shareTitle="$t('views.system.share_knowledge')"
:showShared="permissionPrecise['is_share']()"
@refreshTree="refreshFolder" @refreshTree="refreshFolder"
/> />
</template> </template>
@ -48,13 +49,7 @@
<el-button <el-button
type="primary" type="primary"
class="ml-8" class="ml-8"
v-hasPermission="[ v-if="permissionPrecise.create()"
RoleConst.ADMIN,
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission,
]"
> >
{{ $t('common.create') }} {{ $t('common.create') }}
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
@ -198,15 +193,7 @@
@click=" @click="
router.push({ path: `/knowledge/${item.id}/${currentFolder.id}/document` }) router.push({ path: `/knowledge/${item.id}/${currentFolder.id}/document` })
" "
v-hasPermission="[ v-if="permissionPrecise.single(item.id)"
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DOCUMENT_READ
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DOCUMENT_READ.getKnowledgeWorkspaceResourcePermission(
item.id,
),
]"
> >
<template #icon> <template #icon>
<KnowledgeIcon :type="item.type" /> <KnowledgeIcon :type="item.type" />
@ -252,38 +239,15 @@
<el-dropdown-item <el-dropdown-item
icon="Refresh" icon="Refresh"
@click.stop="syncKnowledge(item)" @click.stop="syncKnowledge(item)"
v-if=" v-if="item.type === 1 &&
item.type === 1 && permissionPrecise.sync(item.id)
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_SYNC
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_SYNC.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
>{{ $t('views.knowledge.setting.sync') }} >{{ $t('views.knowledge.setting.sync') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
@click.stop="reEmbeddingKnowledge(item)" @click.stop="reEmbeddingKnowledge(item)"
v-if=" v-if="
hasPermission( permissionPrecise.vector(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_VECTOR
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_VECTOR.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
> >
<AppIcon iconName="app-vectorization"></AppIcon> <AppIcon iconName="app-vectorization"></AppIcon>
@ -294,18 +258,7 @@
icon="Connection" icon="Connection"
@click.stop="openGenerateDialog(item)" @click.stop="openGenerateDialog(item)"
v-if=" v-if="
hasPermission( permissionPrecise.doc_generate(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
>{{ $t('views.document.generateQuestion.title') }} >{{ $t('views.document.generateQuestion.title') }}
</el-dropdown-item> </el-dropdown-item>
@ -317,18 +270,7 @@
}) })
" "
v-if=" v-if="
hasPermission( permissionPrecise.setting(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_EDIT
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_EDIT.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
> >
{{ $t('common.setting') }} {{ $t('common.setting') }}
@ -336,18 +278,7 @@
<el-dropdown-item <el-dropdown-item
@click.stop="exportKnowledge(item)" @click.stop="exportKnowledge(item)"
v-if=" v-if="
hasPermission( permissionPrecise.export(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_EXPORT
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_EXPORT.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
> >
<AppIcon iconName="app-export"></AppIcon <AppIcon iconName="app-export"></AppIcon
@ -356,18 +287,7 @@
<el-dropdown-item <el-dropdown-item
@click.stop="exportZipKnowledge(item)" @click.stop="exportZipKnowledge(item)"
v-if=" v-if="
hasPermission( permissionPrecise.export(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_EXPORT
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_EXPORT.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
> >
<AppIcon iconName="app-export"></AppIcon <AppIcon iconName="app-export"></AppIcon
@ -378,18 +298,7 @@
type="danger" type="danger"
@click.stop="deleteKnowledge(item)" @click.stop="deleteKnowledge(item)"
v-if=" v-if="
hasPermission( permissionPrecise.delete(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.ADMIN,
PermissionConst.KNOWLEDGE_DELETE
.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.KNOWLEDGE_DELETE.getKnowledgeWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
" "
> >
{{ $t('common.delete') }}</el-dropdown-item {{ $t('common.delete') }}</el-dropdown-item
@ -433,9 +342,27 @@ import { FolderSource } from '@/enums/common'
import { PermissionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index' import { hasPermission } from '@/utils/permission/index'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api' import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import { useRoute } from 'vue-router'
import permissionMap from '@/permission'
const route = useRoute()
const { folder, user } = useStore()
const type = computed(() => {
if (route.path.includes('shared')) {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else {
return 'workspace'
}
})
const permissionPrecise = computed(() => {
return permissionMap['knowledge'][type.value]
})
const router = useRouter() const router = useRouter()
const { folder, user } = useStore()
const loading = ref(false) const loading = ref(false)

View File

@ -43,10 +43,12 @@
class="mt-16" class="mt-16"
:data="problemData" :data="problemData"
:pagination-config="paginationConfig" :pagination-config="paginationConfig"
quick-create :quick-create="permissionPrecise.doc_create(id)""
:quickCreateName="$t('views.problem.quickCreateName')" :quickCreateName="$t('views.problem.quickCreateName')"
:quickCreatePlaceholder="$t('views.problem.quickCreateProblem')" :quickCreatePlaceholder="$t('views.problem.quickCreateProblem')"
:quickCreateMaxlength="256" :quickCreateMaxlength="256"
@sizeChange="handleSizeChange" @sizeChange="handleSizeChange"
@changePage="getList" @changePage="getList"
@cell-mouse-enter="cellMouseEnter" @cell-mouse-enter="cellMouseEnter"
@ -167,8 +169,24 @@ import useStore from '@/stores'
import { t } from '@/locales' import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index' import { hasPermission } from '@/utils/permission/index'
import permissionMap from '@/permission'
const route = useRoute() const route = useRoute()
const { folder, user } = useStore()
const type = computed(() => {
if (route.path.includes('shared')) {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else {
return 'workspace'
}
})
const permissionPrecise = computed(() => {
return permissionMap['knowledge'][type.value]
})
const { const {
params: { id }, // id params: { id }, // id
} = route as any } = route as any