mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-19 17:54:37 +00:00
fix: 修复若干rbac问题, 修复任务名字显示中心不友好问题
This commit is contained in:
@@ -827,6 +827,9 @@
|
||||
"Weekly": "Weekly"
|
||||
},
|
||||
"ops": {
|
||||
"StatusGreen": "Recently in good condition",
|
||||
"StatusRed": "The last task execution failed",
|
||||
"StatusYellow": "Recent Execution Failures",
|
||||
"RunAgain": "Run again",
|
||||
"ManualInput": "Manual input",
|
||||
"Execute": "Execute",
|
||||
|
@@ -826,6 +826,9 @@
|
||||
"Weekly": "週ごと"
|
||||
},
|
||||
"ops": {
|
||||
"StatusGreen": "最近調子がいい\n",
|
||||
"StatusRed": "最後のタスクの実行に失敗しました",
|
||||
"StatusYellow": "最近の存在の実行に失敗しました",
|
||||
"RunAgain": "再実行",
|
||||
"ManualInput": "手動入力",
|
||||
"Execute": "実行",
|
||||
|
@@ -822,6 +822,9 @@
|
||||
"Weekly": "按周"
|
||||
},
|
||||
"ops": {
|
||||
"StatusGreen": "近期状态良好",
|
||||
"StatusRed": "上一次任务执行失败",
|
||||
"StatusYellow": "近期存在在执行失败",
|
||||
"RunAgain": "再次执行",
|
||||
"AdhocUpdate": "更新命令",
|
||||
"Add": "新增",
|
||||
|
@@ -124,7 +124,7 @@ export default [
|
||||
name: 'AccountPushDetail',
|
||||
hidden: true,
|
||||
meta: {
|
||||
title: i18n.t('accounts.AccountPush.AccountPushList'),
|
||||
title: i18n.t('accounts.AccountChangeSecret.AccountChangeSecret'),
|
||||
permissions: ['accounts.view_pushaccountautomation']
|
||||
}
|
||||
},
|
||||
|
@@ -8,21 +8,27 @@ export default [
|
||||
component: empty,
|
||||
meta: {
|
||||
title: i18n.t('route.TaskList'),
|
||||
permissions: ['ops.view_celerytask', 'ops.view_taskmonitor']
|
||||
permissions: ['ops.view_celerytask | ops.view_taskmonitor']
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
name: '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',
|
||||
component: () => import('@/views/tasks/TaskDetail'),
|
||||
name: 'TaskDetail',
|
||||
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()}`,
|
||||
name: 'TaskMonitor',
|
||||
// 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']
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@@ -86,7 +86,7 @@ export default {
|
||||
meta: {
|
||||
title: i18n.t('route.JobCenter'),
|
||||
icon: 'task-center',
|
||||
permissions: ['ops.view_job'],
|
||||
permissions: [],
|
||||
hidden: () => {
|
||||
return !store.getters.publicSettings['SECURITY_COMMAND_EXECUTION']
|
||||
}
|
||||
@@ -98,7 +98,7 @@ export default {
|
||||
component: () => import('@/views/ops/Job/QuickJob'),
|
||||
meta: {
|
||||
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'),
|
||||
meta: {
|
||||
title: i18n.t('route.Template'),
|
||||
permissions: ['ops.view_adhoc', 'ops.view_playbook']
|
||||
permissions: ['ops.view_adhoc|ops.view_playbook']
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@@ -53,11 +53,6 @@ export default {
|
||||
}
|
||||
},
|
||||
comment: {
|
||||
on: {
|
||||
change: (val) => {
|
||||
console.log(val)
|
||||
}
|
||||
},
|
||||
hidden: () => {
|
||||
return this.instantTask
|
||||
}
|
||||
|
@@ -80,17 +80,16 @@ export default {
|
||||
formatter: ActionsFormatter,
|
||||
formatterArgs: {
|
||||
hasUpdate: true,
|
||||
canUpdate: true,
|
||||
canUpdate: this.$hasPerm('ops.change_job'),
|
||||
updateRoute: 'JobUpdate',
|
||||
hasDelete: true,
|
||||
canDelete: true,
|
||||
canDelete: this.$hasPerm('ops.delete_job'),
|
||||
hasClone: false,
|
||||
extraActions: [
|
||||
{
|
||||
title: this.$t('ops.Run'),
|
||||
name: 'run',
|
||||
type: 'running',
|
||||
can: true,
|
||||
can: this.$hasPerm('ops.add_jobexecution'),
|
||||
callback: ({ row }) => {
|
||||
const params = JSON.parse(row.parameters_define)
|
||||
if (Object.keys(params).length > 0) {
|
||||
|
@@ -29,10 +29,10 @@ export default {
|
||||
formatter: ActionsFormatter,
|
||||
formatterArgs: {
|
||||
hasUpdate: true,
|
||||
canUpdate: true,
|
||||
canUpdate: this.$hasPerm('ops.change_adhoc'),
|
||||
updateRoute: 'AdhocUpdate',
|
||||
hasDelete: true,
|
||||
canDelete: true,
|
||||
canDelete: this.$hasPerm('ops.delete_adhoc'),
|
||||
hasClone: false
|
||||
}
|
||||
}
|
||||
|
@@ -39,10 +39,10 @@ export default {
|
||||
formatter: ActionsFormatter,
|
||||
formatterArgs: {
|
||||
hasUpdate: true,
|
||||
canUpdate: true,
|
||||
canUpdate: this.$hasPerm('ops.change_playbook'),
|
||||
updateRoute: 'PlaybookUpdate',
|
||||
hasDelete: true,
|
||||
canDelete: true,
|
||||
canDelete: this.$hasPerm('ops.delete_playbook'),
|
||||
hasClone: false
|
||||
}
|
||||
}
|
||||
|
@@ -26,11 +26,13 @@ export default {
|
||||
submenu: [
|
||||
{
|
||||
title: this.$t('ops.AdhocManage'),
|
||||
name: 'Adhoc'
|
||||
name: 'Adhoc',
|
||||
hidden: () => !this.$hasPerm('ops.view_adhoc')
|
||||
},
|
||||
{
|
||||
title: this.$t('ops.PlaybookManage'),
|
||||
name: 'Playbook'
|
||||
name: 'Playbook',
|
||||
hidden: () => !this.$hasPerm('ops.view_playbook')
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@@ -25,7 +25,7 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
cardTitle() {
|
||||
return this.object.name
|
||||
return this.object.meta.comment ? this.object.meta.comment : this.object.name
|
||||
},
|
||||
detailCardItems() {
|
||||
return [
|
||||
|
@@ -1,7 +1,13 @@
|
||||
<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>
|
||||
<component :is="config.activeMenu" :object="TaskDetail" />
|
||||
<component :is="config.activeMenu" :object="taskDetail" />
|
||||
</keep-alive>
|
||||
</GenericDetailPage>
|
||||
</template>
|
||||
@@ -22,7 +28,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
TaskDetail: {},
|
||||
taskDetail: {},
|
||||
config: {
|
||||
url: '/api/v1/ops/tasks',
|
||||
activeMenu: 'TaskDetail',
|
||||
@@ -33,13 +39,19 @@ export default {
|
||||
},
|
||||
{
|
||||
title: this.$t('ops.execution'),
|
||||
name: 'TaskHistory'
|
||||
name: 'TaskHistory',
|
||||
hidden: () => !this.$hasPerm('ops.view_celerytaskexecution')
|
||||
}
|
||||
],
|
||||
hasRightSide: false,
|
||||
hasActivity: false
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
getTitle() {
|
||||
return this.taskDetail.meta && this.taskDetail.meta.comment ? this.taskDetail.meta.comment : this.taskDetail.name
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@@ -4,6 +4,7 @@
|
||||
|
||||
<script type="text/jsx">
|
||||
import { GenericListPage } from '@/layout/components'
|
||||
import { DetailFormatter } from '@/components/TableFormatters'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -14,12 +15,20 @@ export default {
|
||||
tableConfig: {
|
||||
url: '/api/v1/ops/tasks/',
|
||||
columns: [
|
||||
'name', 'queue', 'count', 'state', 'comment', 'date_last_publish'
|
||||
'name', 'queue', 'count', 'state', 'date_last_publish'
|
||||
],
|
||||
columnsMeta: {
|
||||
name: {
|
||||
formatter: DetailFormatter,
|
||||
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: {
|
||||
@@ -63,11 +72,11 @@ export default {
|
||||
formatter: (row) => {
|
||||
switch (row.state) {
|
||||
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':
|
||||
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':
|
||||
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>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user