diff --git a/.gitignore b/.gitignore
index 2500fdef..ac15926b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,6 @@ dist-ssr
/dist*
*-lock.*
pnpm-debug
+
.idea
+.history
diff --git a/src/plugins/formCreate/index.ts b/src/plugins/formCreate/index.ts
index 69816d8a..0d72048e 100644
--- a/src/plugins/formCreate/index.ts
+++ b/src/plugins/formCreate/index.ts
@@ -10,6 +10,8 @@ import {
ElTransfer,
ElAlert,
ElTabs,
+ ElTable,
+ ElTableColumn,
ElTabPane
} from 'element-plus'
@@ -27,6 +29,8 @@ const components = [
ElTransfer,
ElAlert,
ElTabs,
+ ElTable,
+ ElTableColumn,
ElTabPane
]
diff --git a/src/views/infra/job/JobLog.vue b/src/views/infra/job/JobLog.vue
index ba397d51..daa20046 100644
--- a/src/views/infra/job/JobLog.vue
+++ b/src/views/infra/job/JobLog.vue
@@ -1,74 +1,179 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
-
-
- {{ parseTime(row.beginTime) + ' ~ ' + parseTime(row.endTime) }}
-
-
- {{ row.duration + ' 毫秒' }}
-
-
-
-
-
-
-
-
-
-
- {{ row.retryInterval + '毫秒' }}
-
-
- {{ row.monitorTimeout > 0 ? row.monitorTimeout + ' 毫秒' : '未开启' }}
-
-
-
-
-
-
-
+ >
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.beginTime) + ' ~ ' + parseTime(scope.row.endTime) }}
+
+
+
+
+ {{ scope.row.duration + ' 毫秒' }}
+
+
+
+
+
+
+
+
+
+ 详细
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/infra/job/JobLogView.vue b/src/views/infra/job/JobLogView.vue
new file mode 100644
index 00000000..c66e0d80
--- /dev/null
+++ b/src/views/infra/job/JobLogView.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
diff --git a/src/views/infra/job/form.vue b/src/views/infra/job/form.vue
new file mode 100644
index 00000000..24488fd7
--- /dev/null
+++ b/src/views/infra/job/form.vue
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/infra/job/index.vue b/src/views/infra/job/index.vue
index 613f84c4..702b31fe 100644
--- a/src/views/infra/job/index.vue
+++ b/src/views/infra/job/index.vue
@@ -1,243 +1,175 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
-
-
+ 新增
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ row.retryInterval + '毫秒' }}
-
-
- {{ row.monitorTimeout > 0 ? row.monitorTimeout + ' 毫秒' : '未开启' }}
-
-
- {{ Array.from(nextTimes, (x) => parseTime(x)).join('; ') }}
-
-
-
-
-
-
-
-
-
-
+ >
+ 导出
+
+
+
+ 执行日志
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+ 修改
+ {{ scope.row.status === InfraJobStatusEnum.STOP ? '开启' : '暂停' }}
+ 删除
+ handleCommand(command, scope.row)"
+ v-hasPermi="['infra:job:trigger', 'infra:job:query']"
+ >
+ 更多
+
+
+
+ 执行一次
+
+
+ 任务详细
+
+
+ 调度日志
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/infra/job/job.data.ts b/src/views/infra/job/job.data.ts
deleted file mode 100644
index 38761cd7..00000000
--- a/src/views/infra/job/job.data.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
-const { t } = useI18n() // 国际化
-// 表单校验
-export const rules = reactive({
- name: [required],
- handlerName: [required],
- cronExpression: [required],
- retryCount: [required],
- retryInterval: [required]
-})
-// CrudSchema
-const crudSchemas = reactive({
- primaryKey: 'id',
- primaryType: 'id',
- primaryTitle: '任务编号',
- action: true,
- actionWidth: '280px',
- columns: [
- {
- title: '任务名称',
- field: 'name',
- isSearch: true
- },
- {
- title: t('common.status'),
- field: 'status',
- dictType: DICT_TYPE.INFRA_JOB_STATUS,
- dictClass: 'number',
- isForm: false,
- isSearch: true
- },
- {
- title: '处理器的名字',
- field: 'handlerName',
- isSearch: true
- },
- {
- title: '处理器的参数',
- field: 'handlerParam',
- isTable: false
- },
- {
- title: 'CRON 表达式',
- field: 'cronExpression'
- },
- {
- title: '后续执行时间',
- field: 'nextTimes',
- isTable: false,
- isForm: false
- },
- {
- title: '重试次数',
- field: 'retryCount',
- isTable: false
- },
- {
- title: '重试间隔',
- field: 'retryInterval',
- isTable: false
- },
- {
- title: '监控超时时间',
- field: 'monitorTimeout',
- isTable: false
- }
- ]
-})
-export const { allSchemas } = useVxeCrudSchemas(crudSchemas)
diff --git a/src/views/infra/job/jobLog.data.ts b/src/views/infra/job/jobLog.data.ts
deleted file mode 100644
index ccca3d08..00000000
--- a/src/views/infra/job/jobLog.data.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
-// 国际化
-const { t } = useI18n()
-// CrudSchema
-const crudSchemas = reactive({
- primaryKey: 'id',
- primaryType: 'id',
- primaryTitle: '日志编号',
- action: true,
- columns: [
- {
- title: '任务编号',
- field: 'jobId',
- isSearch: true
- },
- {
- title: '处理器的名字',
- field: 'handlerName',
- isSearch: true
- },
- {
- title: '处理器的参数',
- field: 'handlerParam'
- },
- {
- title: '第几次执行',
- field: 'executeIndex'
- },
- {
- title: '开始执行时间',
- field: 'beginTime',
- formatter: 'formatDate',
- table: {
- slots: {
- default: 'beginTime_default'
- }
- },
- search: {
- show: true,
- itemRender: {
- name: 'XDataPicker'
- }
- }
- },
- {
- title: '结束执行时间',
- field: 'endTime',
- formatter: 'formatDate',
- isTable: false,
- search: {
- show: true,
- itemRender: {
- name: 'XDataPicker'
- }
- }
- },
- {
- title: '执行时长',
- field: 'duration',
- table: {
- slots: {
- default: 'duration_default'
- }
- }
- },
- {
- title: t('common.status'),
- field: 'status',
- dictType: DICT_TYPE.INFRA_JOB_LOG_STATUS,
- dictClass: 'number',
- isSearch: true
- }
- ]
-})
-export const { allSchemas } = useVxeCrudSchemas(crudSchemas)
diff --git a/src/views/infra/job/utils.ts b/src/views/infra/job/utils.ts
new file mode 100644
index 00000000..a3774f22
--- /dev/null
+++ b/src/views/infra/job/utils.ts
@@ -0,0 +1,44 @@
+export const parseTime = (time) => {
+ if (!time) {
+ return null
+ }
+ const format = '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
+ time = parseInt(time)
+ } else if (typeof time === 'string') {
+ time = time
+ .replace(new RegExp(/-/gm), '/')
+ .replace('T', ' ')
+ .replace(new RegExp(/\.[\d]{3}/gm), '')
+ }
+ if (typeof time === 'number' && time.toString().length === 10) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+ let value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') {
+ return ['日', '一', '二', '三', '四', '五', '六'][value]
+ }
+ if (result.length > 0 && value < 10) {
+ value = '0' + value
+ }
+ return value || 0
+ })
+ return time_str
+}
diff --git a/src/views/infra/job/view.vue b/src/views/infra/job/view.vue
new file mode 100644
index 00000000..d195e0e3
--- /dev/null
+++ b/src/views/infra/job/view.vue
@@ -0,0 +1,89 @@
+
+
+
+
+