config.ts 7.29 KB
import { FormSchema } from '/@/components/Table';

/**
 * 所使用的枚举值
 */

export enum TriggerEnum {
  IS_DEVICE_ACT = 'ANY_TIME',
  IS_TIME_ACT = 'SPECIFIC_TIME',
  IS_SCENE_ACT = 'CUSTOM',
}

export const isShiDu = (type: string) => {
  return type === TriggerEnum.IS_DEVICE_ACT;
};
export const isWenDu = (type: string) => {
  return type === TriggerEnum.IS_TIME_ACT;
};

export const isTimeAll = (type: string) => {
  return type === TriggerEnum.IS_SCENE_ACT;
};

export const formSchema: FormSchema[] = [
  {
    field: 'schedule',
    label: '报警日程表',
    colProps: { span: 12 },
    required: true,
    component: 'Select',
    componentProps: {
      placeholder: '请选择报警日程表',
      options: [
        { label: '始终启用', value: 'ANY_TIME' },
        { label: '定时启用', value: 'SPECIFIC_TIME' },
        { label: '自定义启用', value: 'CUSTOM' },
      ],
    },
  },
  {
    field: 'timezone',
    label: '时区',
    colProps: { span: 12 },

    required: true,
    component: 'Select',
    componentProps: {
      placeholder: '请选择时区',
      options: [
        { label: 'Africa/Abidjan (UTC+00:00)', value: 'Africa/Abidjan (UTC+00:00)' },
        { label: 'Africa/Accra (UTC+00:00)', value: 'Africa/Accra (UTC+00:00)' },
        { label: 'Africa/Addis Ababa (UTC+03:00)', value: 'Africa/Addis Ababa (UTC+03:00)' },
        { label: 'Africa/Asmara (UTC+03:00)', value: 'Africa/Asmara (UTC+03:00)' },
      ],
    },
    ifShow: ({ values }) =>
      isWenDu(Reflect.get(values, 'schedule')) || isTimeAll(Reflect.get(values, 'schedule')),
  },

  {
    field: 'daysOfWeek1',
    component: 'Checkbox',
    label: '星期一',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn1',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn1',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },

  {
    field: 'daysOfWeek2',
    component: 'Checkbox',
    label: '星期二',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn2',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn2',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'daysOfWeek3',
    component: 'Checkbox',
    label: '星期三',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn3',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn3',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'daysOfWeek4',
    component: 'Checkbox',
    label: '星期四',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn4',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn4',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'daysOfWeek5',
    component: 'Checkbox',
    label: '星期五',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn5',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn5',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'daysOfWeek6',
    component: 'Checkbox',
    label: '星期六',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn6',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn6',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'daysOfWeek7',
    component: 'Checkbox',
    label: '星期七',
    colProps: {
      span: 8,
    },
    renderComponentContent: '',
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn7',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn7',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 8,
    },
    ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'schedule')),
  },

  {
    field: 'daysOfWeek',
    component: 'CheckboxGroup',
    label: '天',
    colProps: {
      span: 24,
    },
    rules: [
      {
        message: '每周至少选择一天',
        trigger: 'blur',
      },
    ],
    componentProps: {
      options: [
        {
          label: '星期一',
          value: '1',
        },
        {
          label: '星期二',
          value: '2',
        },
        {
          label: '星期三',
          value: '3',
        },
        {
          label: '星期四',
          value: '4',
        },
        {
          label: '星期五',
          value: '5',
        },
        {
          label: '星期六',
          value: '6',
        },
        {
          label: '星期七',
          value: '7',
        },
      ],
    },
    ifShow: ({ values }) => isWenDu(Reflect.get(values, 'schedule')),
  },
  {
    field: 'startsOn',
    component: 'TimePicker',
    label: '开始时间选择',
    colProps: {
      span: 12,
    },
    componentProps: {
      valueFormat: 'HH:mm:ss',
    },
    ifShow: ({ values }) => isWenDu(Reflect.get(values, 'schedule')),
  },
  {
    field: 'endsOn',
    component: 'TimePicker',
    label: '结束时间选择',
    colProps: {
      span: 12,
    },
    componentProps: {
      valueFormat: 'HH:mm:ss',
    },
    ifShow: ({ values }) => isWenDu(Reflect.get(values, 'schedule')),
  },
];