Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into dev
Conflicts: .gitignore src/views/infra/job/JobLog.vuemain
commit
ce936ed296
@ -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<VxeCrudSchema>({
|
|
||||||
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)
|
|
||||||
@ -1,75 +0,0 @@
|
|||||||
import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
|
|
||||||
// 国际化
|
|
||||||
const { t } = useI18n()
|
|
||||||
// CrudSchema
|
|
||||||
const crudSchemas = reactive<VxeCrudSchema>({
|
|
||||||
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)
|
|
||||||
@ -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
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue