config.ts 1.93 KB
import { Tag, Tooltip } from 'ant-design-vue';
import { DeviceTypeEnum } from '/@/api/device/model/deviceModel';
import { DescItem } from '/@/components/Description/src/typing';
import { formatToDateTime } from '/@/utils/dateUtil';
import { CSSProperties, h } from 'vue';

export const descSchema = (): DescItem[] => {
  return [
    {
      field: 'name',
      label: '设备名称',
      render(val, data: Record<'alias' | 'name', string>) {
        return h(Tooltip, { title: data.alias || val }, () =>
          h('span', { style: { cursor: 'pointer' } as CSSProperties }, data.alias || val)
        );
      },
    },
    {
      field: 'label',
      label: '设备标签',
      render: (text) => {
        return text
          ? h(
              Tag,
              {
                color: '#00B42A',
              },
              text
            )
          : '';
      },
    },
    {
      field: 'gatewayName',
      label: '所属网关',
      render: (text) => {
        return text
          ? h(
              Tag,
              {
                color: '#00B42A',
              },
              text
            )
          : '';
      },
    },
    {
      field: 'deviceProfileName',
      label: '产品',
    },
    {
      field: 'deviceType',
      label: '设备类型',
      render: (_, data) => {
        const text =
          data.deviceType === DeviceTypeEnum.GATEWAY
            ? '网关设备'
            : data.deviceType === DeviceTypeEnum.DIRECT_CONNECTION
            ? '直连设备'
            : '网关子设备';
        return h(
          'span',
          {
            style: { cursor: 'pointer' },
          },
          text
        );
      },
    },
    {
      field: 'createdTime',
      label: '创建时间',
      render: (_, data) => {
        return formatToDateTime(data.createdTime, 'YYYY-MM-DD HH:mm:ss');
      },
    },
    {
      field: 'additionalInfo.description',
      label: '描述',
    },
  ];
};