fix:【IoT 物联网】场景联动首次添加条件失败的 bug

This commit is contained in:
puhui999
2025-08-02 11:22:10 +08:00
parent cb52fbe71e
commit 32ce19fcd8
3 changed files with 26 additions and 13 deletions

View File

@ -153,11 +153,17 @@ const addSubGroup = () => {
container.value = [] container.value = []
} }
if (container.value.length >= maxSubGroups) { // 检查是否达到最大子组数量限制
if (container.value?.length >= maxSubGroups) {
return return
} }
container.value.push([]) // 使用 nextTick 确保响应式更新完成后再添加新的子组
nextTick(() => {
if (container.value) {
container.value.push([])
}
})
} }
const removeSubGroup = (index: number) => { const removeSubGroup = (index: number) => {

View File

@ -83,13 +83,6 @@ const handleMainConditionValidate = (result: { valid: boolean; message: string }
updateValidationResult() updateValidationResult()
} }
const addConditionGroup = () => {
if (!trigger.value.conditionGroups) {
trigger.value.conditionGroups = []
}
trigger.value.conditionGroups.push([])
}
// 事件处理 // 事件处理
const handleConditionGroupValidate = () => { const handleConditionGroupValidate = () => {
updateValidationResult() updateValidationResult()

View File

@ -80,10 +80,14 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { nextTick } from 'vue'
import { useVModel } from '@vueuse/core' import { useVModel } from '@vueuse/core'
import ConditionConfig from './ConditionConfig.vue' import ConditionConfig from './ConditionConfig.vue'
import { TriggerConditionFormData } from '@/api/iot/rule/scene/scene.types' import { TriggerConditionFormData } from '@/api/iot/rule/scene/scene.types'
import { IotRuleSceneTriggerConditionTypeEnum } from '@/views/iot/utils/constants' import {
IotRuleSceneTriggerConditionTypeEnum,
IotRuleSceneTriggerConditionParameterOperatorEnum
} from '@/views/iot/utils/constants'
/** 子条件组配置组件 */ /** 子条件组配置组件 */
defineOptions({ name: 'SubConditionGroupConfig' }) defineOptions({ name: 'SubConditionGroupConfig' })
@ -109,21 +113,31 @@ const conditionValidations = ref<{ [key: number]: { valid: boolean; message: str
// 事件处理 // 事件处理
const addCondition = () => { const addCondition = () => {
// 确保 subGroup.value 是一个数组
if (!subGroup.value) { if (!subGroup.value) {
subGroup.value = [] subGroup.value = []
} }
if (subGroup.value.length >= maxConditions.value) {
// 检查是否达到最大条件数量限制
if (subGroup.value?.length >= maxConditions.value) {
return return
} }
const newCondition: TriggerConditionFormData = { const newCondition: TriggerConditionFormData = {
type: IotRuleSceneTriggerConditionTypeEnum.DEVICE_PROPERTY, // 默认为设备属性 type: IotRuleSceneTriggerConditionTypeEnum.DEVICE_PROPERTY, // 默认为设备属性
productId: undefined, productId: undefined,
deviceId: undefined, deviceId: undefined,
identifier: '', identifier: '',
operator: '=', operator: IotRuleSceneTriggerConditionParameterOperatorEnum.EQUALS.value, // 使用枚举默认值
param: '' param: ''
} }
subGroup.value.push(newCondition)
// 使用 nextTick 确保响应式更新完成后再添加新条件
nextTick(() => {
if (subGroup.value) {
subGroup.value.push(newCondition)
}
})
} }
const removeCondition = (index: number) => { const removeCondition = (index: number) => {