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