Commit a713a3d97ca75c0210d1a8bc2b5d3bb0123a6201

Authored by ww
1 parent 765b5b97

perf: 优化自定义TCP网关与网关子设备物模型属性应为只读

... ... @@ -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 },
... ...