From 508de312b36034683fc282171c8bbcba7a691172 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Tue, 1 Jul 2025 12:30:40 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat=EF=BC=9A=E3=80=90IoT=20=E7=89=A9?= =?UTF-8?q?=E8=81=94=E7=BD=91=E3=80=91=E5=9C=BA=E6=99=AF=E8=81=94=E5=8A=A8?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=99=A8=E4=BC=98=E5=8C=96=E5=AF=B9=E9=BD=90?= =?UTF-8?q?=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/iot/rule/scene/scene.types.ts | 13 +- src/views/iot/rule/scene/RuleSceneForm.vue | 46 +++-- .../components/listener/DeviceListener.vue | 120 +++++++++++-- .../listener/DeviceStateListener.vue | 166 ++++++++++++++++++ 4 files changed, 311 insertions(+), 34 deletions(-) create mode 100644 src/views/iot/rule/scene/components/listener/DeviceStateListener.vue diff --git a/src/api/iot/rule/scene/scene.types.ts b/src/api/iot/rule/scene/scene.types.ts index 5d3d59a46..bfc51e8d0 100644 --- a/src/api/iot/rule/scene/scene.types.ts +++ b/src/api/iot/rule/scene/scene.types.ts @@ -4,13 +4,18 @@ // 枚举定义 const IotRuleSceneTriggerTypeEnum = { - DEVICE: 1, // 设备触发 - TIMER: 2 // 定时触发 + DEVICE_STATE_UPDATE: 1, // 设备上下线变更 + DEVICE_PROPERTY_POST: 2, // 物模型属性上报 + DEVICE_EVENT_POST: 3, // 设备事件上报 + DEVICE_SERVICE_INVOKE: 4, // 设备服务调用 + TIMER: 100 // 定时触发 } as const const IotRuleSceneActionTypeEnum = { - DEVICE_CONTROL: 1, // 设备执行 - ALERT: 2 // 告警执行 + DEVICE_PROPERTY_SET: 1, // 设备属性设置, + DEVICE_SERVICE_INVOKE: 2, // 设备服务调用 + ALERT_TRIGGER: 100, // 告警触发 + ALERT_RECOVER: 101 // 告警恢复 } as const const IotDeviceMessageTypeEnum = { diff --git a/src/views/iot/rule/scene/RuleSceneForm.vue b/src/views/iot/rule/scene/RuleSceneForm.vue index 5c0c8e333..b79b6b4d4 100644 --- a/src/views/iot/rule/scene/RuleSceneForm.vue +++ b/src/views/iot/rule/scene/RuleSceneForm.vue @@ -33,17 +33,36 @@ 触发器配置 - - - - - + + + 添加触发器 @@ -77,6 +96,7 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { RuleSceneApi } from '@/api/iot/rule/scene' import DeviceListener from './components/listener/DeviceListener.vue' +import DeviceStateListener from './components/listener/DeviceStateListener.vue' import { CommonStatusEnum } from '@/utils/constants' import { ActionConfig, @@ -117,7 +137,7 @@ const formRef = ref() // 表单 Ref const addTrigger = () => { formData.value.triggers.push({ key: generateUUID(), // 解决组件索引重用 - type: IotRuleSceneTriggerTypeEnum.DEVICE, + type: IotRuleSceneTriggerTypeEnum.DEVICE_PROPERTY_POST, // 默认为物模型属性上报 productKey: '', deviceNames: [], conditions: [ @@ -138,7 +158,7 @@ const removeTrigger = (index: number) => { const addAction = () => { formData.value.actions.push({ key: generateUUID(), // 解决组件索引重用 - type: IotRuleSceneActionTypeEnum.DEVICE_CONTROL + type: IotRuleSceneActionTypeEnum.DEVICE_PROPERTY_SET } as ActionConfig) } /** 移除执行器 */ diff --git a/src/views/iot/rule/scene/components/listener/DeviceListener.vue b/src/views/iot/rule/scene/components/listener/DeviceListener.vue index 024fbec1d..708cfd9f0 100644 --- a/src/views/iot/rule/scene/components/listener/DeviceListener.vue +++ b/src/views/iot/rule/scene/components/listener/DeviceListener.vue @@ -18,19 +18,13 @@ /> -
+
产品 {{ product ? product.name : '选择产品' }}
-
+
设备 {{ isEmpty(deviceList) ? '选择设备' : triggerConfig.deviceNames.join(',') }} @@ -44,8 +38,18 @@
-