config.ts 2.33 KB
import moment from 'moment';
import { findDictItemByCode } from '/@/api/system/dict';
import { BasicColumn, FormSchema } from '/@/components/Table';
import { EventTypeColor } from '/@/views/device/list/cpns/tabs/EventManage/config';
import { Tag } from 'ant-design-vue';
import { h } from 'vue';
import { formatToDateTime } from '/@/utils/dateUtil';
import { useI18n } from '/@/hooks/web/useI18n';
import { ObjectEventTypeEnum, ObjectEventTypeNameEnum } from '/@/enums/objectModelEnum';

const { t } = useI18n();

// 表格配置
export const columns: BasicColumn[] = [
  {
    title: t('common.timeText'),
    dataIndex: 'eventTime',
    format(text) {
      return formatToDateTime(text, 'YYYY-MM-DD HH:mm:ss');
    },
  },
  {
    title: t('deviceManagement.product.identifierText'),
    dataIndex: 'eventIdentifier',
  },
  {
    title: t('deviceManagement.device.eventNameText'),
    dataIndex: 'eventName',
  },
  {
    title: t('deviceManagement.product.eventTypeText'),
    dataIndex: 'eventType',
    customRender({ text }) {
      return h(
        Tag,
        {
          color: EventTypeColor[text as ObjectEventTypeEnum],
        },
        () => t(ObjectEventTypeNameEnum[text as ObjectEventTypeEnum])
      );
    },
  },
  {
    title: t('deviceManagement.product.outputDataText'),
    dataIndex: 'outputParams',
    slots: { customRender: 'outputParams' },
  },
];

export const formSchemas: FormSchema[] = [
  {
    field: 'eventIdentifier',
    label: t('deviceManagement.product.identifierText'),
    component: 'Input',
    componentProps: {
      placeholder: t('common.inputText') + t('deviceManagement.product.identifierText'),
    },
    colProps: { span: 6 },
  },
  {
    field: 'eventType',
    label: t('deviceManagement.product.eventTypeText'),
    component: 'ApiSelect',
    componentProps: {
      placeholder: t('common.chooseText') + t('deviceManagement.product.eventTypeText'),
      api: findDictItemByCode,
      params: {
        dictCode: 'event_type',
      },
      labelField: 'itemText',
      valueField: 'itemValue',
    },
    colProps: { span: 6 },
  },
  {
    field: 'dateRange',
    label: t('business.dateRangeText'),
    component: 'RangePicker',
    componentProps: {
      showTime: {
        defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')],
      },
    },
    colProps: { span: 10 },
  },
];