diff --git a/src/i18n/langs/en.json b/src/i18n/langs/en.json
index ecf1e2cd1..ec756661e 100644
--- a/src/i18n/langs/en.json
+++ b/src/i18n/langs/en.json
@@ -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",
diff --git a/src/i18n/langs/ja.json b/src/i18n/langs/ja.json
index c586123db..6747b3877 100644
--- a/src/i18n/langs/ja.json
+++ b/src/i18n/langs/ja.json
@@ -826,6 +826,9 @@
"Weekly": "週ごと"
},
"ops": {
+ "StatusGreen": "最近調子がいい\n",
+ "StatusRed": "最後のタスクの実行に失敗しました",
+ "StatusYellow": "最近の存在の実行に失敗しました",
"RunAgain": "再実行",
"ManualInput": "手動入力",
"Execute": "実行",
diff --git a/src/i18n/langs/zh.json b/src/i18n/langs/zh.json
index f574c4e04..c2f514c88 100644
--- a/src/i18n/langs/zh.json
+++ b/src/i18n/langs/zh.json
@@ -822,6 +822,9 @@
"Weekly": "按周"
},
"ops": {
+ "StatusGreen": "近期状态良好",
+ "StatusRed": "上一次任务执行失败",
+ "StatusYellow": "近期存在在执行失败",
"RunAgain": "再次执行",
"AdhocUpdate": "更新命令",
"Add": "新增",
diff --git a/src/router/console/accounts.js b/src/router/console/accounts.js
index 9f23554bf..feb27701c 100644
--- a/src/router/console/accounts.js
+++ b/src/router/console/accounts.js
@@ -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']
}
},
diff --git a/src/router/console/tasks.js b/src/router/console/tasks.js
index d8f9d1508..a8c4abb71 100644
--- a/src/router/console/tasks.js
+++ b/src/router/console/tasks.js
@@ -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']
+ }
}
]
diff --git a/src/router/workbench/index.js b/src/router/workbench/index.js
index f88ba01a9..cdd584533 100644
--- a/src/router/workbench/index.js
+++ b/src/router/workbench/index.js
@@ -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']
}
},
{
diff --git a/src/views/ops/Job/JobUpdateCreate.vue b/src/views/ops/Job/JobUpdateCreate.vue
index 350e0f6dd..2e9aa7032 100644
--- a/src/views/ops/Job/JobUpdateCreate.vue
+++ b/src/views/ops/Job/JobUpdateCreate.vue
@@ -53,11 +53,6 @@ export default {
}
},
comment: {
- on: {
- change: (val) => {
- console.log(val)
- }
- },
hidden: () => {
return this.instantTask
}
diff --git a/src/views/ops/Job/index.vue b/src/views/ops/Job/index.vue
index b28033ddf..4450689f9 100644
--- a/src/views/ops/Job/index.vue
+++ b/src/views/ops/Job/index.vue
@@ -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) {
diff --git a/src/views/ops/Template/Adhoc.vue b/src/views/ops/Template/Adhoc.vue
index abf56c3ba..381bfb6b7 100644
--- a/src/views/ops/Template/Adhoc.vue
+++ b/src/views/ops/Template/Adhoc.vue
@@ -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
}
}
diff --git a/src/views/ops/Template/Playbook.vue b/src/views/ops/Template/Playbook.vue
index d86231ff4..95415683e 100644
--- a/src/views/ops/Template/Playbook.vue
+++ b/src/views/ops/Template/Playbook.vue
@@ -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
}
}
diff --git a/src/views/ops/Template/index.vue b/src/views/ops/Template/index.vue
index 0fbe09185..3f0f1ae52 100644
--- a/src/views/ops/Template/index.vue
+++ b/src/views/ops/Template/index.vue
@@ -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')
}
]
}
diff --git a/src/views/tasks/TaskDetail/TaskDetail.vue b/src/views/tasks/TaskDetail/TaskDetail.vue
index a4fce6c4f..6b37b8474 100644
--- a/src/views/tasks/TaskDetail/TaskDetail.vue
+++ b/src/views/tasks/TaskDetail/TaskDetail.vue
@@ -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 [
diff --git a/src/views/tasks/TaskDetail/index.vue b/src/views/tasks/TaskDetail/index.vue
index 8bd310103..e1a3608f4 100644
--- a/src/views/tasks/TaskDetail/index.vue
+++ b/src/views/tasks/TaskDetail/index.vue
@@ -1,7 +1,13 @@
-
+
-
+
@@ -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
+ }
}
}
diff --git a/src/views/tasks/TaskList.vue b/src/views/tasks/TaskList.vue
index 8ab0f0c3d..272a24139 100644
--- a/src/views/tasks/TaskList.vue
+++ b/src/views/tasks/TaskList.vue
@@ -4,6 +4,7 @@