Commit c4ef059ccd95b9685e2a2b88991d85a20a1cf305
1 parent
1281e6e8
fix: DEFECT-1118 修复场景联动tcp设备下发指令为字符串
Showing
3 changed files
with
48 additions
and
8 deletions
@@ -13,6 +13,8 @@ import { queryDeviceProfileBy } from '/@/api/device/deviceManager'; | @@ -13,6 +13,8 @@ import { queryDeviceProfileBy } from '/@/api/device/deviceManager'; | ||
13 | import { getModelServices } from '/@/api/device/modelOfMatter'; | 13 | import { getModelServices } from '/@/api/device/modelOfMatter'; |
14 | import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; | 14 | import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; |
15 | import useCommonFun from '../hooks/useCommonFun'; | 15 | import useCommonFun from '../hooks/useCommonFun'; |
16 | +import { DeviceProfileModel } from '/@/api/device/model/deviceModel'; | ||
17 | +import { TransportTypeEnum } from '/@/views/device/profiles/components/TransportDescript/const'; | ||
16 | 18 | ||
17 | const { useByProductGetAttribute } = useCommonFun(); | 19 | const { useByProductGetAttribute } = useCommonFun(); |
18 | export type TOption = { | 20 | export type TOption = { |
@@ -443,6 +445,12 @@ export const actionSchema: FormSchema[] = [ | @@ -443,6 +445,12 @@ export const actionSchema: FormSchema[] = [ | ||
443 | ifShow: ({ values }) => isDeviceOut(values.outTarget), | 445 | ifShow: ({ values }) => isDeviceOut(values.outTarget), |
444 | }, | 446 | }, |
445 | { | 447 | { |
448 | + field: 'transportType', | ||
449 | + label: '', | ||
450 | + component: 'Input', | ||
451 | + show: false, | ||
452 | + }, | ||
453 | + { | ||
446 | field: 'deviceProfileId', | 454 | field: 'deviceProfileId', |
447 | label: '', | 455 | label: '', |
448 | component: 'ApiSelect', | 456 | component: 'ApiSelect', |
@@ -459,8 +467,28 @@ export const actionSchema: FormSchema[] = [ | @@ -459,8 +467,28 @@ export const actionSchema: FormSchema[] = [ | ||
459 | labelField: 'name', | 467 | labelField: 'name', |
460 | valueField: 'id', | 468 | valueField: 'id', |
461 | getPopupContainer: () => document.body, | 469 | getPopupContainer: () => document.body, |
462 | - onChange: () => { | ||
463 | - setFieldsValue({ thingsModelId: '', deviceId: [] }); | 470 | + onChange: (_value: string, options = {} as DeviceProfileModel) => { |
471 | + const oldType = formModel['transportType']; | ||
472 | + | ||
473 | + const updateFlag = | ||
474 | + oldType === TransportTypeEnum.TCP || options.transportType === TransportTypeEnum.TCP; | ||
475 | + | ||
476 | + setFieldsValue({ | ||
477 | + thingsModelId: '', | ||
478 | + deviceId: [], | ||
479 | + transportType: options.transportType, | ||
480 | + ...(updateFlag ? { doContext: null } : {}), | ||
481 | + }); | ||
482 | + }, | ||
483 | + onOptionsChange(options: DeviceProfileModel[]) { | ||
484 | + const deviceProfileId = formModel['deviceProfileId']; | ||
485 | + if (deviceProfileId) { | ||
486 | + const index = options.findIndex( | ||
487 | + (item) => (item as Recordable).value === deviceProfileId | ||
488 | + ); | ||
489 | + | ||
490 | + ~index && setFieldsValue({ transportType: options[index].transportType }); | ||
491 | + } | ||
464 | }, | 492 | }, |
465 | }; | 493 | }; |
466 | }, | 494 | }, |
@@ -156,7 +156,7 @@ export const genActionData = (actionData) => { | @@ -156,7 +156,7 @@ export const genActionData = (actionData) => { | ||
156 | clearRule, | 156 | clearRule, |
157 | } | 157 | } |
158 | : { | 158 | : { |
159 | - ...doContext, | 159 | + params: doContext, |
160 | alarmLevel: outTarget === 'MSG_NOTIFY' ? alarm_level : undefined, | 160 | alarmLevel: outTarget === 'MSG_NOTIFY' ? alarm_level : undefined, |
161 | }, | 161 | }, |
162 | }, | 162 | }, |
@@ -39,8 +39,15 @@ | @@ -39,8 +39,15 @@ | ||
39 | </template> | 39 | </template> |
40 | </a-select> | 40 | </a-select> |
41 | </template> | 41 | </template> |
42 | - <template #doContext> | ||
43 | - <div class="flex" style="align-items: center"> | 42 | + <template #doContext="{ model, field }"> |
43 | + <div v-if="model['transportType'] === TransportTypeEnum.TCP"> | ||
44 | + <Input v-model:value="model[field]" placeholder="请输入自定义命令" /> | ||
45 | + </div> | ||
46 | + <div | ||
47 | + v-show="model['transportType'] !== TransportTypeEnum.TCP" | ||
48 | + class="flex" | ||
49 | + style="align-items: center" | ||
50 | + > | ||
44 | <div ref="jsoneditorRef" style="height: 100%; width: 100%"></div> | 51 | <div ref="jsoneditorRef" style="height: 100%; width: 100%"></div> |
45 | <a-button style="margin: -5px 0" type="text" @click="handlePremitter">格式化</a-button> | 52 | <a-button style="margin: -5px 0" type="text" @click="handlePremitter">格式化</a-button> |
46 | <Tooltip | 53 | <Tooltip |
@@ -88,11 +95,13 @@ | @@ -88,11 +95,13 @@ | ||
88 | <script lang="ts"> | 95 | <script lang="ts"> |
89 | import { defineComponent } from 'vue'; | 96 | import { defineComponent } from 'vue'; |
90 | import { isNumber } from '/@/utils/is'; | 97 | import { isNumber } from '/@/utils/is'; |
98 | + import { TransportTypeEnum } from '/@/views/device/profiles/components/TransportDescript/const'; | ||
91 | export default defineComponent({ | 99 | export default defineComponent({ |
92 | components: { | 100 | components: { |
93 | VNodes: (_, { attrs }) => { | 101 | VNodes: (_, { attrs }) => { |
94 | return attrs.vnodes; | 102 | return attrs.vnodes; |
95 | }, | 103 | }, |
104 | + Input, | ||
96 | }, | 105 | }, |
97 | inheritAttrs: false, | 106 | inheritAttrs: false, |
98 | }); | 107 | }); |
@@ -101,7 +110,7 @@ | @@ -101,7 +110,7 @@ | ||
101 | import { ref, onMounted, nextTick, unref, computed, provide } from 'vue'; | 110 | import { ref, onMounted, nextTick, unref, computed, provide } from 'vue'; |
102 | import { CollapseContainer } from '/@/components/Container/index'; | 111 | import { CollapseContainer } from '/@/components/Container/index'; |
103 | import { BasicForm, useForm } from '/@/components/Form/index'; | 112 | import { BasicForm, useForm } from '/@/components/Form/index'; |
104 | - import { Tooltip, Select, Checkbox, Card } from 'ant-design-vue'; | 113 | + import { Tooltip, Select, Checkbox, Card, Input } from 'ant-design-vue'; |
105 | import { Icon } from '/@/components/Icon'; | 114 | import { Icon } from '/@/components/Icon'; |
106 | import { actionSchema, CommandTypeEnum } from '../config/config.data'; | 115 | import { actionSchema, CommandTypeEnum } from '../config/config.data'; |
107 | import jsoneditor from 'jsoneditor'; | 116 | import jsoneditor from 'jsoneditor'; |
@@ -260,13 +269,14 @@ | @@ -260,13 +269,14 @@ | ||
260 | //ft-add-2022-11-22 | 269 | //ft-add-2022-11-22 |
261 | //TODO-fengtao-设备验证 | 270 | //TODO-fengtao-设备验证 |
262 | const value = getFieldsValue(); | 271 | const value = getFieldsValue(); |
272 | + const isTCPTransportType = value.transportType === TransportTypeEnum.TCP; | ||
263 | const doContext = unref(jsonInstance)?.get() || {}; | 273 | const doContext = unref(jsonInstance)?.get() || {}; |
264 | const serviceInputValue = Reflect.get(value, 'serviceInputValue'); | 274 | const serviceInputValue = Reflect.get(value, 'serviceInputValue'); |
265 | 275 | ||
266 | return { | 276 | return { |
267 | ...value, | 277 | ...value, |
268 | ...(Number(value.commandType) === CommandTypeEnum.CUSTOM | 278 | ...(Number(value.commandType) === CommandTypeEnum.CUSTOM |
269 | - ? { doContext } | 279 | + ? { doContext: isTCPTransportType ? value.doContext : doContext } |
270 | : { doContext: serviceInputValue }), | 280 | : { doContext: serviceInputValue }), |
271 | clearRule, | 281 | clearRule, |
272 | }; | 282 | }; |
@@ -280,7 +290,9 @@ | @@ -280,7 +290,9 @@ | ||
280 | ...(isNumber(fieldsValue.commandType) | 290 | ...(isNumber(fieldsValue.commandType) |
281 | ? { commandType: String(fieldsValue.commandType) } | 291 | ? { commandType: String(fieldsValue.commandType) } |
282 | : {}), | 292 | : {}), |
283 | - serviceInputValue: commandType === CommandTypeEnum.SERVICE ? doContext.params || {} : {}, | 293 | + ...(commandType === CommandTypeEnum.SERVICE |
294 | + ? { serviceInputValue: doContext.params || {} } | ||
295 | + : { doContext: doContext.params }), | ||
284 | }); | 296 | }); |
285 | }; | 297 | }; |
286 | //ft-add | 298 | //ft-add |