| 1 | 1 | <template> | 
| 2 | 2 | <div> | 
| 3 |  | -    <BasicModal v-bind="$attrs" width="55rem" @register="register" :title="getTitle" @ok="handleSubmit" | 
| 4 |  | -      @cancel="handleCancel" :showOkBtn="isShowOkBtnFalse"> | 
|  | 3 | +    <BasicModal | 
|  | 4 | +      v-bind="$attrs" | 
|  | 5 | +      width="55rem" | 
|  | 6 | +      @register="register" | 
|  | 7 | +      :title="getTitle" | 
|  | 8 | +      @ok="handleSubmit" | 
|  | 9 | +      @cancel="handleCancel" | 
|  | 10 | +      :showOkBtn="isShowOkBtnFalse" | 
|  | 11 | +    > | 
| 5 | 12 | <div class="step-form-form"> | 
| 6 | 13 | <a-steps :current="current"> | 
| 7 | 14 | <a-step title="设备配置" /> | 
| ... | ... | @@ -24,276 +31,281 @@ | 
| 24 | 31 | </div> | 
| 25 | 32 | </template> | 
| 26 | 33 | <script lang="ts"> | 
| 27 |  | -import { | 
| 28 |  | -  defineComponent, | 
| 29 |  | -  nextTick, | 
| 30 |  | -  ref, | 
| 31 |  | -  computed, | 
| 32 |  | -  unref, | 
| 33 |  | -  getCurrentInstance, | 
| 34 |  | -  reactive, | 
| 35 |  | -} from 'vue'; | 
| 36 |  | -import { BasicModal, useModalInner } from '/@/components/Modal'; | 
| 37 |  | -import DeviceProfileStep1 from '/@/views/device/profiles/step/DeviceProfileStep1.vue'; | 
| 38 |  | -import DeviceProfileStep2 from '/@/views/device/profiles/step/DeviceProfileStep2.vue'; | 
| 39 |  | -import { Steps } from 'ant-design-vue'; | 
| 40 |  | -import { deviceConfigAddOrEdit, deviceConfigGetDetail } from '/@/api/device/deviceConfigApi'; | 
| 41 |  | -import { useMessage } from '/@/hooks/web/useMessage'; | 
| 42 |  | - | 
| 43 |  | -export default defineComponent({ | 
| 44 |  | -  name: 'DeviceModal', | 
| 45 |  | -  components: { | 
| 46 |  | -    BasicModal, | 
| 47 |  | -    DeviceProfileStep1, | 
| 48 |  | -    DeviceProfileStep2, | 
| 49 |  | -    [Steps.name]: Steps, | 
| 50 |  | -    [Steps.Step.name]: Steps.Step, | 
| 51 |  | -  }, | 
| 52 |  | -  props: { | 
| 53 |  | -    userData: { type: Object }, | 
| 54 |  | -  }, | 
| 55 |  | -  emits: ['success', 'register', 'handleStepPrev', 'handleStep3Next', 'handleRedo'], | 
| 56 |  | -  setup(_, { emit }) { | 
| 57 |  | -    const { proxy } = getCurrentInstance() as any; | 
| 58 |  | -    const DeviceProfileStep1Ref = ref(null); | 
| 59 |  | -    const DeviceProfileStep2Ref = ref(null); | 
| 60 |  | -    const { createMessage } = useMessage(); | 
| 61 |  | -    let postDeviceConfogData: any = reactive({}); | 
| 62 |  | -    let getStepOneData: any = reactive({}); | 
| 63 |  | -    let getStepTwoData: any = reactive({}); | 
| 64 |  | -    const editData: any = ref({}); | 
| 65 |  | -    const postEditId = ref(''); | 
| 66 |  | -    const createTime = ref(''); | 
| 67 |  | -    const current = ref(0); | 
| 68 |  | -    const isUpdate = ref(0); | 
| 69 |  | -    const isShowOkBtnFalse = ref(true); | 
| 70 |  | -    const isNextStatus = ref(false); | 
| 71 |  | -    let transportTypeObj = reactive({ | 
| 72 |  | -      transportType: '', | 
| 73 |  | -    }); | 
| 74 |  | -    let profileDataObj: any = reactive({ | 
| 75 |  | -      profileData: null, | 
| 76 |  | -    }); | 
| 77 |  | -    let isEdit = ref(true); | 
| 78 |  | -    let noEditObj: any = reactive({}); | 
| 79 |  | -    const getTitle = computed(() => | 
| 80 |  | -      isUpdate.value == 1 ? '新增设备配置' : isUpdate.value == 2 ? '编辑设备配置' : '设备配置详情' | 
| 81 |  | -    ); | 
| 82 |  | -    const editTransportType = ref(''); | 
| 83 |  | -    const getViewTitle = computed(() => (!unref(isShowOkBtnFalse) ? '设备配置详情' : '')); | 
| 84 |  | -    const [register, { closeModal }] = useModalInner(async (data) => { | 
| 85 |  | -      isUpdate.value = data.isUpdate; | 
| 86 |  | -      if (isUpdate.value == 1) { | 
| 87 |  | -        handleCancel(); | 
| 88 |  | -        isShowOkBtnFalse.value = true; | 
| 89 |  | -        current.value = 0; | 
| 90 |  | -        isEdit.value = false; | 
| 91 |  | -        proxy.$refs.DeviceProfileStep1Ref.editOrAddNameStatus(false) | 
| 92 |  | -      } else if (isUpdate.value == 2) { | 
| 93 |  | -        isEdit.value = true; | 
| 94 |  | -        handleCancel(); | 
| 95 |  | -        isShowOkBtnFalse.value = true; | 
| 96 |  | -        current.value = 0; | 
| 97 |  | -        postEditId.value = data.record.id; | 
| 98 |  | -        createTime.value = data.record.createTime; | 
| 99 |  | -        editTransportType.value = data.record.transportType; | 
| 100 |  | -        editData.value = await deviceConfigGetDetail(postEditId.value); | 
| 101 |  | -        proxy.$refs.DeviceProfileStep1Ref.setStepOneFieldsValueFunc({ | 
| 102 |  | -          name: editData.value.name, | 
| 103 |  | -          defaultRuleChainId: editData.value.defaultRuleChainId, | 
| 104 |  | -          defaultQueueName: editData.value.defaultQueueName, | 
| 105 |  | -          description: editData.value.description, | 
| 106 |  | -          image: editData.value.image, | 
| 107 |  | -        }); | 
| 108 |  | -        if (editData.value.default) { | 
| 109 |  | -          proxy.$refs.DeviceProfileStep1Ref.editOrAddNameStatus(true) | 
| 110 |  | - | 
| 111 |  | -        } else { | 
| 112 |  | -          proxy.$refs.DeviceProfileStep1Ref.editOrAddNameStatus(false) | 
|  | 34 | +  import { | 
|  | 35 | +    defineComponent, | 
|  | 36 | +    nextTick, | 
|  | 37 | +    ref, | 
|  | 38 | +    computed, | 
|  | 39 | +    unref, | 
|  | 40 | +    getCurrentInstance, | 
|  | 41 | +    reactive, | 
|  | 42 | +  } from 'vue'; | 
|  | 43 | +  import { BasicModal, useModalInner } from '/@/components/Modal'; | 
|  | 44 | +  import DeviceProfileStep1 from '/@/views/device/profiles/step/DeviceProfileStep1.vue'; | 
|  | 45 | +  import DeviceProfileStep2 from '/@/views/device/profiles/step/DeviceProfileStep2.vue'; | 
|  | 46 | +  import { Steps } from 'ant-design-vue'; | 
|  | 47 | +  import { deviceConfigAddOrEdit, deviceConfigGetDetail } from '/@/api/device/deviceConfigApi'; | 
|  | 48 | +  import { useMessage } from '/@/hooks/web/useMessage'; | 
| 113 | 49 |  | 
|  | 50 | +  export default defineComponent({ | 
|  | 51 | +    name: 'DeviceModal', | 
|  | 52 | +    components: { | 
|  | 53 | +      BasicModal, | 
|  | 54 | +      DeviceProfileStep1, | 
|  | 55 | +      DeviceProfileStep2, | 
|  | 56 | +      [Steps.name]: Steps, | 
|  | 57 | +      [Steps.Step.name]: Steps.Step, | 
|  | 58 | +    }, | 
|  | 59 | +    props: { | 
|  | 60 | +      userData: { type: Object }, | 
|  | 61 | +    }, | 
|  | 62 | +    emits: ['success', 'register', 'handleStepPrev', 'handleStep3Next', 'handleRedo'], | 
|  | 63 | +    setup(_, { emit }) { | 
|  | 64 | +      const { proxy } = getCurrentInstance() as any; | 
|  | 65 | +      const DeviceProfileStep1Ref = ref(null); | 
|  | 66 | +      const DeviceProfileStep2Ref = ref(null); | 
|  | 67 | +      const { createMessage } = useMessage(); | 
|  | 68 | +      let postDeviceConfogData: any = reactive({}); | 
|  | 69 | +      let getStepOneData: any = reactive({}); | 
|  | 70 | +      let getStepTwoData: any = reactive({}); | 
|  | 71 | +      const editData: any = ref({}); | 
|  | 72 | +      const postEditId = ref(''); | 
|  | 73 | +      const postDefault = ref(false); | 
|  | 74 | +      const createTime = ref(''); | 
|  | 75 | +      const current = ref(0); | 
|  | 76 | +      const isUpdate = ref(0); | 
|  | 77 | +      const isShowOkBtnFalse = ref(true); | 
|  | 78 | +      const isNextStatus = ref(false); | 
|  | 79 | +      let transportTypeObj = reactive({ | 
|  | 80 | +        transportType: '', | 
|  | 81 | +      }); | 
|  | 82 | +      let profileDataObj: any = reactive({ | 
|  | 83 | +        profileData: null, | 
|  | 84 | +      }); | 
|  | 85 | +      let isEdit = ref(true); | 
|  | 86 | +      let noEditObj: any = reactive({}); | 
|  | 87 | +      const getTitle = computed(() => | 
|  | 88 | +        isUpdate.value == 1 ? '新增设备配置' : isUpdate.value == 2 ? '编辑设备配置' : '设备配置详情' | 
|  | 89 | +      ); | 
|  | 90 | +      const editTransportType = ref(''); | 
|  | 91 | +      const getViewTitle = computed(() => (!unref(isShowOkBtnFalse) ? '设备配置详情' : '')); | 
|  | 92 | +      const [register, { closeModal }] = useModalInner(async (data) => { | 
|  | 93 | +        isUpdate.value = data.isUpdate; | 
|  | 94 | +        if (isUpdate.value == 1) { | 
|  | 95 | +          handleCancel(); | 
|  | 96 | +          isShowOkBtnFalse.value = true; | 
|  | 97 | +          current.value = 0; | 
|  | 98 | +          isEdit.value = false; | 
|  | 99 | +          proxy.$refs.DeviceProfileStep1Ref.editOrAddNameStatus(false); | 
|  | 100 | +        } else if (isUpdate.value == 2) { | 
|  | 101 | +          isEdit.value = true; | 
|  | 102 | +          handleCancel(); | 
|  | 103 | +          isShowOkBtnFalse.value = true; | 
|  | 104 | +          current.value = 0; | 
|  | 105 | +          postEditId.value = data.record.id; | 
|  | 106 | +          postDefault.value = data.record.default; | 
|  | 107 | +          createTime.value = data.record.createTime; | 
|  | 108 | +          editTransportType.value = data.record.transportType; | 
|  | 109 | +          editData.value = await deviceConfigGetDetail(postEditId.value); | 
|  | 110 | +          proxy.$refs.DeviceProfileStep1Ref.setStepOneFieldsValueFunc({ | 
|  | 111 | +            name: editData.value.name, | 
|  | 112 | +            defaultRuleChainId: editData.value.defaultRuleChainId, | 
|  | 113 | +            defaultQueueName: editData.value.defaultQueueName, | 
|  | 114 | +            description: editData.value.description, | 
|  | 115 | +            image: editData.value.image, | 
|  | 116 | +          }); | 
|  | 117 | +          if (editData.value.default) { | 
|  | 118 | +            proxy.$refs.DeviceProfileStep1Ref.editOrAddNameStatus(true); | 
|  | 119 | +          } else { | 
|  | 120 | +            proxy.$refs.DeviceProfileStep1Ref.editOrAddNameStatus(false); | 
|  | 121 | +          } | 
|  | 122 | +          noEditObj = { | 
|  | 123 | +            id: editData.value.id, | 
|  | 124 | +            name: editData.value?.name, | 
|  | 125 | +            createTime: createTime.value, | 
|  | 126 | +            transportType: editTransportType.value, | 
|  | 127 | +            type: editData.value?.type, | 
|  | 128 | +            profileData: editData.value?.profileData, | 
|  | 129 | +            defaultQueueName: editData.value.defaultQueueName, | 
|  | 130 | +            image: editData.value.image, | 
|  | 131 | +            defaultRuleChainId: editData.value.defaultRuleChainId, | 
|  | 132 | +            description: editData.value.description, | 
|  | 133 | +            tenantId: editData.value.tenantId, | 
|  | 134 | +            default: editData.value.default, | 
|  | 135 | +          }; | 
|  | 136 | +        } else if (isUpdate.value == 3) { | 
|  | 137 | +          handleCancel(); | 
|  | 138 | +          isShowOkBtnFalse.value = false; | 
|  | 139 | +          current.value = 0; | 
|  | 140 | +          postEditId.value = data.record.id; | 
|  | 141 | +          createTime.value = data.record.createTime; | 
|  | 142 | +          editData.value = await deviceConfigGetDetail(postEditId.value); | 
|  | 143 | +          proxy.$refs.DeviceProfileStep1Ref.setStepOneFieldsValueFunc({ | 
|  | 144 | +            name: editData.value.name, | 
|  | 145 | +            defaultRuleChainId: editData.value.defaultRuleChainId, | 
|  | 146 | +            defaultQueueName: editData.value.defaultQueueName, | 
|  | 147 | +            description: editData.value.description, | 
|  | 148 | +            image: editData.value.image, | 
|  | 149 | +          }); | 
|  | 150 | +        } | 
|  | 151 | +      }); | 
|  | 152 | +      function handleStepPrev() { | 
|  | 153 | +        current.value--; | 
|  | 154 | +        if (isUpdate.value == 2) { | 
|  | 155 | +          isEdit.value = true; | 
|  | 156 | +          noEditObj = { | 
|  | 157 | +            id: editData.value.id, | 
|  | 158 | +            name: editData.value?.name, | 
|  | 159 | +            createTime: createTime.value, | 
|  | 160 | +            transportType: editTransportType.value, | 
|  | 161 | +            type: editData.value?.type, | 
|  | 162 | +            profileData: editData.value?.profileData, | 
|  | 163 | +            defaultQueueName: editData.value.defaultQueueName, | 
|  | 164 | +            image: editData.value.image, | 
|  | 165 | +            defaultRuleChainId: editData.value.defaultRuleChainId, | 
|  | 166 | +            description: editData.value.description, | 
|  | 167 | +            tenantId: editData.value.tenantId, | 
|  | 168 | +            default: editData.value.default, | 
|  | 169 | +          }; | 
|  | 170 | +          nextTick(async () => { | 
|  | 171 | +            let getPic = null; | 
|  | 172 | +            const getStep1Obj = await proxy.$refs.DeviceProfileStep1Ref?.getStep1Func(); | 
|  | 173 | +            getPic = getStep1Obj.icon; | 
|  | 174 | +            Object.assign(noEditObj, { image: getPic }, getStep1Obj.key); | 
|  | 175 | +          }); | 
| 114 | 176 | } | 
| 115 |  | -        noEditObj = { | 
| 116 |  | -          id: editData.value.id, | 
| 117 |  | -          name: editData.value?.name, | 
| 118 |  | -          createTime: createTime.value, | 
| 119 |  | -          transportType: editTransportType.value, | 
| 120 |  | -          type: editData.value?.type, | 
| 121 |  | -          profileData: editData.value?.profileData, | 
| 122 |  | -          defaultQueueName: editData.value.defaultQueueName, | 
| 123 |  | -          image: editData.value.image, | 
| 124 |  | -          defaultRuleChainId: editData.value.defaultRuleChainId, | 
| 125 |  | -          description: editData.value.description, | 
| 126 |  | -          tenantId: editData.value.tenantId, | 
| 127 |  | -        }; | 
| 128 |  | -      } else if (isUpdate.value == 3) { | 
| 129 |  | -        handleCancel(); | 
| 130 |  | -        isShowOkBtnFalse.value = false; | 
| 131 |  | -        current.value = 0; | 
| 132 |  | -        postEditId.value = data.record.id; | 
| 133 |  | -        createTime.value = data.record.createTime; | 
| 134 |  | -        editData.value = await deviceConfigGetDetail(postEditId.value); | 
| 135 |  | -        proxy.$refs.DeviceProfileStep1Ref.setStepOneFieldsValueFunc({ | 
| 136 |  | -          name: editData.value.name, | 
| 137 |  | -          defaultRuleChainId: editData.value.defaultRuleChainId, | 
| 138 |  | -          defaultQueueName: editData.value.defaultQueueName, | 
| 139 |  | -          description: editData.value.description, | 
| 140 |  | -          image: editData.value.image, | 
| 141 |  | -        }); | 
| 142 | 177 | } | 
| 143 |  | -    }); | 
| 144 |  | -    function handleStepPrev() { | 
| 145 |  | -      current.value--; | 
| 146 |  | -      if (isUpdate.value == 2) { | 
| 147 |  | -        isEdit.value = true; | 
| 148 |  | -        noEditObj = { | 
| 149 |  | -          id: editData.value.id, | 
| 150 |  | -          name: editData.value?.name, | 
| 151 |  | -          createTime: createTime.value, | 
| 152 |  | -          transportType: editTransportType.value, | 
| 153 |  | -          type: editData.value?.type, | 
| 154 |  | -          profileData: editData.value?.profileData, | 
| 155 |  | -          defaultQueueName: editData.value.defaultQueueName, | 
| 156 |  | -          image: editData.value.image, | 
| 157 |  | -          defaultRuleChainId: editData.value.defaultRuleChainId, | 
| 158 |  | -          description: editData.value.description, | 
| 159 |  | -          tenantId: editData.value.tenantId, | 
| 160 |  | -        }; | 
| 161 |  | -        nextTick(async () => { | 
| 162 |  | -          let getPic = null; | 
|  | 178 | +      //第一步 | 
|  | 179 | +      function handleStepNext1(v, v1) { | 
|  | 180 | +        isNextStatus.value = true; | 
|  | 181 | +        if (isNextStatus.value) { | 
|  | 182 | +          getStepOneData = { | 
|  | 183 | +            ...v, | 
|  | 184 | +            ...{ image: v1 }, | 
|  | 185 | +          }; | 
|  | 186 | +        } | 
|  | 187 | +        current.value++; | 
|  | 188 | +        if (isUpdate.value == 2) { | 
|  | 189 | +          isEdit.value = false; | 
|  | 190 | +          proxy.$refs.DeviceProfileStep2Ref?.setStepTwoFieldsValueFunc(editData.value); | 
|  | 191 | +        } else if (isUpdate.value == 3) { | 
|  | 192 | +          proxy.$refs.DeviceProfileStep2Ref?.setStepTwoFieldsValueFunc(editData.value); | 
|  | 193 | +        } | 
|  | 194 | +      } | 
|  | 195 | +      const handleSubmit = async () => { | 
|  | 196 | +        let getPic = null; | 
|  | 197 | +        getStepTwoData = await proxy.$refs.DeviceProfileStep2Ref?.getStep2DataFunc(); | 
|  | 198 | +        profileDataObj.profileData = getStepTwoData; | 
|  | 199 | +        transportTypeObj.transportType = getStepTwoData?.transportConfiguration?.transportType; | 
|  | 200 | +        delete profileDataObj?.profileData?.transportConfiguration?.transportType; | 
|  | 201 | +        //没有点击下一步 | 
|  | 202 | +        if (!isNextStatus.value) { | 
| 163 | 203 | const getStep1Obj = await proxy.$refs.DeviceProfileStep1Ref?.getStep1Func(); | 
| 164 | 204 | getPic = getStep1Obj.icon; | 
|  | 205 | +          getStepOneData = { | 
|  | 206 | +            ...getStep1Obj.key, | 
|  | 207 | +            ...{ image: getPic }, | 
|  | 208 | +          }; | 
| 165 | 209 | Object.assign(noEditObj, { image: getPic }, getStep1Obj.key); | 
| 166 |  | -        }); | 
| 167 |  | -      } | 
| 168 |  | -    } | 
| 169 |  | -    //第一步 | 
| 170 |  | -    function handleStepNext1(v, v1) { | 
| 171 |  | -      isNextStatus.value = true; | 
| 172 |  | -      if (isNextStatus.value) { | 
| 173 |  | -        getStepOneData = { | 
| 174 |  | -          ...v, | 
| 175 |  | -          ...{ image: v1 }, | 
| 176 |  | -        }; | 
| 177 |  | -      } | 
| 178 |  | -      current.value++; | 
| 179 |  | -      if (isUpdate.value == 2) { | 
| 180 |  | -        isEdit.value = false; | 
| 181 |  | -        proxy.$refs.DeviceProfileStep2Ref?.setStepTwoFieldsValueFunc(editData.value); | 
| 182 |  | -      } else if (isUpdate.value == 3) { | 
| 183 |  | -        proxy.$refs.DeviceProfileStep2Ref?.setStepTwoFieldsValueFunc(editData.value); | 
| 184 |  | -      } | 
| 185 |  | -    } | 
| 186 |  | -    const handleSubmit = async () => { | 
| 187 |  | -      let getPic = null; | 
| 188 |  | -      getStepTwoData = await proxy.$refs.DeviceProfileStep2Ref?.getStep2DataFunc(); | 
| 189 |  | -      profileDataObj.profileData = getStepTwoData; | 
| 190 |  | -      transportTypeObj.transportType = getStepTwoData?.transportConfiguration?.transportType; | 
| 191 |  | -      delete profileDataObj?.profileData?.transportConfiguration?.transportType; | 
| 192 |  | -      //没有点击下一步 | 
| 193 |  | -      if (!isNextStatus.value) { | 
| 194 |  | -        const getStep1Obj = await proxy.$refs.DeviceProfileStep1Ref?.getStep1Func(); | 
| 195 |  | -        getPic = getStep1Obj.icon; | 
| 196 |  | -        getStepOneData = { | 
| 197 |  | -          ...getStep1Obj.key, | 
| 198 |  | -          ...{ image: getPic }, | 
| 199 |  | -        }; | 
| 200 |  | -        Object.assign(noEditObj, { image: getPic }, getStep1Obj.key); | 
| 201 |  | -      } | 
| 202 |  | -      const id = isUpdate.value == 1 ? '' : postEditId.value; | 
| 203 |  | -      const createTimePost = isUpdate.value == 1 ? {} : { createTime: createTime.value }; | 
|  | 210 | +        } | 
|  | 211 | +        const id = isUpdate.value == 1 ? '' : postEditId.value; | 
|  | 212 | +        const postDefaultVal = | 
|  | 213 | +          isUpdate.value == 1 ? { default: false } : { default: postDefault.value }; | 
|  | 214 | +        const createTimePost = isUpdate.value == 1 ? {} : { createTime: createTime.value }; | 
| 204 | 215 |  | 
| 205 |  | -      if (Object.keys(getStepTwoData?.transportConfiguration).length == 0) { | 
| 206 |  | -        profileDataObj.profileData = null; | 
| 207 |  | -      } | 
| 208 |  | -      postDeviceConfogData = { | 
| 209 |  | -        ...getStepOneData, | 
| 210 |  | -        ...profileDataObj, | 
| 211 |  | -        ...transportTypeObj, | 
| 212 |  | -        id, | 
| 213 |  | -        ...createTimePost, | 
| 214 |  | -      }; | 
| 215 |  | -      if (isUpdate.value == 1) { | 
| 216 |  | -        delete postDeviceConfogData.id; | 
| 217 |  | -      } | 
| 218 |  | -      let isMappingsKey = ref(false); | 
| 219 |  | -      let isMappingValue = ref(false); | 
| 220 |  | -      let isQueryings = ref(false); | 
| 221 |  | -      let isOIDRepet = ref(false); | 
| 222 |  | -      postDeviceConfogData?.profileData?.transportConfiguration?.communicationConfigs?.forEach( | 
| 223 |  | -        (f: any) => { | 
| 224 |  | -          if (f.spec == 'TELEMETRY_QUERYING' || f.spec == 'CLIENT_ATTRIBUTES_QUERYING') { | 
| 225 |  | -            if (f.queryingFrequencyMs == null) { | 
| 226 |  | -              isQueryings.value = true; | 
| 227 |  | -              return createMessage.error('请填写查询频率'); | 
|  | 216 | +        if (Object.keys(getStepTwoData?.transportConfiguration).length == 0) { | 
|  | 217 | +          profileDataObj.profileData = null; | 
|  | 218 | +        } | 
|  | 219 | +        postDeviceConfogData = { | 
|  | 220 | +          ...getStepOneData, | 
|  | 221 | +          ...profileDataObj, | 
|  | 222 | +          ...transportTypeObj, | 
|  | 223 | +          id, | 
|  | 224 | +          ...postDefaultVal, | 
|  | 225 | +          ...createTimePost, | 
|  | 226 | +        }; | 
|  | 227 | +        if (isUpdate.value == 1) { | 
|  | 228 | +          delete postDeviceConfogData.id; | 
|  | 229 | +        } | 
|  | 230 | +        let isMappingsKey = ref(false); | 
|  | 231 | +        let isMappingValue = ref(false); | 
|  | 232 | +        let isQueryings = ref(false); | 
|  | 233 | +        let isOIDRepet = ref(false); | 
|  | 234 | +        postDeviceConfogData?.profileData?.transportConfiguration?.communicationConfigs?.forEach( | 
|  | 235 | +          (f: any) => { | 
|  | 236 | +            if (f.spec == 'TELEMETRY_QUERYING' || f.spec == 'CLIENT_ATTRIBUTES_QUERYING') { | 
|  | 237 | +              if (f.queryingFrequencyMs == null) { | 
|  | 238 | +                isQueryings.value = true; | 
|  | 239 | +                return createMessage.error('请填写查询频率'); | 
|  | 240 | +              } else { | 
|  | 241 | +                isQueryings.value = false; | 
|  | 242 | +              } | 
|  | 243 | +            } | 
|  | 244 | +            if (f.mappings.length == 0) { | 
|  | 245 | +              isMappingsKey.value = true; | 
|  | 246 | +              isMappingValue.value = true; | 
| 228 | 247 | } else { | 
| 229 |  | -              isQueryings.value = false; | 
|  | 248 | +              f.mappings.forEach((f1) => { | 
|  | 249 | +                const findNoneKey = Object.keys(f1).includes(''); | 
|  | 250 | +                if (findNoneKey) { | 
|  | 251 | +                  isMappingsKey.value = true; | 
|  | 252 | +                } | 
|  | 253 | +              }); | 
|  | 254 | +              f.mappings.forEach((f2) => { | 
|  | 255 | +                const findNoneVal = Object.values(f2).includes(''); | 
|  | 256 | +                if (findNoneVal) { | 
|  | 257 | +                  isMappingValue.value = true; | 
|  | 258 | +                } | 
|  | 259 | +              }); | 
|  | 260 | +              //新增OID不能重复=====同一层级的OID不能重复 | 
|  | 261 | +              f.mappings.forEach((item, _) => { | 
|  | 262 | +                if (f.mappings.some((citem) => citem !== item && citem.oid === item.oid)) { | 
|  | 263 | +                  isOIDRepet.value = true; | 
|  | 264 | +                } | 
|  | 265 | +              }); | 
| 230 | 266 | } | 
| 231 | 267 | } | 
| 232 |  | -          if (f.mappings.length == 0) { | 
| 233 |  | -            isMappingsKey.value = true; | 
| 234 |  | -            isMappingValue.value = true; | 
| 235 |  | -          } else { | 
| 236 |  | -            f.mappings.forEach((f1) => { | 
| 237 |  | -              const findNoneKey = Object.keys(f1).includes(''); | 
| 238 |  | -              if (findNoneKey) { | 
| 239 |  | -                isMappingsKey.value = true; | 
| 240 |  | -              } | 
| 241 |  | -            }); | 
| 242 |  | -            f.mappings.forEach((f2) => { | 
| 243 |  | -              const findNoneVal = Object.values(f2).includes(''); | 
| 244 |  | -              if (findNoneVal) { | 
| 245 |  | -                isMappingValue.value = true; | 
| 246 |  | -              } | 
| 247 |  | -            }); | 
| 248 |  | -            //新增OID不能重复=====同一层级的OID不能重复 | 
| 249 |  | -            f.mappings.forEach((item, _) => { | 
| 250 |  | -              if (f.mappings.some((citem) => citem !== item && citem.oid === item.oid)) { | 
| 251 |  | -                isOIDRepet.value = true; | 
| 252 |  | -              } | 
| 253 |  | -            }); | 
| 254 |  | -          } | 
| 255 |  | -        } | 
| 256 |  | -      ); | 
| 257 |  | -      if (isQueryings.value) return createMessage.error('请填写查询频率'); | 
| 258 |  | -      if (isMappingsKey.value) return createMessage.error('请填写Date key和OID'); | 
| 259 |  | -      if (isMappingValue.value) return createMessage.error('请填写Date key和OID'); | 
| 260 |  | -      if (isOIDRepet.value) return createMessage.error('OID不能重复'); | 
| 261 |  | -      deviceConfigAddOrEdit(isEdit.value ? noEditObj : postDeviceConfogData) | 
| 262 |  | -        .then((res) => { | 
| 263 |  | -          if (!res) return; | 
| 264 |  | -          createMessage.success(isUpdate.value == 1 ? '新增' + '成功' : '编辑' + '成功'); | 
| 265 |  | -          closeModal(); | 
| 266 |  | -          emit('success'); | 
| 267 |  | -          isNextStatus.value = false; | 
| 268 |  | -        }) | 
| 269 |  | -        .catch((e) => { | 
| 270 |  | -          // createMessage.error(e); | 
|  | 268 | +        ); | 
|  | 269 | +        if (isQueryings.value) return createMessage.error('请填写查询频率'); | 
|  | 270 | +        if (isMappingsKey.value) return createMessage.error('请填写Date key和OID'); | 
|  | 271 | +        if (isMappingValue.value) return createMessage.error('请填写Date key和OID'); | 
|  | 272 | +        if (isOIDRepet.value) return createMessage.error('OID不能重复'); | 
|  | 273 | +        deviceConfigAddOrEdit(isEdit.value ? noEditObj : postDeviceConfogData) | 
|  | 274 | +          .then((res) => { | 
|  | 275 | +            if (!res) return; | 
|  | 276 | +            createMessage.success(isUpdate.value == 1 ? '新增' + '成功' : '编辑' + '成功'); | 
|  | 277 | +            closeModal(); | 
|  | 278 | +            emit('success'); | 
|  | 279 | +            isNextStatus.value = false; | 
|  | 280 | +          }) | 
|  | 281 | +          .catch((e) => { | 
|  | 282 | +            // createMessage.error(e); | 
|  | 283 | +          }); | 
|  | 284 | +      }; | 
|  | 285 | +      const handleCancel = () => { | 
|  | 286 | +        nextTick(() => { | 
|  | 287 | +          proxy.$refs.DeviceProfileStep1Ref?.customResetStepOneFunc(); | 
|  | 288 | +          proxy.$refs.DeviceProfileStep2Ref?.customClearStepTwoValueFunc(); | 
| 271 | 289 | }); | 
| 272 |  | -    }; | 
| 273 |  | -    const handleCancel = () => { | 
| 274 |  | -      nextTick(() => { | 
| 275 |  | -        proxy.$refs.DeviceProfileStep1Ref?.customResetStepOneFunc(); | 
| 276 |  | -        proxy.$refs.DeviceProfileStep2Ref?.customClearStepTwoValueFunc(); | 
| 277 |  | -      }); | 
| 278 |  | -    }; | 
| 279 |  | -    function handleRedo() { | 
| 280 |  | -      current.value = 0; | 
| 281 |  | -    } | 
| 282 |  | -    return { | 
| 283 |  | -      isShowOkBtnFalse, | 
| 284 |  | -      DeviceProfileStep2Ref, | 
| 285 |  | -      DeviceProfileStep1Ref, | 
| 286 |  | -      editData, | 
| 287 |  | -      handleSubmit, | 
| 288 |  | -      handleCancel, | 
| 289 |  | -      register, | 
| 290 |  | -      getTitle, | 
| 291 |  | -      getViewTitle, | 
| 292 |  | -      current, | 
| 293 |  | -      handleStepPrev, | 
| 294 |  | -      handleStepNext1, | 
| 295 |  | -      handleRedo, | 
| 296 |  | -    }; | 
| 297 |  | -  }, | 
| 298 |  | -}); | 
|  | 290 | +      }; | 
|  | 291 | +      function handleRedo() { | 
|  | 292 | +        current.value = 0; | 
|  | 293 | +      } | 
|  | 294 | +      return { | 
|  | 295 | +        isShowOkBtnFalse, | 
|  | 296 | +        DeviceProfileStep2Ref, | 
|  | 297 | +        DeviceProfileStep1Ref, | 
|  | 298 | +        editData, | 
|  | 299 | +        handleSubmit, | 
|  | 300 | +        handleCancel, | 
|  | 301 | +        register, | 
|  | 302 | +        getTitle, | 
|  | 303 | +        getViewTitle, | 
|  | 304 | +        current, | 
|  | 305 | +        handleStepPrev, | 
|  | 306 | +        handleStepNext1, | 
|  | 307 | +        handleRedo, | 
|  | 308 | +      }; | 
|  | 309 | +    }, | 
|  | 310 | +  }); | 
| 299 | 311 | </script> | 
... | ... |  |