Mqtt.vue 5.15 KB
<template>
  <div
    style="
      margin-top: -5vh;
      border: 1px solid gray;
      margin-left: 0.1vw;
      border-radius: 5px;
      padding-left: 1.5vw;
    "
  >
    <div style="margin-top: 1.2vh">
      <BasicForm :showResetButton="false" :showSubmitButton="false" @register="register" />
    </div>
  </div>
</template>
<script lang="ts">
  import { defineComponent, reactive } from 'vue';
  import { BasicForm, useForm } from '/@/components/Form';
  import {
    MqttSchemas,
    deviceTelemetryProtoSchemaData,
    deviceAttributesProtoSchemaData,
    deviceRpcRequestProtoSchemaData,
    deviceRpcResponseProtoSchemaData,
  } from './Mqtt';
  import { Alert, Divider, Descriptions } from 'ant-design-vue';

  export default defineComponent({
    components: {
      BasicForm,
      [Alert.name]: Alert,
      [Divider.name]: Divider,
      [Descriptions.name]: Descriptions,
      [Descriptions.Item.name]: Descriptions.Item,
    },

    emits: ['next', 'prev', 'register'],
    setup(_, { emit }) {
      let allMqttData: any = reactive({});
      const transportMqttData: any = reactive({
        transportPayloadTypeConfiguration: {
          transportPayloadType: null,
          enableCompatibilityWithJsonPayloadFormat: false,
          useJsonPayloadFormatForDefaultDownlinkTopics: false,
          deviceAttributesProtoSchema: null,
          deviceRpcRequestProtoSchema: null,
          deviceRpcResponseProtoSchema: null,
          deviceTelemetryProtoSchema: null,
        },
        type: 'MQTT',
      });

      const [register, { validate, resetFields, setFieldsValue }] = useForm({
        labelWidth: 80,
        schemas: MqttSchemas,
        actionColOptions: {
          span: 14,
        },
      });
      const setStepFieldsValueFunc = (v) => {
        setFieldsValue(v);
        setFieldsValue({
          transportPayloadType: v?.transportPayloadTypeConfiguration?.transportPayloadType,
          deviceTelemetryProtoSchema:
            v?.transportPayloadTypeConfiguration?.deviceTelemetryProtoSchema == null
              ? deviceTelemetryProtoSchemaData
              : v?.transportPayloadTypeConfiguration?.deviceTelemetryProtoSchema,
          deviceAttributesProtoSchema:
            v?.transportPayloadTypeConfiguration?.deviceAttributesProtoSchema == null
              ? deviceAttributesProtoSchemaData
              : v?.transportPayloadTypeConfiguration?.deviceAttributesProtoSchema,
          deviceRpcRequestProtoSchema:
            v?.transportPayloadTypeConfiguration?.deviceRpcRequestProtoSchema == null
              ? deviceRpcRequestProtoSchemaData
              : v?.transportPayloadTypeConfiguration?.deviceRpcRequestProtoSchema,
          deviceRpcResponseProtoSchema:
            v?.transportPayloadTypeConfiguration?.deviceRpcResponseProtoSchema == null
              ? deviceRpcResponseProtoSchemaData
              : v?.transportPayloadTypeConfiguration?.deviceRpcResponseProtoSchema,
          enableCompatibilityWithJsonPayloadFormat:
            v?.transportPayloadTypeConfiguration?.enableCompatibilityWithJsonPayloadFormat,
          useJsonPayloadFormatForDefaultDownlinkTopics:
            v?.transportPayloadTypeConfiguration?.useJsonPayloadFormatForDefaultDownlinkTopics,
        });
      };
      const resetStepFieldsValueFunc = () => {
        resetFields();
      };
      async function customResetFunc() {
        emit('prev');
      }
      const getDataFunc = async () => {
        let val = await validate();
        if (!val) return;
        delete val.desc;
        transportMqttData.transportPayloadTypeConfiguration.transportPayloadType =
          val.transportPayloadType;
        transportMqttData.transportPayloadTypeConfiguration.enableCompatibilityWithJsonPayloadFormat =
          val.enableCompatibilityWithJsonPayloadFormat;
        transportMqttData.transportPayloadTypeConfiguration.useJsonPayloadFormatForDefaultDownlinkTopics =
          val.useJsonPayloadFormatForDefaultDownlinkTopics;
        transportMqttData.transportPayloadTypeConfiguration.deviceAttributesProtoSchema =
          val.deviceAttributesProtoSchema;
        transportMqttData.transportPayloadTypeConfiguration.deviceRpcRequestProtoSchema =
          val.deviceRpcRequestProtoSchema;
        transportMqttData.transportPayloadTypeConfiguration.deviceRpcResponseProtoSchema =
          val.deviceRpcResponseProtoSchema;
        transportMqttData.transportPayloadTypeConfiguration.deviceTelemetryProtoSchema =
          val.deviceTelemetryProtoSchema;
        allMqttData = {
          ...val,
          ...transportMqttData,
        };
        delete allMqttData.deviceTelemetryProtoSchema;
        delete allMqttData.deviceAttributesProtoSchema;
        delete allMqttData.deviceRpcRequestProtoSchema;
        delete allMqttData.deviceRpcResponseProtoSchema;
        delete allMqttData.useJsonPayloadFormatForDefaultDownlinkTopics;
        delete allMqttData.enableCompatibilityWithJsonPayloadFormat;
        delete allMqttData.transportPayloadType;
        return allMqttData;
      };
      return {
        customResetFunc,
        register,
        resetStepFieldsValueFunc,
        getDataFunc,
        setStepFieldsValueFunc,
      };
    },
  });
</script>
<style lang="less" scoped></style>