Ben Lin
2024-10-27 92cb62d60d38be56312be20cfae8638a5a9aa57a
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,16 +26,28 @@
    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,
  },
@@ -39,6 +58,9 @@
  },
];
/**
 * description
 */
export const searchFormSchema: FormSchema[] = [
  {
    field: 'JobName',
@@ -70,36 +92,248 @@
  },
];
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: 24,
    },
    componentProps: {
      options: [
        { label: '是', value: 'Y' },
        { label: '否', value: 'N' },
      ],
    },
  },
  {
    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: 'InputNumber',
    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',