feat: Application permission

This commit is contained in:
zhangzhanwei 2025-06-25 17:18:47 +08:00 committed by zhanweizhang7
parent a73e0b10f9
commit c3ee492176
15 changed files with 194 additions and 113 deletions

View File

@ -0,0 +1,5 @@
import workspace from './workspace'
const permission = {
workspace,
}
export default permission

View File

@ -0,0 +1,101 @@
import { hasPermission } from '@/utils/permission/index'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
const workspace = {
create: () =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_CREATE.getWorkspacePermission,
PermissionConst.APPLICATION_CREATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
edit: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_EDIT.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
export: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_EXPORT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_EXPORT.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
delete: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_DELETE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_DELETE.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
overview_embed: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_OVERVIEW_EMBEDDED.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_OVERVIEW_EMBEDDED.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
overview_access: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_OVERVIEW_ACCESS.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_OVERVIEW_ACCESS.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
)
,
overview_display: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_OVERVIEW_DISPLAY.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_OVERVIEW_DISPLAY.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
overview_api_key: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_OVERVIEW_API_KEY.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_OVERVIEW_API_KEY.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
access_edit: (source_id:string) =>
hasPermission(
[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_ACCESS_EDIT.getApplicationWorkspaceResourcePermission(source_id)
],
'OR'
),
}
export default workspace

View File

@ -1,9 +1,11 @@
import tool from '@/permission/tool' import tool from '@/permission/tool'
import model from '@/permission/model' import model from '@/permission/model'
import knowledge from '@/permission/knowledge' import knowledge from '@/permission/knowledge'
import application from '@/permission/application'
const permission = { const permission = {
tool, tool,
model, model,
knowledge, knowledge,
application,
} }
export default permission export default permission

View File

@ -19,10 +19,6 @@ const ApplicationDetailRouter = {
active: 'overview', active: 'overview',
parentPath: '/application/:id/:type', parentPath: '/application/:id/:type',
parentName: 'ApplicationDetail', parentName: 'ApplicationDetail',
permission: [
PermissionConst.APPLICATION_OVERVIEW_READ.getWorkspacePermission,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
],
}, },
component: () => import('@/views/application-overview/index.vue'), component: () => import('@/views/application-overview/index.vue'),
}, },
@ -53,18 +49,6 @@ const ApplicationDetailRouter = {
}, },
component: () => import('@/views/application/ApplicationAccess.vue'), component: () => import('@/views/application/ApplicationAccess.vue'),
}, },
{
path: 'hit-test',
name: 'AppHitTest',
meta: {
icon: 'app-hit-test',
title: 'views.application.hitTest.title',
active: 'hit-test',
parentPath: '/application/:id/:type',
parentName: 'ApplicationDetail',
},
component: () => import('@/views/hit-test/index.vue'),
},
{ {
path: 'chat-user', path: 'chat-user',
name: 'applicationChatUser', name: 'applicationChatUser',

View File

@ -7,6 +7,7 @@ const applicationRouter = {
menu: true, menu: true,
permission: [ permission: [
RoleConst.ADMIN, RoleConst.ADMIN,
RoleConst.USER,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_READ.getWorkspacePermissionWorkspaceManageRole, PermissionConst.APPLICATION_READ.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_READ.getWorkspacePermission, PermissionConst.APPLICATION_READ.getWorkspacePermission,

View File

@ -7,6 +7,7 @@ const ModelRouter = {
menu: true, menu: true,
permission: [ permission: [
RoleConst.ADMIN, RoleConst.ADMIN,
RoleConst.USER,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_READ.getWorkspacePermission, PermissionConst.KNOWLEDGE_READ.getWorkspacePermission,
PermissionConst.KNOWLEDGE_READ.getWorkspacePermissionWorkspaceManageRole, PermissionConst.KNOWLEDGE_READ.getWorkspacePermissionWorkspaceManageRole,

View File

@ -7,6 +7,7 @@ const ModelRouter = {
menu: true, menu: true,
permission: [ permission: [
RoleConst.ADMIN, RoleConst.ADMIN,
RoleConst.USER,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.MODEL_READ.getWorkspacePermission, PermissionConst.MODEL_READ.getWorkspacePermission,
PermissionConst.MODEL_READ.getWorkspacePermissionWorkspaceManageRole, PermissionConst.MODEL_READ.getWorkspacePermissionWorkspaceManageRole,

View File

@ -18,7 +18,14 @@ const systemRouter = {
activeMenu: '/system', activeMenu: '/system',
parentPath: '/system', parentPath: '/system',
parentName: 'system', parentName: 'system',
permission: [RoleConst.ADMIN, EditionConst.IS_EE], permission: [
new ComplexPermission(
[RoleConst.ADMIN,],
[PermissionConst.USER_READ],
[EditionConst.IS_EE],
'OR',
),
],
}, },
component: () => import('@/views/system/user-manage/index.vue'), component: () => import('@/views/system/user-manage/index.vue'),
}, },
@ -55,8 +62,8 @@ const systemRouter = {
parentName: 'system', parentName: 'system',
permission: [ permission: [
new ComplexPermission( new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.ADMIN], [RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
[PermissionConst.WORKSPACE_WORKSPACE_READ], [PermissionConst.WORKSPACE_WORKSPACE_READ.getWorkspacePermissionWorkspaceManageRole],
[EditionConst.IS_EE], [EditionConst.IS_EE],
'OR', 'OR',
), ),

View File

@ -7,6 +7,7 @@ const ModelRouter = {
menu: true, menu: true,
permission: [ permission: [
RoleConst.ADMIN, RoleConst.ADMIN,
RoleConst.USER,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_READ.getWorkspacePermission, PermissionConst.TOOL_READ.getWorkspacePermission,
PermissionConst.TOOL_READ.getWorkspacePermissionWorkspaceManageRole, PermissionConst.TOOL_READ.getWorkspacePermissionWorkspaceManageRole,

View File

@ -123,20 +123,20 @@ const PermissionConst = {
APPLICATION_TO_CHAT:new Permission('APPLICATION:READ+TO_CHAT'), APPLICATION_TO_CHAT:new Permission('APPLICATION:READ+TO_CHAT'),
APPLICATION_OVERVIEW_READ:new Permission('OVERVIEW:READ'), APPLICATION_OVERVIEW_READ:new Permission('APPLICATION_OVERVIEW:READ'),
APPLICATION_OVERVIEW_EMBEDDED:new Permission('OVERVIEW:READ'), APPLICATION_OVERVIEW_EMBEDDED:new Permission('APPLICATION_OVERVIEW:READ+EMBED'),
APPLICATION_OVERVIEW_ACCESS:new Permission('OVERVIEW:READ'), APPLICATION_OVERVIEW_ACCESS:new Permission('APPLICATION_OVERVIEW:READ+ACCESS'),
APPLICATION_OVERVIEW_DISPLAY:new Permission('OVERVIEW:READ'), APPLICATION_OVERVIEW_DISPLAY:new Permission('APPLICATION_OVERVIEW:READ+DISPLAY'),
APPLICATION_OVERVIEW_API_KEY:new Permission('OVERVIEW:READ'), APPLICATION_OVERVIEW_API_KEY:new Permission('APPLICATION_OVERVIEW:READ+API_KEY'),
APPLICATION_OVERVIEW_PUBLIC:new Permission('OVERVIEW:READ'), APPLICATION_OVERVIEW_PUBLIC:new Permission('APPLICATION_OVERVIEW:READ+PUBLIC_ACCESS'),
APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'), APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'),
APPLICATION_CHAT_LOG_ANNOTATION:new Permission('APPLICATION_CHAT_LOG:READ+ANNOTATION'), 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_EXPORT:new Permission('APPLICATION_CHAT_LOG:READ+EXPORT'),
APPLICATION_CHAT_LOG_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'), APPLICATION_CHAT_LOG_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'),
APPLICATION_ACCESS_READ:new Permission('APPLICATION_CHAT_LOG:READ'), APPLICATION_ACCESS_READ:new Permission('APPLICATION_ACCESS:READ'),
APPLICATION_ACCESS_EDIT:new Permission('APPLICATION_CHAT_LOG:READ+EDIT'), APPLICATION_ACCESS_EDIT:new Permission('APPLICATION_ACCESS:READ+EDIT'),
SHARED_TOOL_READ:new Permission('SYSTEM_TOOL:READ'), SHARED_TOOL_READ:new Permission('SYSTEM_TOOL:READ'),
SHARED_TOOL_CREATE:new Permission('SYSTEM_TOOL:READ+CREATE'), SHARED_TOOL_CREATE:new Permission('SYSTEM_TOOL:READ+CREATE'),

View File

@ -52,11 +52,6 @@
: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,
RoleConst.USER.getWorkspaceRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermission,
]"
/> />
</div> </div>
@ -98,11 +93,7 @@
<el-button <el-button
:disabled="!accessToken?.is_active" :disabled="!accessToken?.is_active"
@click="openDialog" @click="openDialog"
v-hasPermission="[ v-if="permissionPrecise.overview_embed(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.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') }}
@ -110,11 +101,7 @@
<!-- 访问限制 --> <!-- 访问限制 -->
<el-button <el-button
@click="openLimitDialog" @click="openLimitDialog"
v-hasPermission="[ v-if="permissionPrecise.overview_access(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.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') }}
@ -122,11 +109,7 @@
<!-- 显示设置 --> <!-- 显示设置 -->
<el-button <el-button
@click="openDisplaySettingDialog" @click="openDisplaySettingDialog"
v-hasPermission="[ v-if="permissionPrecise.overview_display(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.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') }}
@ -169,11 +152,7 @@
<div> <div>
<el-button <el-button
@click="openAPIKeyDialog" @click="openAPIKeyDialog"
v-hasPermission="[ v-if="permissionPrecise.overview_api_key(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.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
@ -251,10 +230,20 @@ 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, EditionConst } from '@/utils/permission/data' import { EditionConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index' import { hasPermission } from '@/utils/permission/index'
const { user, application } = useStore() import permissionMap from '@/permission'
const route = useRoute() const route = useRoute()
const apiType = computed<'workspace'>(() => {
return 'workspace'
})
const permissionPrecise = computed(() => {
return permissionMap['application'][apiType.value]
})
const { user, application } = useStore()
const { const {
params: { id }, params: { id },
} = route as any } = route as any

View File

@ -28,15 +28,11 @@
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, v-if="permissionPrecise.access_edit(id)"
RoleConst.USER.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, v-if="permissionPrecise.access_edit(id)"
RoleConst.USER.getWorkspaceRole,
PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermission]"
>{{ >{{
$t('views.application.applicationAccess.setting') $t('views.application.applicationAccess.setting')
}}</el-button> }}</el-button>
@ -50,14 +46,22 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted, computed } from 'vue'
import AccessSettingDrawer from './component/AccessSettingDrawer.vue' import AccessSettingDrawer from './component/AccessSettingDrawer.vue'
import applicationApi from '@/api/application/application' 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 permissionMap from '@/permission'
import { hasPermission } from '@/utils/permission/index'
const route = useRoute()
const apiType = computed<'workspace'>(() => {
return 'workspace'
})
const permissionPrecise = computed(() => {
return permissionMap['application'][apiType.value]
})
// //
const platforms = reactive([ const platforms = reactive([
@ -105,7 +109,6 @@ const platforms = reactive([
const AccessSettingDrawerRef = ref() const AccessSettingDrawerRef = ref()
const loading = ref(false) const loading = ref(false)
const route = useRoute()
const { const {
params: { id }, params: { id },
} = route as any } = route as any

View File

@ -8,11 +8,7 @@
type="primary" type="primary"
@click="submit(applicationFormRef)" @click="submit(applicationFormRef)"
:disabled="loading" :disabled="loading"
v-hasPermission="[ v-if="permissionPrecise.edit(id)"
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.APPLICATION_OVERVIEW_PUBLIC.getWorkspacePermission,
]"
> >
{{ $t('views.application.buttons.publish') }} {{ $t('views.application.buttons.publish') }}
</el-button> </el-button>
@ -432,7 +428,7 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted, computed } from 'vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { groupBy } from 'lodash' import { groupBy } from 'lodash'
import AIModeParamSettingDialog from './component/AIModeParamSettingDialog.vue' import AIModeParamSettingDialog from './component/AIModeParamSettingDialog.vue'
@ -450,10 +446,19 @@ 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 { 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 apiType = computed<'workspace'>(() => {
return 'workspace'
})
const permissionPrecise = computed(() => {
return permissionMap['application'][apiType.value]
})
const { knowledge, model, application } = useStore() const { knowledge, model, application } = useStore()
const route = useRoute()
const { const {
params: { id }, params: { id },
} = route as any } = route as any

View File

@ -43,16 +43,12 @@
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" /> <el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
</el-select> </el-select>
</div> </div>
<el-dropdown trigger="click"> <el-dropdown trigger="click"
v-if="permissionPrecise.create()"
>
<el-button <el-button
type="primary" type="primary"
class="ml-8" class="ml-8"
v-hasPermission="[
RoleConst.ADMIN,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermission,
]"
> >
{{ $t('common.create') }} {{ $t('common.create') }}
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
@ -234,16 +230,7 @@
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
@click.stop="settingApplication(item)" @click.stop="settingApplication(item)"
v-if=" v-if="permissionPrecise.edit(item.id)"
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermission,
],
'OR',
)
"
> >
<el-icon><Setting /></el-icon> <el-icon><Setting /></el-icon>
{{ $t('common.setting') }} {{ $t('common.setting') }}
@ -252,14 +239,7 @@
divided divided
@click.stop="exportApplication(item)" @click.stop="exportApplication(item)"
v-if=" v-if="
hasPermission( permissionPrecise.export(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.APPLICATION_EXPORT.getWorkspacePermission,
],
'OR',
)
" "
> >
<AppIcon iconName="app-export"></AppIcon> <AppIcon iconName="app-export"></AppIcon>
@ -270,14 +250,7 @@
icon="Delete" icon="Delete"
@click.stop="deleteApplication(item)" @click.stop="deleteApplication(item)"
v-if=" v-if="
hasPermission( permissionPrecise.delete(item.id)
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.APPLICATION_DELETE.getWorkspacePermission,
],
'OR',
)
" "
>{{ $t('common.delete') }}</el-dropdown-item >{{ $t('common.delete') }}</el-dropdown-item
> >
@ -309,14 +282,22 @@ import ApplicaitonApi from '@/api/application/application'
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message' import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
import useStore from '@/stores' import useStore from '@/stores'
import { t } from '@/locales' import { t } from '@/locales'
import { useRouter } from 'vue-router' import { useRouter, useRoute } 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'
import { FolderSource } from '@/enums/common' import { FolderSource } from '@/enums/common'
import permissionMap from '@/permission'
const router = useRouter() const router = useRouter()
const route = useRoute()
const apiType = computed<'workspace'>(() => {
return 'workspace'
})
const permissionPrecise = computed(() => {
return permissionMap['application'][apiType.value]
})
const { folder, application, user } = useStore() const { folder, application, user } = useStore()
const loading = ref(false) const loading = ref(false)