Commit 6c8c663414182a343191f74b4a167bf751ef7d89
1 parent
bdebc0d0
fix: only gateway subdevice disabled service and events panel on model of matter
Showing
3 changed files
with
27 additions
and
26 deletions
... | ... | @@ -24,16 +24,8 @@ |
24 | 24 | :size="size" |
25 | 25 | > |
26 | 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 | 29 | </Tabs> |
38 | 30 | <Attribute v-if="activeKey === FunctionType.PROPERTIES" ref="AttrRef" /> |
39 | 31 | <Service |
... | ... | @@ -51,7 +43,7 @@ |
51 | 43 | </div> |
52 | 44 | </template> |
53 | 45 | <script lang="ts" setup> |
54 | - import { ref, unref, nextTick } from 'vue'; | |
46 | + import { ref, unref, nextTick, computed } from 'vue'; | |
55 | 47 | import { BasicModal, useModalInner } from '/@/components/Modal'; |
56 | 48 | import { Tabs, TabPane, Typography, TypographyParagraph } from 'ant-design-vue'; |
57 | 49 | import Attribute from './cpns/Attribute.vue'; |
... | ... | @@ -59,7 +51,7 @@ |
59 | 51 | import Events from './cpns/Events.vue'; |
60 | 52 | import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; |
61 | 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 | 55 | import { useMessage } from '/@/hooks/web/useMessage'; |
64 | 56 | import { OpenModelMode, OpenModelOfMatterModelParams } from './types/index'; |
65 | 57 | import { FunctionType } from './cpns/config'; |
... | ... | @@ -70,6 +62,12 @@ |
70 | 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 | 71 | const blockContent = `属性一般是设备的运行状态,如当前温度等;服务是设备可被调用的方法,支持定义参数,如执行某项任务;事件则是设备上报的 |
74 | 72 | 通知,如告警,需要被及时处理。`; |
75 | 73 | const activeKey = ref<FunctionType>(FunctionType.PROPERTIES); |
... | ... | @@ -155,6 +153,7 @@ |
155 | 153 | closeModal(); |
156 | 154 | emit('success'); |
157 | 155 | } catch (error) { |
156 | + throw Error(error); | |
158 | 157 | } finally { |
159 | 158 | setModalProps({ loading: false, okButtonProps: { loading: false } }); |
160 | 159 | } | ... | ... |
... | ... | @@ -28,7 +28,10 @@ |
28 | 28 | //回显数据 |
29 | 29 | const setFormData = (record: ModelOfMatterParams) => { |
30 | 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 | 35 | const value = { |
33 | 36 | functionName, |
34 | 37 | identifier, |
... | ... | @@ -48,8 +51,8 @@ |
48 | 51 | functionName, |
49 | 52 | remark, |
50 | 53 | identifier, |
51 | - inputData: _inputData, | |
52 | - outputData: _outputData, | |
54 | + inputData: _inputData = [], | |
55 | + outputData: _outputData = [], | |
53 | 56 | serviceCommand, |
54 | 57 | callType, |
55 | 58 | } = _values; |
... | ... | @@ -71,7 +74,7 @@ |
71 | 74 | functionJson: { |
72 | 75 | inputData, |
73 | 76 | outputData, |
74 | - serviceCommand, | |
77 | + ...(serviceCommand ? { inputData: [{ serviceCommand }] } : {}), | |
75 | 78 | }, |
76 | 79 | } as ModelOfMatterParams; |
77 | 80 | ... | ... |
... | ... | @@ -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 | 125 | field: FormField.INPUT_PARAM, |
117 | 126 | label: '输入参数', |
118 | 127 | component: 'StructForm', |
... | ... | @@ -127,19 +136,9 @@ export const serviceSchemas = (tcpDeviceFlag: boolean): FormSchema[] => { |
127 | 136 | component: 'StructForm', |
128 | 137 | valueField: 'value', |
129 | 138 | changeEvent: 'update:value', |
130 | - ifShow: !tcpDeviceFlag, | |
131 | 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 | 142 | field: FormField.REFARK, |
144 | 143 | label: '备注', |
145 | 144 | component: 'InputTextArea', | ... | ... |