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,7 +19,12 @@ | ||
19 | import { ModeSwitchButton, EnumTableCardMode } from '/@/components/Widget'; | 19 | import { ModeSwitchButton, EnumTableCardMode } from '/@/components/Widget'; |
20 | import { toRaw } from 'vue'; | 20 | import { toRaw } from 'vue'; |
21 | import { DataActionModeEnum } from '/@/enums/toolEnum'; | 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 | import { ObjectModelCommandDeliveryModal } from './ObjectModelCommandDeliveryModal'; | 28 | import { ObjectModelCommandDeliveryModal } from './ObjectModelCommandDeliveryModal'; |
24 | import { ModalParamsType } from '/#/utils'; | 29 | import { ModalParamsType } from '/#/utils'; |
25 | import { AreaChartOutlined } from '@ant-design/icons-vue'; | 30 | import { AreaChartOutlined } from '@ant-design/icons-vue'; |
@@ -312,7 +317,7 @@ | @@ -312,7 +317,7 @@ | ||
312 | 317 | ||
313 | switch (item.type) { | 318 | switch (item.type) { |
314 | case DataTypeEnum.BOOL: | 319 | case DataTypeEnum.BOOL: |
315 | - return !!Number(item.value) ? item.boolOpen : item.boolClose; | 320 | + return !!Number(item.value) ? item.boolOpen! : item.boolClose!; |
316 | case DataTypeEnum.ENUM: | 321 | case DataTypeEnum.ENUM: |
317 | return item.enum?.[item.value as string]; | 322 | return item.enum?.[item.value as string]; |
318 | default: | 323 | default: |
@@ -328,6 +333,24 @@ | @@ -328,6 +333,24 @@ | ||
328 | } as ModalParamsType); | 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 | onMounted(() => { | 354 | onMounted(() => { |
332 | const element = unref(listElRef)?.$el; | 355 | const element = unref(listElRef)?.$el; |
333 | if (!element) return; | 356 | if (!element) return; |
@@ -391,7 +414,10 @@ | @@ -391,7 +414,10 @@ | ||
391 | <SvgIcon | 414 | <SvgIcon |
392 | name="send-command" | 415 | name="send-command" |
393 | prefix="iconfont" | 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 | class="cursor-pointer text-lg text-blue-500" | 421 | class="cursor-pointer text-lg text-blue-500" |
396 | @click="handleSendCommandModal(item)" | 422 | @click="handleSendCommandModal(item)" |
397 | /> | 423 | /> |
@@ -87,6 +87,12 @@ export const getFormSchemas = ({ | @@ -87,6 +87,12 @@ export const getFormSchemas = ({ | ||
87 | isTCPTransport && | 87 | isTCPTransport && |
88 | deviceRecord?.profileData.transportConfiguration.protocol === TCPProtocolTypeEnum.MODBUS_RTU; | 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 | return [ | 96 | return [ |
91 | { | 97 | { |
92 | field: FormFieldsEnum.FUNCTION_TYPE, | 98 | field: FormFieldsEnum.FUNCTION_TYPE, |
@@ -160,9 +166,20 @@ export const getFormSchemas = ({ | @@ -160,9 +166,20 @@ export const getFormSchemas = ({ | ||
160 | ![FunctionTypeEnum.SERVICE, FunctionTypeEnum.EVENTS].includes( | 166 | ![FunctionTypeEnum.SERVICE, FunctionTypeEnum.EVENTS].includes( |
161 | model[FormFieldsEnum.FUNCTION_TYPE] | 167 | model[FormFieldsEnum.FUNCTION_TYPE] |
162 | ) && !isTCPModbusProduct, | 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 | componentProps: { | 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 | params: { | 183 | params: { |
167 | dictCode: DictEnum.READ_WRITE_TYP, | 184 | dictCode: DictEnum.READ_WRITE_TYP, |
168 | }, | 185 | }, |