diff --git a/src/i18n/langs/cn.json b/src/i18n/langs/cn.json index 390cf293c..e024de250 100644 --- a/src/i18n/langs/cn.json +++ b/src/i18n/langs/cn.json @@ -1326,6 +1326,13 @@ "TimerPeriod": "定时执行周期", "Username": "用户名" }, + "EscapeRoutePlan": { + "EscapeRoutePlan": "逃生通道", + "EscapeRoutePlanCreate": "创建逃生通道", + "EscapeRoutePlanUpdate": "更新逃生通道", + "ExecutionDetail": "执行详情", + "MailRecipient": "邮件收件人" + }, "Cloud": { "ServerAccountKey": "服务账号密钥", "IPNetworkSegment": "IP网段", diff --git a/src/router/accounts.js b/src/router/accounts.js index 436b0501b..8bb29d93a 100644 --- a/src/router/accounts.js +++ b/src/router/accounts.js @@ -161,5 +161,54 @@ export default [ hidden: true } ] + }, + { + path: 'escape', + component: empty, + redirect: '', + meta: { title: i18n.t('xpack.EscapeRoutePlan.EscapeRoutePlan') }, + children: [ + { + path: '', + component: () => import('@/views/accounts/EscapeRoutePlan/index.vue'), + name: 'EscapeRoutePlanIndex', + meta: { title: i18n.t('xpack.EscapeRoutePlan.EscapeRoutePlan'), activeMenu: '/accounts/escape' } + }, + { + path: '', + component: () => import('@/views/accounts/EscapeRoutePlan/EscapeRoutePlanList.vue'), + name: 'EscapeRoutePlanList', + meta: { title: i18n.t('xpack.EscapeRoutePlan.EscapeRoutePlan'), activeMenu: '/accounts/escape' }, + hidden: true + }, + { + path: 'create', + component: () => import('@/views/accounts/EscapeRoutePlan/EscapeRoutePlanCreateUpdate.vue'), + name: 'EscapeRoutePlanCreate', + meta: { title: i18n.t('xpack.EscapeRoutePlan.EscapeRoutePlanCreate'), activeMenu: '/accounts/escape', action: 'create' }, + hidden: true + }, + { + path: ':id/update', + component: () => import('@/views/accounts/EscapeRoutePlan/EscapeRoutePlanCreateUpdate.vue'), + name: 'EscapeRoutePlanUpdate', + meta: { title: i18n.t('xpack.EscapeRoutePlan.EscapeRoutePlanUpdate'), activeMenu: '/accounts/escape', action: 'update' }, + hidden: true + }, + { + path: ':id', + component: () => import('@/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/index.vue'), + name: 'EscapeRoutePlanDetail', + meta: { title: i18n.t('xpack.EscapeRoutePlan.EscapeRoutePlan'), activeMenu: '/accounts/escape' }, + hidden: true + }, + { + path: 'plan-execution/:id', + component: () => import('@/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/index.vue'), + name: 'EscapeRoutePlanExecutionDetail', + meta: { title: i18n.t('xpack.EscapeRoutePlan.ExecutionDetail'), activeMenu: '/accounts/escape' }, + hidden: true + } + ] } ] diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanCreateUpdate.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanCreateUpdate.vue new file mode 100644 index 000000000..8e9788df7 --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanCreateUpdate.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/EscapeRoutePlanExecutionInfo.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/EscapeRoutePlanExecutionInfo.vue new file mode 100644 index 000000000..3bde75299 --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/EscapeRoutePlanExecutionInfo.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/EscapeRoutePlanExecutionTaskList.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/EscapeRoutePlanExecutionTaskList.vue new file mode 100644 index 000000000..241e987ee --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/EscapeRoutePlanExecutionTaskList.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/index.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/index.vue new file mode 100644 index 000000000..e8d3b1796 --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionDetail/index.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionList.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionList.vue new file mode 100644 index 000000000..d8a3aaf8c --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanExecution/EscapeRoutePlanExecutionList.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanInfo.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanInfo.vue new file mode 100644 index 000000000..6834ce537 --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/EscapeRoutePlanInfo.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/index.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/index.vue new file mode 100644 index 000000000..afec846ec --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanDetail/index.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanList.vue b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanList.vue new file mode 100644 index 000000000..d5768414d --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/EscapeRoutePlanList.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/accounts/EscapeRoutePlan/fields.js b/src/views/accounts/EscapeRoutePlan/fields.js new file mode 100644 index 000000000..33c513a37 --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/fields.js @@ -0,0 +1,57 @@ +import i18n from '@/i18n/i18n' +import { CronTab } from '@/components' + +var validatorInterval = (rule, value, callback) => { + if (parseInt(value) < 1) { + return callback(new Error(i18n.t('xpack.ChangeAuthPlan.validatorMessage.EnsureThisValueIsGreaterThanOrEqualTo1'))) + } + callback() +} + +function getFields() { + const recipients = { + el: { + value: [], + ajax: { + url: '/api/v1/users/users/?fields_size=mini', + transformOption: (item) => { + return { label: item.name + '(' + item.username + ')', value: item.id } + } + } + } + } + + const is_periodic = { + type: 'switch' + } + + const crontab = { + type: 'cronTab', + component: CronTab, + label: i18n.t('xpack.RegularlyPerform'), + hidden: (formValue) => { + return formValue.is_periodic === false + }, + helpText: i18n.t('xpack.HelpText.CrontabOfCreateUpdatePage') + } + + const interval = { + label: i18n.t('xpack.CyclePerform'), + hidden: (formValue) => { + return formValue.is_periodic === false + }, + helpText: i18n.t('xpack.HelpText.IntervalOfCreateUpdatePage'), + rules: [ + { validator: validatorInterval } + ] + } + + return { + is_periodic: is_periodic, + crontab: crontab, + interval: interval, + recipients: recipients + } +} + +export default getFields diff --git a/src/views/accounts/EscapeRoutePlan/index.vue b/src/views/accounts/EscapeRoutePlan/index.vue new file mode 100644 index 000000000..85ad5ba2a --- /dev/null +++ b/src/views/accounts/EscapeRoutePlan/index.vue @@ -0,0 +1,36 @@ + + + + +