config.ts 1.92 KB
import { Tag, Tooltip } from 'ant-design-vue';
import { DescItem } from '/@/components/Description/src/typing';
import { formatToDateTime } from '/@/utils/dateUtil';
import { CSSProperties, h } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';

const { t } = useI18n();
export const descSchema = (): DescItem[] => {
  return [
    {
      field: 'name',
      label: t('edge.instance.text.deviceName'),
      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: t('edge.instance.text.deviceLabel'),
      render: (text) => {
        return text
          ? h(
              Tag,
              {
                color: '#00B42A',
              },
              text
            )
          : '';
      },
    },
    {
      field: 'gatewayName',
      label: t('edge.instance.text.relatedGateway'),
      render: (text) => {
        return text
          ? h(
              Tag,
              {
                color: '#00B42A',
              },
              text
            )
          : '';
      },
    },
    {
      field: 'deviceProfileName',
      label: t('edge.instance.text.relatedProduct'),
    },
    {
      field: 'deviceType',
      label: t('edge.instance.text.deviceType'),
      render: (_, data) => {
        const text = t(`enum.deviceType.${data.deviceType}`);
        return h(
          'span',
          {
            style: { cursor: 'pointer' },
          },
          text
        );
      },
    },
    {
      field: 'createdTime',
      label: t('edge.instance.text.createTime'),
      render: (_, data) => {
        return formatToDateTime(data.createdTime, 'YYYY-MM-DD HH:mm:ss');
      },
    },
    {
      field: 'additionalInfo.description',
      label: t('edge.instance.text.desc'),
    },
  ];
};