fix: 修复若干rbac问题, 修复任务名字显示中心不友好问题

This commit is contained in:
Aaron3S
2023-02-15 19:07:28 +08:00
committed by huailei
parent 1f95761d38
commit f039d13bd2
14 changed files with 68 additions and 33 deletions

View File

@@ -827,6 +827,9 @@
"Weekly": "Weekly" "Weekly": "Weekly"
}, },
"ops": { "ops": {
"StatusGreen": "Recently in good condition",
"StatusRed": "The last task execution failed",
"StatusYellow": "Recent Execution Failures",
"RunAgain": "Run again", "RunAgain": "Run again",
"ManualInput": "Manual input", "ManualInput": "Manual input",
"Execute": "Execute", "Execute": "Execute",

View File

@@ -826,6 +826,9 @@
"Weekly": "週ごと" "Weekly": "週ごと"
}, },
"ops": { "ops": {
"StatusGreen": "最近調子がいい\n",
"StatusRed": "最後のタスクの実行に失敗しました",
"StatusYellow": "最近の存在の実行に失敗しました",
"RunAgain": "再実行", "RunAgain": "再実行",
"ManualInput": "手動入力", "ManualInput": "手動入力",
"Execute": "実行", "Execute": "実行",

View File

@@ -822,6 +822,9 @@
"Weekly": "按周" "Weekly": "按周"
}, },
"ops": { "ops": {
"StatusGreen": "近期状态良好",
"StatusRed": "上一次任务执行失败",
"StatusYellow": "近期存在在执行失败",
"RunAgain": "再次执行", "RunAgain": "再次执行",
"AdhocUpdate": "更新命令", "AdhocUpdate": "更新命令",
"Add": "新增", "Add": "新增",

View File

@@ -124,7 +124,7 @@ export default [
name: 'AccountPushDetail', name: 'AccountPushDetail',
hidden: true, hidden: true,
meta: { meta: {
title: i18n.t('accounts.AccountPush.AccountPushList'), title: i18n.t('accounts.AccountChangeSecret.AccountChangeSecret'),
permissions: ['accounts.view_pushaccountautomation'] permissions: ['accounts.view_pushaccountautomation']
} }
}, },

View File

@@ -8,21 +8,27 @@ export default [
component: empty, component: empty,
meta: { meta: {
title: i18n.t('route.TaskList'), title: i18n.t('route.TaskList'),
permissions: ['ops.view_celerytask', 'ops.view_taskmonitor'] permissions: ['ops.view_celerytask | ops.view_taskmonitor']
}, },
children: [ children: [
{ {
path: '', path: '',
name: 'TaskList', name: 'TaskList',
component: () => import('@/views/tasks/TaskList'), component: () => import('@/views/tasks/TaskList'),
meta: { title: i18n.t('route.TaskList'), permissions: ['ops.view_celerytask'] } meta: {
title: i18n.t('route.TaskList'),
permissions: ['ops.view_celerytask']
}
}, },
{ {
path: ':id', path: ':id',
component: () => import('@/views/tasks/TaskDetail'), component: () => import('@/views/tasks/TaskDetail'),
name: 'TaskDetail', name: 'TaskDetail',
hidden: true, hidden: true,
meta: { title: i18n.t('route.TaskDetail'), permissions: ['ops.view_celerytask'] } meta: {
title: i18n.t('route.TaskDetail'),
permissions: ['ops.view_celerytask']
}
} }
] ]
}, },
@@ -30,6 +36,9 @@ export default [
path: `${BASE_URL}/core/flower/?_=${Date.now()}`, path: `${BASE_URL}/core/flower/?_=${Date.now()}`,
name: 'TaskMonitor', name: 'TaskMonitor',
// component: () => window.open(`/core/flower?_=${Date.now()}`), // component: () => window.open(`/core/flower?_=${Date.now()}`),
meta: { title: i18n.t('route.TaskMonitor'), permissions: ['ops.view_taskmonitor'] } meta: {
title: i18n.t('route.TaskMonitor'),
permissions: ['ops.view_taskmonitor']
}
} }
] ]

View File

@@ -86,7 +86,7 @@ export default {
meta: { meta: {
title: i18n.t('route.JobCenter'), title: i18n.t('route.JobCenter'),
icon: 'task-center', icon: 'task-center',
permissions: ['ops.view_job'], permissions: [],
hidden: () => { hidden: () => {
return !store.getters.publicSettings['SECURITY_COMMAND_EXECUTION'] return !store.getters.publicSettings['SECURITY_COMMAND_EXECUTION']
} }
@@ -98,7 +98,7 @@ export default {
component: () => import('@/views/ops/Job/QuickJob'), component: () => import('@/views/ops/Job/QuickJob'),
meta: { meta: {
title: i18n.t('ops.QuickJob'), title: i18n.t('ops.QuickJob'),
permissions: ['ops.view_job', 'ops.add_job'] permissions: ['ops.view_job', 'ops.add_job', 'ops.add_jobexecution']
} }
}, },
{ {
@@ -161,7 +161,7 @@ export default {
component: () => import('@/views/ops/Template'), component: () => import('@/views/ops/Template'),
meta: { meta: {
title: i18n.t('route.Template'), title: i18n.t('route.Template'),
permissions: ['ops.view_adhoc', 'ops.view_playbook'] permissions: ['ops.view_adhoc|ops.view_playbook']
} }
}, },
{ {

View File

@@ -53,11 +53,6 @@ export default {
} }
}, },
comment: { comment: {
on: {
change: (val) => {
console.log(val)
}
},
hidden: () => { hidden: () => {
return this.instantTask return this.instantTask
} }

View File

@@ -80,17 +80,16 @@ export default {
formatter: ActionsFormatter, formatter: ActionsFormatter,
formatterArgs: { formatterArgs: {
hasUpdate: true, hasUpdate: true,
canUpdate: true, canUpdate: this.$hasPerm('ops.change_job'),
updateRoute: 'JobUpdate', updateRoute: 'JobUpdate',
hasDelete: true, hasDelete: true,
canDelete: true, canDelete: this.$hasPerm('ops.delete_job'),
hasClone: false, hasClone: false,
extraActions: [ extraActions: [
{ {
title: this.$t('ops.Run'), title: this.$t('ops.Run'),
name: 'run', name: 'run',
type: 'running', can: this.$hasPerm('ops.add_jobexecution'),
can: true,
callback: ({ row }) => { callback: ({ row }) => {
const params = JSON.parse(row.parameters_define) const params = JSON.parse(row.parameters_define)
if (Object.keys(params).length > 0) { if (Object.keys(params).length > 0) {

View File

@@ -29,10 +29,10 @@ export default {
formatter: ActionsFormatter, formatter: ActionsFormatter,
formatterArgs: { formatterArgs: {
hasUpdate: true, hasUpdate: true,
canUpdate: true, canUpdate: this.$hasPerm('ops.change_adhoc'),
updateRoute: 'AdhocUpdate', updateRoute: 'AdhocUpdate',
hasDelete: true, hasDelete: true,
canDelete: true, canDelete: this.$hasPerm('ops.delete_adhoc'),
hasClone: false hasClone: false
} }
} }

View File

@@ -39,10 +39,10 @@ export default {
formatter: ActionsFormatter, formatter: ActionsFormatter,
formatterArgs: { formatterArgs: {
hasUpdate: true, hasUpdate: true,
canUpdate: true, canUpdate: this.$hasPerm('ops.change_playbook'),
updateRoute: 'PlaybookUpdate', updateRoute: 'PlaybookUpdate',
hasDelete: true, hasDelete: true,
canDelete: true, canDelete: this.$hasPerm('ops.delete_playbook'),
hasClone: false hasClone: false
} }
} }

View File

@@ -26,11 +26,13 @@ export default {
submenu: [ submenu: [
{ {
title: this.$t('ops.AdhocManage'), title: this.$t('ops.AdhocManage'),
name: 'Adhoc' name: 'Adhoc',
hidden: () => !this.$hasPerm('ops.view_adhoc')
}, },
{ {
title: this.$t('ops.PlaybookManage'), title: this.$t('ops.PlaybookManage'),
name: 'Playbook' name: 'Playbook',
hidden: () => !this.$hasPerm('ops.view_playbook')
} }
] ]
} }

View File

@@ -25,7 +25,7 @@ export default {
}, },
computed: { computed: {
cardTitle() { cardTitle() {
return this.object.name return this.object.meta.comment ? this.object.meta.comment : this.object.name
}, },
detailCardItems() { detailCardItems() {
return [ return [

View File

@@ -1,7 +1,13 @@
<template> <template>
<GenericDetailPage :object.sync="TaskDetail" :active-menu.sync="config.activeMenu" v-bind="config" v-on="$listeners"> <GenericDetailPage
:title="getTitle"
:object.sync="taskDetail"
:active-menu.sync="config.activeMenu"
v-bind="config"
v-on="$listeners"
>
<keep-alive> <keep-alive>
<component :is="config.activeMenu" :object="TaskDetail" /> <component :is="config.activeMenu" :object="taskDetail" />
</keep-alive> </keep-alive>
</GenericDetailPage> </GenericDetailPage>
</template> </template>
@@ -22,7 +28,7 @@ export default {
}, },
data() { data() {
return { return {
TaskDetail: {}, taskDetail: {},
config: { config: {
url: '/api/v1/ops/tasks', url: '/api/v1/ops/tasks',
activeMenu: 'TaskDetail', activeMenu: 'TaskDetail',
@@ -33,13 +39,19 @@ export default {
}, },
{ {
title: this.$t('ops.execution'), title: this.$t('ops.execution'),
name: 'TaskHistory' name: 'TaskHistory',
hidden: () => !this.$hasPerm('ops.view_celerytaskexecution')
} }
], ],
hasRightSide: false, hasRightSide: false,
hasActivity: false hasActivity: false
} }
} }
},
computed: {
getTitle() {
return this.taskDetail.meta && this.taskDetail.meta.comment ? this.taskDetail.meta.comment : this.taskDetail.name
}
} }
} }
</script> </script>

View File

@@ -4,6 +4,7 @@
<script type="text/jsx"> <script type="text/jsx">
import { GenericListPage } from '@/layout/components' import { GenericListPage } from '@/layout/components'
import { DetailFormatter } from '@/components/TableFormatters'
export default { export default {
components: { components: {
@@ -14,12 +15,20 @@ export default {
tableConfig: { tableConfig: {
url: '/api/v1/ops/tasks/', url: '/api/v1/ops/tasks/',
columns: [ columns: [
'name', 'queue', 'count', 'state', 'comment', 'date_last_publish' 'name', 'queue', 'count', 'state', 'date_last_publish'
], ],
columnsMeta: { columnsMeta: {
name: { name: {
formatter: DetailFormatter,
formatterArgs: { formatterArgs: {
can: true can: this.$hasPerm('ops.view_celerytask'),
router: 'TaskDetail',
getTitle({ col, row, cellValue }) {
if (row.meta && row.meta.comment) {
return row.meta.comment
}
return cellValue
}
} }
}, },
actions: { actions: {
@@ -63,11 +72,11 @@ export default {
formatter: (row) => { formatter: (row) => {
switch (row.state) { switch (row.state) {
case 'green': case 'green':
return <i Class='fa fa-circle-o text-primary'/> return <el-tooltip effect={'dark'} content={this.$tc('ops.StatusGreen')} placement={'bottom'}><i Class='fa fa-circle-o text-primary'/></el-tooltip>
case 'yellow': case 'yellow':
return <i Class='fa fa-circle-o text-warning'/> return <el-tooltip effect={'dark'} content={this.$tc('ops.StatusYellow')} placement={'bottom'}><i Class='fa fa-circle-o text-warning'/></el-tooltip>
case 'red': case 'red':
return <i Class='fa fa-circle-o text-danger'/> return <el-tooltip effect={'dark'} content={this.$tc('ops.StatusRed')} placement={'bottom'}><i Class='fa fa-circle-o text-danger'/></el-tooltip>
} }
} }
} }