Commit 6c8c663414182a343191f74b4a167bf751ef7d89

Authored by ww
1 parent bdebc0d0

fix: only gateway subdevice disabled service and events panel on model of matter

@@ -24,16 +24,8 @@ @@ -24,16 +24,8 @@
24 :size="size" 24 :size="size"
25 > 25 >
26 <TabPane :key="FunctionType.PROPERTIES" tab="属性" /> 26 <TabPane :key="FunctionType.PROPERTIES" tab="属性" />
27 - <TabPane  
28 - :key="FunctionType.SERVICE"  
29 - :disabled="$props.record.transportType === 'TCP'"  
30 - tab="服务"  
31 - />  
32 - <TabPane  
33 - :key="FunctionType.EVENTS"  
34 - tab="事件"  
35 - :disabled="$props.record.transportType === 'TCP'"  
36 - /> 27 + <TabPane :key="FunctionType.SERVICE" :disabled="isTCPGatewaySubDevice" tab="服务" />
  28 + <TabPane :key="FunctionType.EVENTS" tab="事件" :disabled="isTCPGatewaySubDevice" />
37 </Tabs> 29 </Tabs>
38 <Attribute v-if="activeKey === FunctionType.PROPERTIES" ref="AttrRef" /> 30 <Attribute v-if="activeKey === FunctionType.PROPERTIES" ref="AttrRef" />
39 <Service 31 <Service
@@ -51,7 +43,7 @@ @@ -51,7 +43,7 @@
51 </div> 43 </div>
52 </template> 44 </template>
53 <script lang="ts" setup> 45 <script lang="ts" setup>
54 - import { ref, unref, nextTick } from 'vue'; 46 + import { ref, unref, nextTick, computed } from 'vue';
55 import { BasicModal, useModalInner } from '/@/components/Modal'; 47 import { BasicModal, useModalInner } from '/@/components/Modal';
56 import { Tabs, TabPane, Typography, TypographyParagraph } from 'ant-design-vue'; 48 import { Tabs, TabPane, Typography, TypographyParagraph } from 'ant-design-vue';
57 import Attribute from './cpns/Attribute.vue'; 49 import Attribute from './cpns/Attribute.vue';
@@ -59,7 +51,7 @@ @@ -59,7 +51,7 @@
59 import Events from './cpns/Events.vue'; 51 import Events from './cpns/Events.vue';
60 import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; 52 import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel';
61 import { createModel, updateModel } from '/@/api/device/modelOfMatter'; 53 import { createModel, updateModel } from '/@/api/device/modelOfMatter';
62 - import { DeviceRecord } from '/@/api/device/model/deviceModel'; 54 + import { DeviceRecord, DeviceTypeEnum } from '/@/api/device/model/deviceModel';
63 import { useMessage } from '/@/hooks/web/useMessage'; 55 import { useMessage } from '/@/hooks/web/useMessage';
64 import { OpenModelMode, OpenModelOfMatterModelParams } from './types/index'; 56 import { OpenModelMode, OpenModelOfMatterModelParams } from './types/index';
65 import { FunctionType } from './cpns/config'; 57 import { FunctionType } from './cpns/config';
@@ -70,6 +62,12 @@ @@ -70,6 +62,12 @@
70 record: DeviceRecord; 62 record: DeviceRecord;
71 }>(); 63 }>();
72 64
  65 + const isTCPGatewaySubDevice = computed(() => {
  66 + const { record } = props;
  67 + const { deviceType, transportType } = record;
  68 + return deviceType === DeviceTypeEnum.SENSOR && transportType === 'TCP';
  69 + });
  70 +
73 const blockContent = `属性一般是设备的运行状态,如当前温度等;服务是设备可被调用的方法,支持定义参数,如执行某项任务;事件则是设备上报的 71 const blockContent = `属性一般是设备的运行状态,如当前温度等;服务是设备可被调用的方法,支持定义参数,如执行某项任务;事件则是设备上报的
74 通知,如告警,需要被及时处理。`; 72 通知,如告警,需要被及时处理。`;
75 const activeKey = ref<FunctionType>(FunctionType.PROPERTIES); 73 const activeKey = ref<FunctionType>(FunctionType.PROPERTIES);
@@ -155,6 +153,7 @@ @@ -155,6 +153,7 @@
155 closeModal(); 153 closeModal();
156 emit('success'); 154 emit('success');
157 } catch (error) { 155 } catch (error) {
  156 + throw Error(error);
158 } finally { 157 } finally {
159 setModalProps({ loading: false, okButtonProps: { loading: false } }); 158 setModalProps({ loading: false, okButtonProps: { loading: false } });
160 } 159 }
@@ -28,7 +28,10 @@ @@ -28,7 +28,10 @@
28 //回显数据 28 //回显数据
29 const setFormData = (record: ModelOfMatterParams) => { 29 const setFormData = (record: ModelOfMatterParams) => {
30 const { functionJson = {}, functionName, identifier, remark, callType } = record; 30 const { functionJson = {}, functionName, identifier, remark, callType } = record;
31 - const { inputData, outputData, serviceCommand } = functionJson; 31 + const { inputData = [], outputData } = functionJson;
  32 + const { serviceCommand } =
  33 + (inputData.at(0) as unknown as { serviceCommand: string }) ||
  34 + ({} as { serviceCommand: string });
32 const value = { 35 const value = {
33 functionName, 36 functionName,
34 identifier, 37 identifier,
@@ -48,8 +51,8 @@ @@ -48,8 +51,8 @@
48 functionName, 51 functionName,
49 remark, 52 remark,
50 identifier, 53 identifier,
51 - inputData: _inputData,  
52 - outputData: _outputData, 54 + inputData: _inputData = [],
  55 + outputData: _outputData = [],
53 serviceCommand, 56 serviceCommand,
54 callType, 57 callType,
55 } = _values; 58 } = _values;
@@ -71,7 +74,7 @@ @@ -71,7 +74,7 @@
71 functionJson: { 74 functionJson: {
72 inputData, 75 inputData,
73 outputData, 76 outputData,
74 - serviceCommand, 77 + ...(serviceCommand ? { inputData: [{ serviceCommand }] } : {}),
75 }, 78 },
76 } as ModelOfMatterParams; 79 } as ModelOfMatterParams;
77 80
@@ -113,6 +113,15 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { @@ -113,6 +113,15 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => {
113 }, 113 },
114 }, 114 },
115 { 115 {
  116 + field: FormField.SERVICE_COMMAND,
  117 + label: '输入参数',
  118 + component: 'Input',
  119 + ifShow: tcpDeviceFlag,
  120 + componentProps: {
  121 + placeholder: '请输入ASCII或HEX服务命令',
  122 + },
  123 + },
  124 + {
116 field: FormField.INPUT_PARAM, 125 field: FormField.INPUT_PARAM,
117 label: '输入参数', 126 label: '输入参数',
118 component: 'StructForm', 127 component: 'StructForm',
@@ -127,19 +136,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { @@ -127,19 +136,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => {
127 component: 'StructForm', 136 component: 'StructForm',
128 valueField: 'value', 137 valueField: 'value',
129 changeEvent: 'update:value', 138 changeEvent: 'update:value',
130 - ifShow: !tcpDeviceFlag,  
131 colProps: { span: 24 }, 139 colProps: { span: 24 },
132 }, 140 },
133 { 141 {
134 - field: FormField.SERVICE_COMMAND,  
135 - label: '服务命令',  
136 - component: 'Input',  
137 - ifShow: tcpDeviceFlag,  
138 - componentProps: {  
139 - placeholder: '请输入服务命令',  
140 - },  
141 - },  
142 - {  
143 field: FormField.REFARK, 142 field: FormField.REFARK,
144 label: '备注', 143 label: '备注',
145 component: 'InputTextArea', 144 component: 'InputTextArea',