mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 10:02:46 +00:00
feat: Permission manage (#3283)
This commit is contained in:
parent
0d36704f63
commit
19e8e76386
|
|
@ -1,7 +1,8 @@
|
|||
import {defineStore} from 'pinia'
|
||||
import {type Ref} from 'vue'
|
||||
import loginApi from '@/api/user/login'
|
||||
import type {LoginRequest} from '@/api/type/login'
|
||||
import type { LoginRequest } from '@/api/type/login'
|
||||
|
||||
import useUserStore from '@/stores/modules/user'
|
||||
|
||||
const useLoginStore = defineStore('logi', {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,69 @@
|
|||
import { Permission, Role, Edition } from '@/utils/permission/type'
|
||||
// class Operate(Enum):
|
||||
// """
|
||||
// 一个权限组的操作权限
|
||||
// """
|
||||
// READ = 'READ'
|
||||
// EDIT = "READ+EDIT"
|
||||
// CREATE = "READ+CREATE"
|
||||
// DELETE = "READ+DELETE"
|
||||
// """
|
||||
// 使用权限
|
||||
// """
|
||||
// USE = "USE"
|
||||
// IMPORT = "READ+IMPORT"
|
||||
// EXPORT = "READ+EXPORT" # 导入导出
|
||||
// DEBUG = "READ+DEBUG" # 调试
|
||||
// SYNC = "READ+SYNC" # 同步
|
||||
// GENERATE = "READ+GENERATE" # 生成
|
||||
// ADD_MEMBER = "READ+ADD_MEMBER" # 添加成员
|
||||
// REMOVE_MEMBER = "READ+REMOVE_MEMBER" # 添加成员
|
||||
// VECTOR = "READ+VECTOR" # 向量化
|
||||
// MIGRATE = "READ+MIGRATE" # 迁移
|
||||
// RELATE = "READ+RELATE" # 关联
|
||||
// USER_GROUP = "READ+USER_GROUP" # 用户组
|
||||
// ANNOTATION = "READ+ANNOTATION" # 标注
|
||||
// CLEAR_POLICY = "READ+CLEAR_POLICY"
|
||||
const PermissionConst = {
|
||||
USER_READ: new Permission('USER:READ'),
|
||||
USER_CREATE: new Permission('USER:CREATE'),
|
||||
KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'),
|
||||
APPLICATION_OVERVIEW_READ: new Permission('APPLICATION_OVERVIEW_READ'),
|
||||
|
||||
KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'),
|
||||
KNOWLEDGE_CREATE: new Permission('KNOWLEDGE:READ+CREATE'),
|
||||
KNOWLEDGE_SYNC: new Permission('KNOWLEDGE:READ+SYNC'),
|
||||
KNOWLEDGE_VECTOR: new Permission('KNOWLEDGE:READ+VECTOR'),
|
||||
KNOWLEDGE_EDIT: new Permission('KNOWLEDGE:READ+EDIT'),
|
||||
KNOWLEDGE_EXPORT: new Permission('KNOWLEDGE:READ+EXPORT'),
|
||||
KNOWLEDGE_DELETE: new Permission('KNOWLEDGE:READ+DELETE'),
|
||||
|
||||
KNOWLEDGE_DOCUMENT_READ:new Permission('KNOWLEDGE_DOCUMENT:READ'),
|
||||
KNOWLEDGE_DOCUMENT_CREATE:new Permission('KNOWLEDGE_DOCUMENT:READ+CREATE'),
|
||||
KNOWLEDGE_DOCUMENT_EDIT:new Permission('KNOWLEDGE_DOCUMENT:READ+EDIT'),
|
||||
KNOWLEDGE_DOCUMENT_SYNC:new Permission('KNOWLEDGE_DOCUMENT:READ+SYNC'),
|
||||
KNOWLEDGE_DOCUMENT_MIGRATE:new Permission('KNOWLEDGE_DOCUMENT:READ+MIGRATE'),
|
||||
KNOWLEDGE_DOCUMENT_VECTOR:new Permission('KNOWLEDGE_DOCUMENT:READ+VECTOR'),
|
||||
KNOWLEDGE_DOCUMENT_GENERATE:new Permission('KNOWLEDGE_DOCUMENT:READ+GENERATE'),
|
||||
KNOWLEDGE_DOCUMENT_EXPORT:new Permission('KNOWLEDGE_DOCUMENT:READ+EXPORT'),
|
||||
|
||||
KNOWLEDGE_PROBLEM_READ:new Permission('KNOWLEDGE_PROBLEM:READ'),
|
||||
KNOWLEDGE_PROBLEM_CREATE:new Permission('KNOWLEDGE_PROBLEM:READ+CREATE'),
|
||||
KNOWLEDGE_PROBLEM_EDIT:new Permission('KNOWLEDGE_PROBLEM:READ+EDIT'),
|
||||
KNOWLEDGE_PROBLEM_RELATE:new Permission('KNOWLEDGE_PROBLEM:READ+RELATE'),
|
||||
KNOWLEDGE_PROBLEM_DELETE:new Permission('KNOWLEDGE_PROBLEM:READ+DELETE'),
|
||||
|
||||
MODEL_READ:new Permission('MODEL:READ'),
|
||||
MODEL_CREATE:new Permission('MODEL:READ+CREATE'),
|
||||
MODEL_EDIT:new Permission('MODEL:READ+EDIT'),
|
||||
MODEL_DELETE:new Permission('MODEL:READ+DELETE'),
|
||||
|
||||
|
||||
|
||||
|
||||
SYSTEM_API_KEY_EDIT:new Permission('OTHER: READ+EDIT')
|
||||
|
||||
|
||||
|
||||
}
|
||||
const RoleConst = {
|
||||
ADMIN: new Role('ADMIN'),
|
||||
|
|
|
|||
|
|
@ -10,23 +10,30 @@
|
|||
v-if="knowledgeDetail.type === 0"
|
||||
type="primary"
|
||||
@click="router.push({ path: '/knowledge/document/upload', query: { id: id } })"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermission]"
|
||||
>{{ $t('views.document.uploadDocument') }}
|
||||
</el-button>
|
||||
<el-button v-if="knowledgeDetail.type === 1" type="primary" @click="importDoc"
|
||||
>{{ $t('views.document.importDocument') }}
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermission]"
|
||||
>{{ $t('views.document.importDocument') }}
|
||||
</el-button>
|
||||
|
||||
<el-button @click="batchRefresh" :disabled="multipleSelection.length === 0">
|
||||
{{ $t('views.knowledge.setting.vectorization') }}
|
||||
<el-button @click="batchRefresh" :disabled="multipleSelection.length === 0"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission]"
|
||||
>{{ $t('views.knowledge.setting.vectorization') }}
|
||||
</el-button>
|
||||
<el-button @click="openGenerateDialog()" :disabled="multipleSelection.length === 0">
|
||||
{{ $t('views.document.generateQuestion.title') }}
|
||||
<el-button @click="openGenerateDialog()" :disabled="multipleSelection.length === 0"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermission]"
|
||||
>{{ $t('views.document.generateQuestion.title') }}
|
||||
</el-button>
|
||||
<el-button @click="openknowledgeDialog()" :disabled="multipleSelection.length === 0">
|
||||
{{ $t('views.document.setting.migration') }}
|
||||
<el-button @click="openknowledgeDialog()" :disabled="multipleSelection.length === 0"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermission]"
|
||||
>{{ $t('views.document.setting.migration') }}
|
||||
</el-button>
|
||||
<el-dropdown>
|
||||
<el-button class="ml-12 mr-12">
|
||||
<el-button class="ml-12 mr-12"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
<el-icon><MoreFilled /></el-icon>
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
|
|
@ -350,6 +357,7 @@
|
|||
text
|
||||
@click.stop="cancelTask(row, TaskType.EMBEDDING)"
|
||||
:title="$t('views.document.setting.cancelVectorization')"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission]"
|
||||
>
|
||||
<AppIcon iconName="app-close" style="font-size: 16px"></AppIcon>
|
||||
</el-button>
|
||||
|
|
@ -360,6 +368,7 @@
|
|||
text
|
||||
@click.stop="refreshDocument(row)"
|
||||
:title="$t('views.knowledge.setting.vectorization')"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission]"
|
||||
>
|
||||
<AppIcon iconName="app-document-refresh" style="font-size: 16px"></AppIcon>
|
||||
</el-button>
|
||||
|
|
@ -370,13 +379,16 @@
|
|||
text
|
||||
@click.stop="settingDoc(row)"
|
||||
:title="$t('common.setting')"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
<el-icon><Setting /></el-icon>
|
||||
</el-button>
|
||||
</span>
|
||||
<span @click.stop>
|
||||
<el-dropdown trigger="click">
|
||||
<el-button text type="primary">
|
||||
<el-button text type="primary"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
<el-icon><MoreFilled /></el-icon>
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
|
|
@ -387,8 +399,7 @@
|
|||
getTaskState(row.status, TaskType.GENERATE_PROBLEM),
|
||||
)
|
||||
"
|
||||
@click="cancelTask(row, TaskType.GENERATE_PROBLEM)"
|
||||
>
|
||||
@click="cancelTask(row, TaskType.GENERATE_PROBLEM)">
|
||||
<el-icon><Connection /></el-icon>
|
||||
{{ $t('views.document.setting.cancelGenerateQuestion') }}
|
||||
</el-dropdown-item>
|
||||
|
|
@ -408,9 +419,8 @@
|
|||
<AppIcon iconName="app-export"></AppIcon>
|
||||
{{ $t('views.document.setting.export') }} Zip
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)">{{
|
||||
$t('common.delete')
|
||||
}}</el-dropdown-item>
|
||||
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)">
|
||||
{{$t('common.delete')}}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
|
|
@ -423,6 +433,7 @@
|
|||
text
|
||||
@click.stop="syncDocument(row)"
|
||||
:title="$t('views.knowledge.setting.sync')"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_SYNC.getWorkspacePermission]"
|
||||
>
|
||||
<el-icon><Refresh /></el-icon>
|
||||
</el-button>
|
||||
|
|
@ -438,7 +449,8 @@
|
|||
text
|
||||
@click.stop="cancelTask(row, TaskType.EMBEDDING)"
|
||||
:title="$t('views.document.setting.cancelVectorization')"
|
||||
>
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission]"
|
||||
>
|
||||
<AppIcon iconName="app-close" style="font-size: 16px"></AppIcon>
|
||||
</el-button>
|
||||
|
||||
|
|
@ -448,19 +460,23 @@
|
|||
text
|
||||
@click.stop="refreshDocument(row)"
|
||||
:title="$t('views.knowledge.setting.vectorization')"
|
||||
>
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission]"
|
||||
>
|
||||
<AppIcon iconName="app-document-refresh" style="font-size: 16px"></AppIcon>
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
<span @click.stop>
|
||||
<el-dropdown trigger="click">
|
||||
<el-button text type="primary">
|
||||
<el-button text type="primary"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
<el-icon><MoreFilled /></el-icon>
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item icon="Setting" @click="settingDoc(row)">{{
|
||||
<el-dropdown-item icon="Setting" @click="settingDoc(row)"
|
||||
>{{
|
||||
$t('common.setting')
|
||||
}}</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
|
|
@ -474,25 +490,30 @@
|
|||
<el-icon><Connection /></el-icon>
|
||||
{{ $t('views.document.setting.cancelGenerateQuestion') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-else @click="openGenerateDialog(row)">
|
||||
<el-dropdown-item v-else @click="openGenerateDialog(row)"
|
||||
>
|
||||
<el-icon><Connection /></el-icon>
|
||||
{{ $t('views.document.generateQuestion.title') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click="openknowledgeDialog(row)">
|
||||
<AppIcon iconName="app-migrate"></AppIcon>
|
||||
{{ $t('views.document.setting.migration') }}</el-dropdown-item
|
||||
<el-dropdown-item @click="openknowledgeDialog(row)"
|
||||
>
|
||||
<AppIcon iconName="app-migrate"></AppIcon>
|
||||
{{ $t('views.document.setting.migration') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click="exportDocument(row)"
|
||||
>
|
||||
<el-dropdown-item @click="exportDocument(row)">
|
||||
<AppIcon iconName="app-export"></AppIcon>
|
||||
{{ $t('views.document.setting.export') }} Excel
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click="exportDocumentZip(row)">
|
||||
<el-dropdown-item @click="exportDocumentZip(row)"
|
||||
>
|
||||
<AppIcon iconName="app-export"></AppIcon>
|
||||
{{ $t('views.document.setting.export') }} Zip
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)">{{
|
||||
$t('common.delete')
|
||||
}}</el-dropdown-item>
|
||||
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)"
|
||||
>
|
||||
{{$t('common.delete')}}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
|
|
@ -505,10 +526,14 @@
|
|||
</div>
|
||||
</el-card>
|
||||
<div class="mul-operation w-full flex" v-if="multipleSelection.length !== 0">
|
||||
<el-button :disabled="multipleSelection.length === 0" @click="cancelTaskHandle(1, row)">
|
||||
<el-button :disabled="multipleSelection.length === 0" @click="cancelTaskHandle(1, row)"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_VECTOR.getWorkspacePermission]">
|
||||
{{ $t('views.document.setting.cancelVectorization') }}
|
||||
</el-button>
|
||||
<el-button :disabled="multipleSelection.length === 0" @click="cancelTaskHandle(2, row)">
|
||||
<el-button :disabled="multipleSelection.length === 0" @click="cancelTaskHandle(2, row)"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermission]"
|
||||
>
|
||||
|
||||
{{ $t('views.document.setting.cancelGenerate') }}
|
||||
</el-button>
|
||||
<el-text type="info" class="secondary ml-24">
|
||||
|
|
@ -547,6 +572,8 @@ import GenerateRelatedDialog from '@/components/generate-related-dialog/index.vu
|
|||
import EmbeddingContentDialog from '@/views/document/component/EmbeddingContentDialog.vue'
|
||||
import { TaskType, State } from '@/utils/status'
|
||||
import { t } from '@/locales'
|
||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||
import { hasPermission } from '@/utils/permission/index'
|
||||
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,9 @@
|
|||
</el-select>
|
||||
</div>
|
||||
<el-dropdown trigger="click">
|
||||
<el-button type="primary" class="ml-8">
|
||||
<el-button type="primary" class="ml-8"
|
||||
v-hasPermission="[RoleConst.ADMIN.getWorkspaceRole,PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission]"
|
||||
>
|
||||
{{ $t('common.create') }}
|
||||
<el-icon class="el-icon--right">
|
||||
<arrow-down />
|
||||
|
|
@ -215,7 +217,9 @@
|
|||
<template #mouseEnter>
|
||||
<div @click.stop>
|
||||
<el-dropdown trigger="click">
|
||||
<el-button text @click.stop>
|
||||
<el-button text @click.stop
|
||||
v-hasPermission="[RoleConst.ADMIN.getWorkspaceRole,PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
<el-icon>
|
||||
<MoreFilled />
|
||||
</el-icon>
|
||||
|
|
@ -293,6 +297,8 @@ import useStore from '@/stores'
|
|||
import { numberFormat } from '@/utils/common'
|
||||
import { t } from '@/locales'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||
import { hasPermission } from '@/utils/permission/index'
|
||||
|
||||
const router = useRouter()
|
||||
const { folder } = useStore()
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@
|
|||
:disabled="!is_permisstion"
|
||||
text
|
||||
@click.stop="openEditModel"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
{{ $t('common.modify') }}
|
||||
</el-dropdown-item>
|
||||
|
|
@ -93,6 +94,7 @@
|
|||
:disabled="!is_permisstion"
|
||||
icon="Setting"
|
||||
@click.stop="openParamSetting"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission]"
|
||||
>
|
||||
{{ $t('views.model.modelForm.title.paramSetting') }}
|
||||
</el-dropdown-item>
|
||||
|
|
@ -102,6 +104,7 @@
|
|||
:disabled="!is_permisstion"
|
||||
text
|
||||
@click.stop="deleteModel"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_DELETE.getWorkspacePermission]"
|
||||
>
|
||||
{{ $t('common.delete') }}
|
||||
</el-dropdown-item>
|
||||
|
|
@ -124,6 +127,9 @@ import {modelType} from '@/enums/model'
|
|||
import useStore from '@/stores'
|
||||
import ParamSettingDialog from './ParamSettingDialog.vue'
|
||||
import {t} from '@/locales'
|
||||
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
|
||||
import { hasPermission } from '@/utils/permission/index'
|
||||
import { ComplexPermission } from '@/utils/permission/type'
|
||||
|
||||
const props = defineProps<{
|
||||
model: Model
|
||||
|
|
|
|||
|
|
@ -55,9 +55,11 @@
|
|||
</template>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button class="ml-16" type="primary" @click="openCreateModel(active_provider)">
|
||||
{{ $t('views.model.addModel') }}</el-button
|
||||
<el-button class="ml-16" type="primary" @click="openCreateModel(active_provider)"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_CREATE.getWorkspacePermission]"
|
||||
>
|
||||
{{ $t('views.model.addModel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -116,6 +118,8 @@ import SharedWorkspace from '@/views/shared/model-shared/SharedWorkspace.vue'
|
|||
import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.vue'
|
||||
import useStore from '@/stores'
|
||||
import { t } from '@/locales'
|
||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||
import { hasPermission } from '@/utils/permission/index'
|
||||
|
||||
const { model } = useStore()
|
||||
|
||||
|
|
|
|||
|
|
@ -7,13 +7,16 @@
|
|||
<div class="flex-between">
|
||||
<div>
|
||||
<el-button type="primary" @click="createProblem"
|
||||
>{{ $t('views.problem.createProblem') }}
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission]">
|
||||
{{ $t('views.problem.createProblem') }}
|
||||
</el-button>
|
||||
<el-button @click="relateProblem()" :disabled="multipleSelection.length === 0"
|
||||
>{{ $t('views.problem.relateParagraph.title') }}
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getWorkspacePermission]">
|
||||
{{ $t('views.problem.relateParagraph.title') }}
|
||||
</el-button>
|
||||
<el-button @click="deleteMulDocument" :disabled="multipleSelection.length === 0"
|
||||
>{{ $t('views.problem.setting.batchDelete') }}
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getWorkspacePermission]">
|
||||
{{ $t('views.problem.setting.batchDelete') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
|
|
@ -99,14 +102,16 @@
|
|||
:content="$t('views.problem.relateParagraph.title')"
|
||||
placement="top"
|
||||
>
|
||||
<el-button type="primary" text @click.stop="relateProblem(row)">
|
||||
<el-button type="primary" text @click.stop="relateProblem(row)"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_RELATE.getWorkspacePermission]">
|
||||
<el-icon><Connection /></el-icon>
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<span>
|
||||
<el-tooltip effect="dark" :content="$t('common.delete')" placement="top">
|
||||
<el-button type="primary" text @click.stop="deleteProblem(row)">
|
||||
<el-button type="primary" text @click.stop="deleteProblem(row)"
|
||||
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_DELETE.getWorkspacePermission]">
|
||||
<el-icon><Delete /></el-icon>
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
|
|
@ -145,6 +150,8 @@ import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
|||
import type { Dict } from '@/api/type/common'
|
||||
import useStore from '@/stores'
|
||||
import { t } from '@/locales'
|
||||
import { PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||
import { hasPermission } from '@/utils/permission/index'
|
||||
|
||||
const route = useRoute()
|
||||
const {
|
||||
|
|
|
|||
Loading…
Reference in New Issue