From 08abfcfea8247c394b2034cad59734846b403dd9 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期一, 28 十月 2024 22:22:58 +0800 Subject: [PATCH] 计划任务优化 --- src/views/tigerprojects/tsk/tsk_job/job.data.ts | 291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 281 insertions(+), 10 deletions(-) diff --git a/src/views/tigerprojects/tsk/tsk_job/job.data.ts b/src/views/tigerprojects/tsk/tsk_job/job.data.ts index 4542e2d..7740d9b 100644 --- a/src/views/tigerprojects/tsk/tsk_job/job.data.ts +++ b/src/views/tigerprojects/tsk/tsk_job/job.data.ts @@ -1,7 +1,14 @@ import { BasicColumn, FormSchema } from '/@/components/Table'; import { optionsListApi } from '/@/api/tigerapi/tsk/tsk_job'; -import { h } from 'vue'; +import { h, unref } from 'vue'; import { Tag, Tooltip } from 'ant-design-vue'; +import { useI18n } from '/@/hooks/web/useI18n'; +import { GetEnum } from '/@/api/tigerapi/system'; +import { useLocale } from '/@/locales/useLocale'; + +const { t } = useI18n(); +const { getLocale } = useLocale(); + //鐣岄潰鍒楄〃鏄剧ず export const columns: BasicColumn[] = [ { @@ -19,17 +26,34 @@ dataIndex: 'UPDATE_TIME', width: 180, }, - // { - // title: '宸ュ巶鍚嶇О', - // dataIndex: 'FACTORY_NAME', - // width: 180, - // }, { title: '鐘舵��', dataIndex: 'Status', customRender: ({ record }) => { - return h(Tooltip, { title: record.Status.split(',')[1] }, () => record.Status.split(',')[0]); + const texts = record.Status.split(','); + let color = ''; + switch (texts[0]) { + case 'Running': + color = 'green'; + break; + case 'Ready': + color = '#bfbfbf'; + break; + case 'Stop': + color = 'red'; + break; + default: + break; + } + return h(Tooltip, { title: record.Status.split(',')[1] }, () => + h(Tag, { color: color }, () => texts[1]), + ); }, + width: 180, + }, + { + title: '涓嬫杩愯鏃堕棿', + dataIndex: 'NextRunTime', width: 180, }, { @@ -39,6 +63,9 @@ }, ]; +/** + * description + */ export const searchFormSchema: FormSchema[] = [ { field: 'JobName', @@ -70,36 +97,280 @@ }, ]; +const isRunNow = (type: number) => type === 0; +const isRunAt = (type: number) => type === 1; +const isEvery = (type: number) => type === 2; +const isRunIn = (type: number) => type === 3; +let showHour = false; +let showMinute = false; +let showDay = false; export const formSchema: FormSchema[] = [ { field: 'JobName', label: '浠诲姟鍚嶇О', required: true, component: 'Input', + // ifShow: false, }, { field: 'JobType', label: '浠诲姟绫诲悕', required: true, component: 'Input', + colProps: { span: 24 }, }, { field: 'AssemblyName', label: '鍛藉悕绌洪棿', required: true, component: 'Input', + colProps: { span: 24 }, }, { field: 'Remark', label: '鎻忚堪', required: true, component: 'Input', + colProps: { span: 24 }, }, { - field: 'Period', - label: '闂撮殧鏃堕棿(m)', + field: 'NonReentrant', + label: '涓嶉噸鏂拌繘鍏�', + component: 'RadioButtonGroup', + defaultValue: 'N', + colProps: { + span: 10, + }, + componentProps: { + options: [ + { label: '鏄�', value: 'Y' }, + { label: '鍚�', value: 'N' }, + ], + }, + }, + { + field: 'Interval', + label: '鍙栨暟鏃堕暱锛堝皬鏃讹級', required: true, - component: 'InputNumber', + component: 'Input', + colProps: { span: 14 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + }, + { + field: 'LastRunTime', + label: '鏈�鍚庤繍琛屾椂闂�', + required: true, + component: 'DatePicker', + colProps: { span: 24 }, + componentProps: ({ formModel }) => { + return { + format: 'YYYY-MM-DD HH:mm:ss', + }; + }, + }, + { + field: 'runType', + label: '杩愯绫诲瀷', + component: 'RadioButtonGroup', + defaultValue: 0, + componentProps: ({ schema, tableAction, formActionType, formModel }) => { + return { + options: [ + { label: '椹笂杩愯', value: 0 }, + { label: '鍦�(T)杩愯涓�娆�', value: 1 }, + { label: '闅�(T)杩愯', value: 2 }, + { label: '(T)鍚庤繍琛屼竴娆�', value: 3 }, + ], + onChange: (e) => {}, + }; + }, + colProps: { lg: 24, md: 24 }, + }, + { + field: 'type', + label: '鏃堕棿绫诲瀷', + component: 'ApiSelect', + colProps: { span: 12 }, + defaultValue: 0, + componentProps: { + api: GetEnum, + params: { name: 'TrigArgs+EveryType' }, + resultField: 'Data', + labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name', + valueField: 'Value', + onChange: (e, v) => { + console.log('ApiSelect====>:', e, v); + if (Number(e) < 3) { + showMinute = false; + showHour = false; + } + if (e == 3) { + showMinute = true; + showHour = false; + } + if (Number(e) > 3) { + showMinute = true; + showHour = true; + } + if (Number(e) == 7) { + showDay = true; + } else { + showDay = false; + } + }, + }, + }, + { + field: 'ToRunOnceAtDt', + label: '杩愯鏃堕棿鐐�', + required: true, + component: 'TimePicker', + colProps: { span: 12 }, + componentProps: ({ formModel }) => { + return { + format: 'HH:mm', + }; + }, + ifShow: ({ values }) => isRunAt(values.runType), + }, + { + field: 'NowAddMinutes', + label: '澧炲姞鍒嗛挓鏁�', + defaultValue: '0', + component: 'Input', + colProps: { span: 12 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + ifShow: ({ values }) => isRunAt(values.runType), + }, + { + field: 'ToRunEvery', + label: '闅斿灏戞墽琛�', + defaultValue: '0', + component: 'Input', + colProps: { span: 12 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + ifShow: ({ values }) => + isRunNow(values.runType) || isRunAt(values.runType) || isEvery(values.runType), + }, + { + field: 'ToRunOnceIn', + label: '澶氬皯鍚庢墽琛�', + defaultValue: '0', + component: 'Input', + colProps: { span: 12 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + ifShow: ({ values }) => isRunIn(values.runType), + }, + { + field: 'Days', + label: '澶╂暟', + defaultValue: '0', + component: 'Input', + colProps: { span: 12 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + ifShow: () => showDay, + }, + { + field: 'Hours', + label: '灏忔椂鏁�', + defaultValue: '0', + component: 'Input', + colProps: { span: 12 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + ifShow: () => showHour, + }, + { + field: 'Minutes', + label: '鍒嗛挓鏁�', + defaultValue: '0', + component: 'Input', + colProps: { span: 12 }, + rules: [ + { + required: true, + // @ts-ignore + validator: async (rule, value) => { + if (isNaN(Number(value))) { + return Promise.reject(t('涓嶆槸鏁板瓧')); + } + return Promise.resolve(); + }, + trigger: 'change', + }, + ], + ifShow: () => showMinute, }, { field: 'ID', -- Gitblit v1.9.3