Coap.vue 3.07 KB
<template>
  <div style="margin-top: -5vh; border: 1px solid gray; border-radius: 5px">
    <div style="margin-top: 1.2vh">
      <BasicForm :showResetButton="false" :showSubmitButton="false" @register="register" />
    </div>
  </div>
</template>
<script lang="ts" setup>
  import { reactive } from 'vue';
  import { BasicForm, useForm } from '/@/components/Form';
  import {
    CoapSchemas,
    // deviceTelemetryProtoSchemaData,
    // deviceAttributesProtoSchemaData,
    // deviceRpcRequestProtoSchemaData,
    // deviceRpcResponseProtoSchemaData,
  } from './Coap';

  const emits = defineEmits(['prev']);
  let coapAllData = reactive({});
  const transportCoapData: any = reactive({
    coapDeviceTypeConfiguration: {
      coapDeviceType: null,
      transportPayloadTypeConfiguration: {
        transportPayloadType: null,
        deviceTelemetryProtoSchema: null,
        deviceAttributesProtoSchema: null,
        deviceRpcRequestProtoSchema: null,
        deviceRpcResponseProtoSchema: null,
      },
    },
    clientSettings: {
      powerMode: null,
      edrxCycle: null,
      pagingTransmissionWindow: null,
      psmActivityTimer: null,
    },
    type: 'COAP',
  });

  const [register, { validate, resetFields, setFieldsValue }] = useForm({
    labelWidth: 200,
    schemas: CoapSchemas,
    actionColOptions: {
      span: 14,
    },
  });
  const setFormData = (v) => {
    setFieldsValue({
      ...v?.clientSettings,
      ...v?.coapDeviceTypeConfiguration,
      ...v?.coapDeviceTypeConfiguration?.transportPayloadTypeConfiguration,
    });
  };
  const resetFormData = () => {
    resetFields();
  };
  function customResetFunc() {
    emits('prev');
  }
  const getFormData = async () => {
    const val = await validate();
    if (!val) return;
    transportCoapData.coapDeviceTypeConfiguration.coapDeviceType = val.coapDeviceType;
    transportCoapData.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.transportPayloadType =
      val.transportPayloadType;
    transportCoapData.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.deviceTelemetryProtoSchema =
      val.deviceTelemetryProtoSchema;
    transportCoapData.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.deviceAttributesProtoSchema =
      val.deviceAttributesProtoSchema;
    transportCoapData.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.deviceRpcRequestProtoSchema =
      val.deviceRpcRequestProtoSchema;
    transportCoapData.coapDeviceTypeConfiguration.transportPayloadTypeConfiguration.deviceRpcResponseProtoSchema =
      val.deviceRpcResponseProtoSchema;
    transportCoapData.clientSettings.powerMode = val.powerMode;
    transportCoapData.clientSettings.edrxCycle = val.edrxCycle;
    transportCoapData.clientSettings.pagingTransmissionWindow = val.pagingTransmissionWindow;
    transportCoapData.clientSettings.psmActivityTimer = val.psmActivityTimer;
    coapAllData = {
      ...transportCoapData,
    };
    return coapAllData;
  };
  defineExpose({
    getFormData,
    resetFormData,
    setFormData,
    customResetFunc,
  });
</script>
<style lang="less" scoped></style>