COAPDescription.vue 5.3 KB
<script lang="ts" setup>
  import { DeviceRecord } from '/@/api/device/model/deviceModel';
  import { useDescription, Description } from '/@/components/Description';
  import { Input } from 'ant-design-vue';
  import { h } from 'vue';
  import {
    COAPDeviceTypeEnum,
    PowerModeEnum,
    PowerModeNameEnum,
    TransportPayloadTypeEnum,
  } from './const';
  import { useI18n } from '/@/hooks/web/useI18n';

  type TransportConfiguration = DeviceRecord['profileData']['transportConfiguration'];
  const props = defineProps<{
    record: TransportConfiguration;
  }>();

  const showProtoSchema = (data: TransportConfiguration) => {
    return (
      data.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.transportPayloadType ===
        TransportPayloadTypeEnum.PROTOBUF &&
      data.coapDeviceTypeConfiguration.coapDeviceType === COAPDeviceTypeEnum.DEFAULT
    );
  };

  const showPowerModeIsPSM = (data: TransportConfiguration) => {
    return data.clientSettings.powerMode === PowerModeNameEnum.PSM;
  };

  const showPowerModeIsEDRX = (data: TransportConfiguration) => {
    return data.clientSettings.powerMode === PowerModeEnum.E_DRX;
  };

  const { t } = useI18n();

  const [register] = useDescription({
    layout: 'vertical',
    column: 2,
    data: props.record,
    schema: [
      {
        field: 'type',
        label: t('deviceManagement.product.accessProtocolText'),
      },
      {
        field: 'coapDeviceType',
        label: t('deviceManagement.product.deviceTypeText'),
        render: (_, data: TransportConfiguration) =>
          data.coapDeviceTypeConfiguration.coapDeviceType,
      },
      {
        field: 'coapDeviceType',
        label: t('deviceManagement.product.deviceMessagePayloadText', { deviceType: 'COAP' }),
        render: (_, data: TransportConfiguration) =>
          data.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.transportPayloadType,
      },
      {
        field: 'powerMode',
        label: t('deviceManagement.product.energySavingModeText'),
        render: (_, data: TransportConfiguration) =>
          PowerModeNameEnum[data.clientSettings.powerMode],
      },
      {
        field: 'psmActivityTimer',
        label: t('deviceManagement.product.psmActivityTimerText'),
        show: showPowerModeIsPSM,
        render: (_, data: TransportConfiguration) => data.clientSettings.psmActivityTimer,
      },
      {
        field: 'edrxCycle',
        label: t('deviceManagement.product.edrxCycleText'),
        show: showPowerModeIsEDRX,
        render: (_, data: TransportConfiguration) => data.clientSettings.edrxCycle,
      },
      {
        field: 'edrxCycleTime',
        label: t('deviceManagement.product.edrxCycleTimeText'),
        show: showPowerModeIsEDRX,
        render: () => '秒',
      },
      {
        field: 'pagingTransmissionWindow',
        label: t('deviceManagement.product.pagingTransmissionWindowText'),
        show: showPowerModeIsEDRX,
        render: (_, data: TransportConfiguration) => data.clientSettings.pagingTransmissionWindow,
      },
      {
        field: 'pagingTransmissionWindowTime',
        label: t('deviceManagement.product.pagingTransmissionWindowTimeText'),
        show: showPowerModeIsEDRX,
        render: () => '秒',
      },
      {
        field: 'unit',
        label: t('deviceManagement.product.timerUnitText'),
        show: showPowerModeIsPSM,
        render: () => '秒',
      },
      {
        field: 'deviceTelemetryProtoSchema',
        label: t('deviceManagement.product.deviceTelemetryProtoSchemaText'),
        span: 2,
        show: showProtoSchema,
        render(_, data: TransportConfiguration) {
          return h(Input.TextArea, {
            autoSize: true,
            value:
              data.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration
                .deviceTelemetryProtoSchema,
          });
        },
      },
      {
        field: 'deviceAttributesProtoSchema',
        label: t('deviceManagement.product.deviceAttributesProtoSchemaText'),
        span: 2,
        show: showProtoSchema,
        render(_, data: TransportConfiguration) {
          return h(Input.TextArea, {
            autoSize: true,
            value:
              data.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration
                .deviceAttributesProtoSchema,
          });
        },
      },
      {
        field: 'deviceRpcRequestProtoSchema',
        label: t('deviceManagement.product.deviceRpcRequestProtoSchemaText'),
        span: 2,
        show: showProtoSchema,
        render(_, data: TransportConfiguration) {
          return h(Input.TextArea, {
            autoSize: true,
            value:
              data.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration
                .deviceRpcRequestProtoSchema,
          });
        },
      },
      {
        field: 'deviceRpcResponseProtoSchema',
        label: t('deviceManagement.product.deviceRpcResponseProtoSchemaText'),
        span: 2,
        show: showProtoSchema,
        render(_, data: TransportConfiguration) {
          return h(Input.TextArea, {
            autoSize: true,
            value:
              data.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration
                .deviceRpcResponseProtoSchema,
          });
        },
      },
    ],
  });
</script>

<template>
  <Description @register="register" />
</template>