Commit f0efeb2ba028fc324c73b0d126a1329ee8e6d0ea
Merge branch 'fix/DEFECT-2890' into 'main_dev'
perf: 优化自定义TCP网关与网关子设备物模型属性应为只读 See merge request yunteng/thingskit-front!1512
Showing
2 changed files
with
48 additions
and
5 deletions
| ... | ... | @@ -19,7 +19,12 @@ |
| 19 | 19 | import { ModeSwitchButton, EnumTableCardMode } from '/@/components/Widget'; |
| 20 | 20 | import { toRaw } from 'vue'; |
| 21 | 21 | import { DataActionModeEnum } from '/@/enums/toolEnum'; |
| 22 | - import { ReadAndWriteEnum, TCPProtocolTypeEnum, TransportTypeEnum } from '/@/enums/deviceEnum'; | |
| 22 | + import { | |
| 23 | + DeviceTypeEnum, | |
| 24 | + ReadAndWriteEnum, | |
| 25 | + TCPProtocolTypeEnum, | |
| 26 | + TransportTypeEnum, | |
| 27 | + } from '/@/enums/deviceEnum'; | |
| 23 | 28 | import { ObjectModelCommandDeliveryModal } from './ObjectModelCommandDeliveryModal'; |
| 24 | 29 | import { ModalParamsType } from '/#/utils'; |
| 25 | 30 | import { AreaChartOutlined } from '@ant-design/icons-vue'; |
| ... | ... | @@ -312,7 +317,7 @@ |
| 312 | 317 | |
| 313 | 318 | switch (item.type) { |
| 314 | 319 | case DataTypeEnum.BOOL: |
| 315 | - return !!Number(item.value) ? item.boolOpen : item.boolClose; | |
| 320 | + return !!Number(item.value) ? item.boolOpen! : item.boolClose!; | |
| 316 | 321 | case DataTypeEnum.ENUM: |
| 317 | 322 | return item.enum?.[item.value as string]; |
| 318 | 323 | default: |
| ... | ... | @@ -328,6 +333,24 @@ |
| 328 | 333 | } as ModalParamsType); |
| 329 | 334 | }; |
| 330 | 335 | |
| 336 | + const isTCPCustomProtocolType = computed(() => { | |
| 337 | + const isTCPType = props.deviceDetail.transportType === TransportTypeEnum.TCP; | |
| 338 | + | |
| 339 | + return ( | |
| 340 | + isTCPType && | |
| 341 | + props.deviceDetail.deviceProfile?.profileData?.transportConfiguration?.protocol === | |
| 342 | + TCPProtocolTypeEnum.CUSTOM | |
| 343 | + ); | |
| 344 | + }); | |
| 345 | + | |
| 346 | + const isGatewayOrSensorTCPCustomDevice = computed( | |
| 347 | + () => | |
| 348 | + unref(isTCPCustomProtocolType) && | |
| 349 | + [DeviceTypeEnum.GATEWAY, DeviceTypeEnum.SENSOR].includes( | |
| 350 | + props.deviceDetail.deviceType as DeviceTypeEnum | |
| 351 | + ) | |
| 352 | + ); | |
| 353 | + | |
| 331 | 354 | onMounted(() => { |
| 332 | 355 | const element = unref(listElRef)?.$el; |
| 333 | 356 | if (!element) return; |
| ... | ... | @@ -391,7 +414,10 @@ |
| 391 | 414 | <SvgIcon |
| 392 | 415 | name="send-command" |
| 393 | 416 | prefix="iconfont" |
| 394 | - v-if="ReadAndWriteEnum.READ_AND_WRITE === item.accessMode" | |
| 417 | + v-if=" | |
| 418 | + ReadAndWriteEnum.READ_AND_WRITE === item.accessMode && | |
| 419 | + !isGatewayOrSensorTCPCustomDevice | |
| 420 | + " | |
| 395 | 421 | class="cursor-pointer text-lg text-blue-500" |
| 396 | 422 | @click="handleSendCommandModal(item)" |
| 397 | 423 | /> | ... | ... |
| ... | ... | @@ -87,6 +87,12 @@ export const getFormSchemas = ({ |
| 87 | 87 | isTCPTransport && |
| 88 | 88 | deviceRecord?.profileData.transportConfiguration.protocol === TCPProtocolTypeEnum.MODBUS_RTU; |
| 89 | 89 | |
| 90 | + const isTCPCustomProdcut = | |
| 91 | + isTCPTransport && | |
| 92 | + deviceRecord?.profileData.transportConfiguration.protocol === TCPProtocolTypeEnum.CUSTOM; | |
| 93 | + | |
| 94 | + const deviceType = deviceRecord?.deviceType; | |
| 95 | + | |
| 90 | 96 | return [ |
| 91 | 97 | { |
| 92 | 98 | field: FormFieldsEnum.FUNCTION_TYPE, |
| ... | ... | @@ -160,9 +166,20 @@ export const getFormSchemas = ({ |
| 160 | 166 | ![FunctionTypeEnum.SERVICE, FunctionTypeEnum.EVENTS].includes( |
| 161 | 167 | model[FormFieldsEnum.FUNCTION_TYPE] |
| 162 | 168 | ) && !isTCPModbusProduct, |
| 163 | - defaultValue: ObjectModelAccessModeEnum.READ_AND_WRITE, | |
| 169 | + defaultValue: | |
| 170 | + isTCPCustomProdcut && deviceType !== DeviceTypeEnum.DIRECT_CONNECTION | |
| 171 | + ? ObjectModelAccessModeEnum.READ | |
| 172 | + : ObjectModelAccessModeEnum.READ_AND_WRITE, | |
| 164 | 173 | componentProps: { |
| 165 | - api: findDictItemByCode, | |
| 174 | + api: async (params) => { | |
| 175 | + const res = await findDictItemByCode(params); | |
| 176 | + | |
| 177 | + // if (isTCPCustomProdcut && deviceType !== DeviceTypeEnum.DIRECT_CONNECTION) { | |
| 178 | + // res = res.filter((item) => item.itemValue === ObjectModelAccessModeEnum.READ); | |
| 179 | + // } | |
| 180 | + | |
| 181 | + return res; | |
| 182 | + }, | |
| 166 | 183 | params: { |
| 167 | 184 | dictCode: DictEnum.READ_WRITE_TYP, |
| 168 | 185 | }, | ... | ... |