config.ts 1.87 KB
import moment from 'moment';
import { findDictItemByCode } from '/@/api/system/dict';
import { BasicColumn, FormSchema } from '/@/components/Table';
import {
  EventType,
  EventTypeColor,
  EventTypeName,
} from '/@/views/device/list/cpns/tabs/EventManage/config';
import { Tag } from 'ant-design-vue';
import { h } from 'vue';
import { formatToDateTime } from '/@/utils/dateUtil';

// 表格配置
export const columns: BasicColumn[] = [
  {
    title: '时间',
    dataIndex: 'eventTime',
    format(text) {
      return formatToDateTime(text, 'YYYY-MM-DD HH:mm:ss');
    },
  },
  {
    title: '标识符',
    dataIndex: 'eventIdentifier',
  },
  {
    title: '事件名称',
    dataIndex: 'eventName',
  },
  {
    title: '事件类型',
    dataIndex: 'eventType',
    customRender({ text }) {
      return h(
        Tag,
        {
          color: EventTypeColor[text as EventType],
        },
        () => EventTypeName[text as EventType]
      );
    },
  },
  {
    title: '输出参数',
    dataIndex: 'outputParams',
    slots: { customRender: 'outputParams' },
  },
];

export const formSchemas: FormSchema[] = [
  {
    field: 'eventIdentifier',
    label: '标识符',
    component: 'Input',
    componentProps: {
      placeholder: '请输入标识符',
    },
    colProps: { span: 6 },
  },
  {
    field: 'eventType',
    label: '事件类型',
    component: 'ApiSelect',
    componentProps: {
      placeholder: '请选择事件类型',
      api: findDictItemByCode,
      params: {
        dictCode: 'event_type',
      },
      labelField: 'itemText',
      valueField: 'itemValue',
    },
    colProps: { span: 6 },
  },
  {
    field: 'dateRange',
    label: '时间范围',
    component: 'RangePicker',
    componentProps: {
      showTime: {
        defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')],
      },
    },
    colProps: { span: 10 },
  },
];