Commit ab71cfd74b2d6d3236c51ac68e1481de92517c50

Authored by ww
1 parent 61ab426c

fix: DEFECT-1266 修复场景联动设备为TCP设备时选择服务未将服务命令保存

... ... @@ -607,9 +607,10 @@ export const actionSchema: FormSchema[] = [
607 607 span: 6,
608 608 },
609 609 componentProps: ({ formModel, formActionType }) => {
610   - const { updateSchema } = formActionType;
  610 + const { updateSchema, setFieldsValue } = formActionType;
611 611 const deviceProfileId = Reflect.get(formModel, 'deviceProfileId');
612 612 const thingsModelId = Reflect.get(formModel, 'thingsModelId');
  613 + const transportType = Reflect.get(formModel, 'transportType');
613 614 return {
614 615 placeholder: '请选择服务',
615 616 api: async (params: Recordable) => {
... ... @@ -640,12 +641,16 @@ export const actionSchema: FormSchema[] = [
640 641 onChange: (_, options: ModelOfMatterParams) => {
641 642 if (options) {
642 643 // setFieldsValue({ doContext: { ...options.functionJson, callType: options.callType } });
643   - updateSchema({
644   - field: 'serviceInputValue',
645   - componentProps: {
646   - inputData: options.functionJson.inputData,
647   - },
648   - });
  644 + transportType === TransportTypeEnum.TCP
  645 + ? setFieldsValue({
  646 + tcpServiceCommand: options.functionJson?.inputData?.[0]?.serviceCommand,
  647 + })
  648 + : updateSchema({
  649 + field: 'serviceInputValue',
  650 + componentProps: {
  651 + inputData: options.functionJson.inputData,
  652 + },
  653 + });
649 654 }
650 655 },
651 656 };
... ... @@ -725,12 +730,22 @@ export const actionSchema: FormSchema[] = [
725 730 slot: 'clearAlarm',
726 731 },
727 732 {
  733 + field: 'tcpServiceCommand',
  734 + component: 'Input',
  735 + label: '服务命令',
  736 + colProps: { span: 24 },
  737 + dynamicDisabled: true,
  738 + show: ({ values }) =>
  739 + values['thingsModelId'] && values['transportType'] === TransportTypeEnum.TCP,
  740 + },
  741 + {
728 742 field: 'serviceInputValue',
729 743 component: 'ObjectModelValidateForm',
730 744 label: '',
731 745 changeEvent: 'update:value',
732 746 valueField: 'value',
733   - show: ({ values }) => values['thingsModelId'],
  747 + show: ({ values }) =>
  748 + values['thingsModelId'] && values['transportType'] !== TransportTypeEnum.TCP,
734 749 colProps: {
735 750 span: 24,
736 751 },
... ...
... ... @@ -94,7 +94,7 @@
94 94
95 95 <script lang="ts">
96 96 import { defineComponent } from 'vue';
97   - import { isNumber } from '/@/utils/is';
  97 + import { isNumber, isObject, isString } from '/@/utils/is';
98 98 import { TransportTypeEnum } from '/@/views/device/profiles/components/TransportDescript/const';
99 99 export default defineComponent({
100 100 components: {
... ... @@ -272,12 +272,11 @@
272 272 const isTCPTransportType = value.transportType === TransportTypeEnum.TCP;
273 273 const doContext = unref(jsonInstance)?.get() || {};
274 274 const serviceInputValue = Reflect.get(value, 'serviceInputValue');
275   -
276 275 return {
277 276 ...value,
278 277 ...(Number(value.commandType) === CommandTypeEnum.CUSTOM
279 278 ? { doContext: isTCPTransportType ? value.doContext : doContext }
280   - : { doContext: serviceInputValue }),
  279 + : { doContext: isTCPTransportType ? value.tcpServiceCommand : serviceInputValue }),
281 280 clearRule,
282 281 };
283 282 };
... ... @@ -291,7 +290,10 @@
291 290 ? { commandType: String(fieldsValue.commandType) }
292 291 : {}),
293 292 ...(commandType === CommandTypeEnum.SERVICE
294   - ? { serviceInputValue: doContext.params || {} }
  293 + ? {
  294 + serviceInputValue: isObject(doContext.params) ? doContext.params : {},
  295 + tcpServiceCommand: isString(doContext.params) ? doContext.params : '',
  296 + }
295 297 : { doContext: doContext.params }),
296 298 });
297 299 };
... ...