config.ts 2.97 KB
import { findDictItemByCode } from '/@/api/system/dict';
import { BasicColumn, FormSchema } from '/@/components/Table';
import { AlarmStatus } from '/@/enums/alarmEnum';
import { alarmLevel } from '/@/views/device/list/config/detail.config';
import { Tag } from 'ant-design-vue';
import { h } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';

const { t } = useI18n();

// 表格配置
export const columns: BasicColumn[] = [
  {
    title: t('monitor.alarm.log.table.state'),
    dataIndex: 'status',
    customRender({ record }: { record }) {
      const flag = !!record.cleared;
      return h(Tag, { color: flag ? 'green' : 'red' }, () =>
        flag ? t('monitor.alarm.log.search.cleanUp') : t('monitor.alarm.log.search.activation')
      );
    },
    width: 90,
  },
  {
    title: t('monitor.alarm.log.device'),
    dataIndex: 'deviceName',
    customRender: ({ record }) => {
      const { deviceAlias, deviceName } = record || {};
      return deviceAlias || deviceName;
    },
  },
  {
    title: t('monitor.alarm.log.scenario'),
    dataIndex: 'type',
  },
  {
    title: t('monitor.alarm.log.level'),
    dataIndex: 'severity',
    format: (text) => alarmLevel(text),
  },
  {
    title: t('monitor.alarm.log.time'),
    dataIndex: 'createdTime',
  },
  {
    title: t('monitor.alarm.log.table.detail'),
    dataIndex: 'details',
    slots: { customRender: 'details' },
  },
];

// 表格查询表单
export const searchFormSchema: FormSchema[] = [
  {
    field: 'status',
    label: t('monitor.alarm.log.search.alarmOkState'),
    component: 'Cascader',
    helpMessage: t('monitor.alarm.log.search.message'),
    colProps: { span: 6 },
    componentProps: {
      popupClassName: 'alarm-stauts-cascader',
      options: [
        {
          value: '0',
          label: t('monitor.alarm.log.search.cleanUp'),
          children: [
            {
              value: AlarmStatus.CLEARED_UN_ACK,
              label: t('enum.alarmStaus.CLEARED_UNACK'),
            },
            {
              value: AlarmStatus.CLEARED_ACK,
              label: t('enum.alarmStaus.CLEARED_ACK'),
            },
          ],
        },
        {
          value: '1',
          label: t('monitor.alarm.log.search.activation'),
          children: [
            {
              value: AlarmStatus.ACTIVE_UN_ACK,
              label: t('enum.alarmStaus.ACTIVE_UNACK'),
            },
            {
              value: AlarmStatus.ACTIVE_ACK,
              label: t('enum.alarmStaus.ACTIVE_ACK'),
            },
          ],
        },
      ],
      placeholder: t('common.chooseText') + t('monitor.alarm.log.search.alarmOkState'),
    },
  },
  {
    field: 'severity',
    label: t('monitor.alarm.log.level'),
    component: 'ApiSelect',
    colProps: { span: 6 },
    componentProps: {
      placeholder: t('common.chooseText') + t('monitor.alarm.log.level'),
      api: findDictItemByCode,
      params: {
        dictCode: 'severity_type',
      },
      labelField: 'itemText',
      valueField: 'itemValue',
    },
  },
];