feat: Button Permission

This commit is contained in:
zhangzhanwei 2025-06-18 20:22:33 +08:00 committed by zhanweizhang7
parent d9bd35e664
commit 8048e73741
10 changed files with 144 additions and 41 deletions

View File

@ -1,7 +1,7 @@
const ModelRouter = { const ModelRouter = {
path: '/model', path: '/model',
name: 'model', name: 'model',
meta: { title: 'views.model.title', permission: 'MODEL:READ' }, meta: { title: 'views.model.title' },
redirect: '/model', redirect: '/model',
component: () => import('@/layout/layout-template/SimpleLayout.vue'), component: () => import('@/layout/layout-template/SimpleLayout.vue'),
children: [ children: [

View File

@ -27,7 +27,6 @@ import { Permission, Role, Edition } from '@/utils/permission/type'
const PermissionConst = { const PermissionConst = {
USER_READ: new Permission('USER:READ'), USER_READ: new Permission('USER:READ'),
USER_CREATE: new Permission('USER:CREATE'), USER_CREATE: new Permission('USER:CREATE'),
APPLICATION_OVERVIEW_READ: new Permission('APPLICATION_OVERVIEW_READ'),
KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'), KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'),
KNOWLEDGE_CREATE: new Permission('KNOWLEDGE:READ+CREATE'), KNOWLEDGE_CREATE: new Permission('KNOWLEDGE:READ+CREATE'),
@ -57,6 +56,57 @@ const PermissionConst = {
MODEL_EDIT:new Permission('MODEL:READ+EDIT'), MODEL_EDIT:new Permission('MODEL:READ+EDIT'),
MODEL_DELETE:new Permission('MODEL:READ+DELETE'), 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'),

View File

@ -53,6 +53,7 @@
:active-text="$t('views.applicationOverview.appInfo.openText')" :active-text="$t('views.applicationOverview.appInfo.openText')"
:inactive-text="$t('views.applicationOverview.appInfo.closeText')" :inactive-text="$t('views.applicationOverview.appInfo.closeText')"
:before-change="() => changeState(accessToken.is_active)" :before-change="() => changeState(accessToken.is_active)"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission]"
/> />
</div> </div>
@ -91,15 +92,21 @@
<AppIcon iconName="app-create-chat" class="mr-4"></AppIcon> <AppIcon iconName="app-create-chat" class="mr-4"></AppIcon>
{{ $t('views.application.operation.toChat') }} {{ $t('views.application.operation.toChat') }}
</el-button> </el-button>
<el-button :disabled="!accessToken?.is_active" @click="openDialog"> <el-button :disabled="!accessToken?.is_active" @click="openDialog"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_EMBEDDED.getWorkspacePermission]"
>
<AppIcon iconName="app-export" class="mr-4"></AppIcon> <AppIcon iconName="app-export" class="mr-4"></AppIcon>
{{ $t('views.applicationOverview.appInfo.embedInWebsite') }} {{ $t('views.applicationOverview.appInfo.embedInWebsite') }}
</el-button> </el-button>
<el-button @click="openLimitDialog"> <el-button @click="openLimitDialog"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_ACCESS.getWorkspacePermission]"
>
<el-icon class="mr-4"><Lock /></el-icon> <el-icon class="mr-4"><Lock /></el-icon>
{{ $t('views.applicationOverview.appInfo.accessControl') }} {{ $t('views.applicationOverview.appInfo.accessControl') }}
</el-button> </el-button>
<el-button @click="openDisplaySettingDialog"> <el-button @click="openDisplaySettingDialog"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_DISPLAY.getWorkspacePermission]"
>
<el-icon class="mr-4"><Setting /></el-icon> <el-icon class="mr-4"><Setting /></el-icon>
{{ $t('views.applicationOverview.appInfo.displaySetting') }} {{ $t('views.applicationOverview.appInfo.displaySetting') }}
</el-button> </el-button>
@ -139,7 +146,9 @@
</div> </div>
</div> </div>
<div> <div>
<el-button @click="openAPIKeyDialog"> <el-button @click="openAPIKeyDialog"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_API_KEY.getWorkspacePermission]"
>
<el-icon class="mr-4"><Key /></el-icon> <el-icon class="mr-4"><Key /></el-icon>
{{ $t('views.applicationOverview.appInfo.apiKey') }}</el-button {{ $t('views.applicationOverview.appInfo.apiKey') }}</el-button
> >
@ -215,6 +224,8 @@ import { copyClick } from '@/utils/clipboard'
import { isAppIcon } from '@/utils/common' import { isAppIcon } from '@/utils/common'
import useStore from '@/stores' import useStore from '@/stores'
import { t } from '@/locales' import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
const { user, application } = useStore() const { user, application } = useStore()
const route = useRoute() const route = useRoute()
const { const {

View File

@ -28,9 +28,12 @@
v-model="item.isActive" v-model="item.isActive"
@change="changeStatus(item.key, item.isActive)" @change="changeStatus(item.key, item.isActive)"
:disabled="!item.exists" :disabled="!item.exists"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermission]"
/> />
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-button class="mr-4" @click="openDrawer(item.key)">{{ <el-button class="mr-4" @click="openDrawer(item.key)"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermission]"
>{{
$t('views.application.applicationAccess.setting') $t('views.application.applicationAccess.setting')
}}</el-button> }}</el-button>
</div> </div>
@ -49,6 +52,8 @@ import applicationApi from '@/api/application/application'
import { MsgSuccess } from '@/utils/message' import { MsgSuccess } from '@/utils/message'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { t } from '@/locales' import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
// //
const platforms = reactive([ const platforms = reactive([

View File

@ -4,7 +4,9 @@
<h3> <h3>
{{ $t('common.setting') }} {{ $t('common.setting') }}
</h3> </h3>
<el-button type="primary" @click="submit(applicationFormRef)" :disabled="loading"> <el-button type="primary" @click="submit(applicationFormRef)" :disabled="loading"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_PUBLIC.getWorkspacePermission]"
>
{{ $t('views.application.buttons.publish') }} {{ $t('views.application.buttons.publish') }}
</el-button> </el-button>
</div> </div>
@ -439,6 +441,8 @@ import useStore from '@/stores'
import { t } from '@/locales' import { t } from '@/locales'
import TTSModeParamSettingDialog from './component/TTSModeParamSettingDialog.vue' import TTSModeParamSettingDialog from './component/TTSModeParamSettingDialog.vue'
import ReasoningParamSettingDialog from './component/ReasoningParamSettingDialog.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() const { knowledge, model, application } = useStore()

View File

@ -42,7 +42,8 @@
</el-select> </el-select>
</div> </div>
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<el-button type="primary" class="ml-8"> <el-button type="primary" class="ml-8"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission]">
{{ $t('common.create') }} {{ $t('common.create') }}
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
<arrow-down /> <arrow-down />
@ -217,11 +218,15 @@
<AppIcon iconName="app-create-chat"></AppIcon> <AppIcon iconName="app-create-chat"></AppIcon>
{{ $t('views.application.operation.toChat') }} {{ $t('views.application.operation.toChat') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click.stop="settingApplication(item)"> <el-dropdown-item @click.stop="settingApplication(item)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission],'OR')"
>
<el-icon><Setting /></el-icon> <el-icon><Setting /></el-icon>
{{ $t('common.setting') }} {{ $t('common.setting') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided @click.stop="exportApplication(item)"> <el-dropdown-item divided @click.stop="exportApplication(item)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EXPORT.getWorkspacePermission],'OR')"
>
<AppIcon iconName="app-export"></AppIcon> <AppIcon iconName="app-export"></AppIcon>
{{ $t('common.export') }} {{ $t('common.export') }}
</el-dropdown-item> </el-dropdown-item>
@ -229,6 +234,7 @@
divided divided
icon="Delete" icon="Delete"
@click.stop="deleteApplication(item)" @click.stop="deleteApplication(item)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_DELETE.getWorkspacePermission],'OR')"
>{{ $t('common.delete') }}</el-dropdown-item >{{ $t('common.delete') }}</el-dropdown-item
> >
</el-dropdown-menu> </el-dropdown-menu>
@ -262,6 +268,8 @@ import { t } from '@/locales'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { isWorkFlow } from '@/utils/application' import { isWorkFlow } from '@/utils/application'
import { dateFormat } from '@/utils/time' import { dateFormat } from '@/utils/time'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
const router = useRouter() const router = useRouter()
const { folder, application, user } = useStore() const { folder, application, user } = useStore()

View File

@ -38,12 +38,19 @@
clearable clearable
/> />
<div style="display: flex; align-items: center" class="float-right"> <div style="display: flex; align-items: center" class="float-right">
<el-button @click="dialogVisible = true">{{ <el-button @click="dialogVisible = true"
$t('views.chatLog.buttons.clearStrategy') v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_POLICY.getWorkspacePermission]"
}}</el-button> >
<el-button @click="exportLog">{{ $t('common.export') }}</el-button> {{$t('views.chatLog.buttons.clearStrategy')}}
</el-button>
<el-button @click="exportLog"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission]"
>
{{ $t('common.export') }}
</el-button>
<el-button @click="openDocumentDialog" :disabled="multipleSelection.length === 0" <el-button @click="openDocumentDialog" :disabled="multipleSelection.length === 0"
>{{ $t('views.chatLog.addToKnowledge') }} v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission]"
>{{ $t('views.chatLog.addToKnowledge') }}
</el-button> </el-button>
</div> </div>
</div> </div>
@ -278,6 +285,8 @@ import type { Dict } from '@/api/type/common'
import { t } from '@/locales' import { t } from '@/locales'
import type { FormInstance, FormRules } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus'
import { ElTable } 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 { application, chatLog, document, user } = useStore()
const route = useRoute() const route = useRoute()

View File

@ -227,10 +227,6 @@
<el-button <el-button
text text
@click.stop @click.stop
v-hasPermission="[
RoleConst.ADMIN.getWorkspaceRole,
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission,
]"
> >
<el-icon> <el-icon>
<MoreFilled /> <MoreFilled />
@ -241,10 +237,14 @@
<el-dropdown-item <el-dropdown-item
icon="Refresh" icon="Refresh"
@click.stop="syncKnowledge(item)" @click.stop="syncKnowledge(item)"
v-if="item.type === 1" v-if="item.type === 1 ||
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_SYNC.getWorkspacePermission],'OR')
"
>{{ $t('views.knowledge.setting.sync') }} >{{ $t('views.knowledge.setting.sync') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click.stop="reEmbeddingKnowledge(item)"> <el-dropdown-item @click.stop="reEmbeddingKnowledge(item)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_VECTOR.getWorkspacePermission],'OR')"
>
<AppIcon iconName="app-vectorization"></AppIcon> <AppIcon iconName="app-vectorization"></AppIcon>
{{ $t('views.knowledge.setting.vectorization') }} {{ $t('views.knowledge.setting.vectorization') }}
</el-dropdown-item> </el-dropdown-item>
@ -252,28 +252,36 @@
<el-dropdown-item <el-dropdown-item
icon="Connection" icon="Connection"
@click.stop="openGenerateDialog(item)" @click.stop="openGenerateDialog(item)"
>{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')"
> >{{ $t('views.document.generateQuestion.title') }}
</el-dropdown-item>
<el-dropdown-item <el-dropdown-item
icon="Setting" icon="Setting"
@click.stop=" @click.stop="
router.push({ router.push({
path: `/knowledge/${item.id}/${currentFolder.value}/setting`, path: `/knowledge/${item.id}/${currentFolder.value}/setting`,
}) })"
" v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission],'OR')"
> >
{{ $t('common.setting') }}</el-dropdown-item {{ $t('common.setting') }}
</el-dropdown-item
>
<el-dropdown-item @click.stop="exportKnowledge(item)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermission],'OR')"
> >
<el-dropdown-item @click.stop="exportKnowledge(item)">
<AppIcon iconName="app-export"></AppIcon <AppIcon iconName="app-export"></AppIcon
>{{ $t('views.document.setting.export') }} Excel</el-dropdown-item >{{ $t('views.document.setting.export') }} Excel
</el-dropdown-item>
<el-dropdown-item @click.stop="exportZipKnowledge(item)"
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermission],'OR')"
> >
<el-dropdown-item @click.stop="exportZipKnowledge(item)">
<AppIcon iconName="app-export"></AppIcon <AppIcon iconName="app-export"></AppIcon
>{{ $t('views.document.setting.export') }} ZIP</el-dropdown-item >{{ $t('views.document.setting.export') }} ZIP</el-dropdown-item
> >
<el-dropdown-item icon="Delete" @click.stop="deleteKnowledge(item)">{{ <el-dropdown-item icon="Delete" @click.stop="deleteKnowledge(item)"
$t('common.delete') v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermission],'OR')"
>
{{$t('common.delete')
}}</el-dropdown-item> }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>

View File

@ -75,11 +75,11 @@
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item <el-dropdown-item
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission],'OR')"
icon="EditPen" icon="EditPen"
:disabled="!is_permisstion" :disabled="!is_permisstion"
text text
@click.stop="openEditModel" @click.stop="openEditModel"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission]"
> >
{{ $t('common.modify') }} {{ $t('common.modify') }}
</el-dropdown-item> </el-dropdown-item>
@ -89,12 +89,12 @@
currentModel.model_type === 'TTS' || currentModel.model_type === 'TTS' ||
currentModel.model_type === 'LLM' || currentModel.model_type === 'LLM' ||
currentModel.model_type === 'IMAGE' || currentModel.model_type === 'IMAGE' ||
currentModel.model_type === 'TTI' currentModel.model_type === 'TTI' ||
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission],'OR')
" "
:disabled="!is_permisstion" :disabled="!is_permisstion"
icon="Setting" icon="Setting"
@click.stop="openParamSetting" @click.stop="openParamSetting"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission]"
> >
{{ $t('views.model.modelForm.title.paramSetting') }} {{ $t('views.model.modelForm.title.paramSetting') }}
</el-dropdown-item> </el-dropdown-item>
@ -104,7 +104,7 @@
:disabled="!is_permisstion" :disabled="!is_permisstion"
text text
@click.stop="deleteModel" @click.stop="deleteModel"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_DELETE.getWorkspacePermission]" v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_DELETE.getWorkspacePermission],'OR')"
> >
{{ $t('common.delete') }} {{ $t('common.delete') }}
</el-dropdown-item> </el-dropdown-item>
@ -127,7 +127,8 @@ import {modelType} from '@/enums/model'
import useStore from '@/stores' import useStore from '@/stores'
import ParamSettingDialog from './ParamSettingDialog.vue' import ParamSettingDialog from './ParamSettingDialog.vue'
import {t} from '@/locales' import {t} from '@/locales'
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission'
const props = defineProps<{ const props = defineProps<{
model: Model model: Model

View File

@ -45,7 +45,9 @@
</el-select> </el-select>
</div> </div>
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<el-button type="primary" class="ml-8"> <el-button type="primary" class="ml-8"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.TOOL_CREATE.getWorkspacePermission]"
>
{{ $t('common.create') }} {{ $t('common.create') }}
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
<arrow-down /> <arrow-down />
@ -175,6 +177,7 @@
:before-change="() => changeState(item)" :before-change="() => changeState(item)"
size="small" size="small"
class="mr-4" class="mr-4"
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.TOOL_EDIT.getWorkspacePermission]"
/> />
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-dropdown trigger="click"> <el-dropdown trigger="click">
@ -186,7 +189,7 @@
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item <el-dropdown-item
v-if="!item.template_id" v-if="!item.template_id&&hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.TOOL_EDIT.getWorkspacePermission],'OR')"
:disabled="!canEdit(item)" :disabled="!canEdit(item)"
@click.stop="openCreateDialog(item)" @click.stop="openCreateDialog(item)"
> >
@ -197,7 +200,7 @@
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
:disabled="!canEdit(item)" :disabled="!canEdit(item)"
v-if="!item.template_id" v-if="!item.template_id&&hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.TOOL_EXPORT.getWorkspacePermission],'OR')"
@click.stop="copyTool(item)" @click.stop="copyTool(item)"
> >
<AppIcon iconName="app-copy"></AppIcon> <AppIcon iconName="app-copy"></AppIcon>
@ -212,7 +215,7 @@
{{ $t('common.param.initParam') }} {{ $t('common.param.initParam') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
v-if="!item.template_id" v-if="!item.template_id&&hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.TOOL_EXPORT.getWorkspacePermission],'OR')"
:disabled="!canEdit(item)" :disabled="!canEdit(item)"
@click.stop="exportTool(item)" @click.stop="exportTool(item)"
> >
@ -220,6 +223,7 @@
{{ $t('common.export') }} {{ $t('common.export') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.TOOL_DELETE.getWorkspacePermission],'OR')"
:disabled="!canEdit(item)" :disabled="!canEdit(item)"
divided divided
@click.stop="deleteTool(item)" @click.stop="deleteTool(item)"
@ -257,6 +261,9 @@ import { t } from '@/locales'
import { isAppIcon } from '@/utils/common' import { isAppIcon } from '@/utils/common'
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message' import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
import SharedWorkspace from '@/views/shared/tool-shared/SharedWorkspace.vue' import SharedWorkspace from '@/views/shared/tool-shared/SharedWorkspace.vue'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
const { folder, user } = useStore() const { folder, user } = useStore()