diff --git a/src/api/iot/rule/scene/scene.types.ts b/src/api/iot/rule/scene/scene.types.ts index 990822b9..336c1d58 100644 --- a/src/api/iot/rule/scene/scene.types.ts +++ b/src/api/iot/rule/scene/scene.types.ts @@ -72,6 +72,7 @@ interface TriggerCondition { // 触发器配置 interface TriggerConfig { + key: any // 解决组件索引重用 type: number // 触发类型 productKey: string // 产品标识 deviceNames: string[] // 设备名称数组 @@ -98,6 +99,7 @@ interface ActionAlert { // 执行器配置 interface ActionConfig { + key: any // 解决组件索引重用 type: number // 执行类型 deviceControl?: ActionDeviceControl // 设备控制 alert?: ActionAlert // 告警执行 diff --git a/src/views/iot/rule/scene/RuleSceneForm.vue b/src/views/iot/rule/scene/RuleSceneForm.vue index c66d422d..c6d13c56 100644 --- a/src/views/iot/rule/scene/RuleSceneForm.vue +++ b/src/views/iot/rule/scene/RuleSceneForm.vue @@ -35,7 +35,7 @@ 触发器配置 执行器配置 { formData.value.triggers.push({ + key: generateUUID(), // 解决组件索引重用 type: IotRuleSceneTriggerTypeEnum.DEVICE, productKey: '', deviceNames: [], @@ -135,6 +137,7 @@ const removeTrigger = (index: number) => { /** 添加执行器 */ const addAction = () => { formData.value.actions.push({ + key: generateUUID(), // 解决组件索引重用 type: IotRuleSceneActionTypeEnum.DEVICE_CONTROL } as ActionConfig) } @@ -153,7 +156,11 @@ const open = async (type: string, id?: number) => { if (id) { formLoading.value = true try { - formData.value = await RuleSceneApi.getRuleScene(id) + const data = (await RuleSceneApi.getRuleScene(id)) as IotRuleScene + // 解决组件索引重用 + data.triggers?.forEach((item) => (item.key = generateUUID())) + data.actions?.forEach((item) => (item.key = generateUUID())) + formData.value = data } finally { formLoading.value = false }