From 14ffb6483fb84c49b5dc45b5d397242557c18a6a Mon Sep 17 00:00:00 2001 From: puhui999 Date: Thu, 20 Mar 2025 18:02:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=91IoT:=20=E8=A7=84=E5=88=99=E5=9C=BA=E6=99=AF=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=99=A8=E7=9B=B8=E5=85=B3=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/iot/rule/scene/scene.types.ts | 99 +++-- src/utils/dict.ts | 4 +- src/views/iot/rule/scene/IoTRuleSceneForm.vue | 61 +-- .../scene/components/ConditionSelector.vue | 241 +++++++++++ .../rule/scene/components/DeviceListener.vue | 87 ++++ .../components/DeviceListenerCondition.vue | 50 +++ .../scene/components/TriggerConditions.vue | 379 ++++++++++++++++++ 7 files changed, 843 insertions(+), 78 deletions(-) create mode 100644 src/views/iot/rule/scene/components/ConditionSelector.vue create mode 100644 src/views/iot/rule/scene/components/DeviceListener.vue create mode 100644 src/views/iot/rule/scene/components/DeviceListenerCondition.vue create mode 100644 src/views/iot/rule/scene/components/TriggerConditions.vue diff --git a/src/api/iot/rule/scene/scene.types.ts b/src/api/iot/rule/scene/scene.types.ts index 201e6a767..8914f0d7c 100644 --- a/src/api/iot/rule/scene/scene.types.ts +++ b/src/api/iot/rule/scene/scene.types.ts @@ -2,36 +2,36 @@ * 场景规则触发器配置 */ export interface IotRuleSceneTriggerConfig { - /** + /** * 触发类型 * - 1: 设备触发 * - 2: 定时触发 */ - type: number; + type: number /** 产品标识 */ - productKey?: string; + productKey?: string /** 设备名称数组 */ - deviceNames?: string[]; + deviceNames?: string[] /** 触发条件数组。条件之间是"或"的关系 */ - conditions?: IotRuleSceneTriggerCondition[]; + conditions?: IotRuleSceneTriggerCondition[] /** CRON 表达式。当 type = 2 时必填 */ - cronExpression?: string; + cronExpression?: string } /** * 触发条件 */ export interface IotRuleSceneTriggerCondition { - /** + /** * 消息类型 * - property: 属性上报 * - event: 事件上报 */ - type: string; + type: string /** 消息标识符 */ - identifier: string; + identifier: string /** 参数数组。参数之间是"或"的关系 */ - parameters: IotRuleSceneTriggerConditionParameter[]; + parameters: IotRuleSceneTriggerConditionParameter[] } /** @@ -39,39 +39,32 @@ export interface IotRuleSceneTriggerCondition { */ export interface IotRuleSceneTriggerConditionParameter { /** 标识符(属性、事件、服务) */ - identifier: string; + identifier: string /** * 操作符 - * - eq: 等于 - * - gt: 大于 - * - gte: 大于等于 - * - lt: 小于 - * - lte: 小于等于 - * - between: 范围 - * - in: 在列表中 */ - operator: string; - /** + operator: string + /** * 比较值 * 如果有多个值,则使用 "," 分隔,类似 "1,2,3" */ - value: string; + value: string } /** * 执行器配置 */ export interface IotRuleSceneActionConfig { - /** + /** * 执行类型 * - 1: 设备控制 * - 2: 数据桥接 */ - type: number; + type: number /** 设备控制配置。当 type = 1 时必填 */ - deviceControl?: IotRuleSceneActionDeviceControl; + deviceControl?: IotRuleSceneActionDeviceControl /** 数据桥接编号。当 type = 2 时必填 */ - dataBridgeId?: number; + dataBridgeId?: number } /** @@ -79,23 +72,23 @@ export interface IotRuleSceneActionConfig { */ export interface IotRuleSceneActionDeviceControl { /** 产品标识 */ - productKey: string; + productKey: string /** 设备名称数组 */ - deviceNames: string[]; - /** + deviceNames: string[] + /** * 消息类型 * - property: 属性 * - service: 服务 */ - type: string; - /** + type: string + /** * 消息标识符 * - property_set: 属性设置 * - service_invoke: 服务调用 */ - identifier: string; + identifier: string /** 具体数据 */ - data: Record; + data: Record } /** @@ -103,17 +96,17 @@ export interface IotRuleSceneActionDeviceControl { */ export interface IotRuleSceneSaveReqVO { /** 场景规则编号 */ - id?: number; + id?: number /** 场景规则名称 */ - name: string; + name: string /** 场景规则状态(0=禁用 1=启用) */ - status: number; + status: number /** 触发器配置 */ - triggerConfig: IotRuleSceneTriggerConfig; + triggerConfig: IotRuleSceneTriggerConfig /** 执行动作配置数组 */ - actionConfigs: IotRuleSceneActionConfig[]; + actionConfigs: IotRuleSceneActionConfig[] /** 备注 */ - remark?: string; + remark?: string } /** @@ -121,19 +114,19 @@ export interface IotRuleSceneSaveReqVO { */ export interface IotRuleSceneRespVO { /** 场景规则编号 */ - id: number; + id: number /** 场景规则名称 */ - name: string; + name: string /** 场景规则状态(0=禁用 1=启用) */ - status: number; + status: number /** 触发器配置 */ - triggerConfig: IotRuleSceneTriggerConfig; + triggerConfig: IotRuleSceneTriggerConfig /** 执行动作配置数组 */ - actionConfigs: IotRuleSceneActionConfig[]; + actionConfigs: IotRuleSceneActionConfig[] /** 备注 */ - remark?: string; + remark?: string /** 创建时间 */ - createTime: Date; + createTime: Date } /** @@ -141,9 +134,9 @@ export interface IotRuleSceneRespVO { */ export interface IotRuleScenePageItemRespVO extends IotRuleSceneRespVO { /** 触发次数 */ - triggerCount: number; + triggerCount: number /** 最后触发时间 */ - lastTriggerTime?: Date; + lastTriggerTime?: Date } /** @@ -151,15 +144,15 @@ export interface IotRuleScenePageItemRespVO extends IotRuleSceneRespVO { */ export interface IotRuleScenePageReqVO { /** 场景规则名称 */ - name?: string; + name?: string /** 场景规则状态(0=禁用 1=启用) */ - status?: number; + status?: number /** 创建时间 */ - createTime?: [Date, Date]; + createTime?: [Date, Date] /** 页码 */ - pageNo?: number; + pageNo?: number /** 每页条数 */ - pageSize?: number; + pageSize?: number } /** @@ -226,4 +219,4 @@ export enum IotRuleSceneTriggerConditionParameterOperatorEnum { BETWEEN = 'between', /** 在列表中 */ IN = 'in' -} +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 821149923..e6c1babd0 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -245,5 +245,7 @@ export enum DICT_TYPE { IOT_PLUGIN_STATUS = 'iot_plugin_status', // IOT 插件状态 IOT_PLUGIN_TYPE = 'iot_plugin_type', // IOT 插件类型 IOT_DATA_BRIDGE_DIRECTION_ENUM = 'iot_data_bridge_direction_enum', // 桥梁方向 - IOT_DATA_BRIDGE_TYPE_ENUM = 'iot_data_bridge_type_enum' // 桥梁类型 + IOT_DATA_BRIDGE_TYPE_ENUM = 'iot_data_bridge_type_enum', // 桥梁类型 + IOT_DEVICE_MESSAGE_TYPE_ENUM = 'iot_device_message_type_enum', // IoT 设备消息类型枚举 + IOT_RULE_SCENE_TRIGGER_TYPE_ENUM = 'iot_rule_scene_trigger_type_enum' // IoT 场景流转的触发类型枚举 } diff --git a/src/views/iot/rule/scene/IoTRuleSceneForm.vue b/src/views/iot/rule/scene/IoTRuleSceneForm.vue index 2ac84f7f9..59ab9c5dd 100644 --- a/src/views/iot/rule/scene/IoTRuleSceneForm.vue +++ b/src/views/iot/rule/scene/IoTRuleSceneForm.vue @@ -1,5 +1,5 @@