From 0d91d4bdc0aa2f4c88c744db891d659f99f97fc2 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Thu, 7 Aug 2025 21:45:23 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E3=80=90IoT=20=E7=89=A9=E8=81=94?= =?UTF-8?q?=E7=BD=91=E3=80=91=E5=9C=BA=E6=99=AF=E8=81=94=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=9D=A1=E4=BB=B6=E9=85=8D=E7=BD=AE=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configs/CurrentTimeConditionConfig.vue | 70 +++++++++++++++---- 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue b/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue index 6d591b55c..b9f477d31 100644 --- a/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue +++ b/src/views/iot/rule/scene/form/configs/CurrentTimeConditionConfig.vue @@ -29,7 +29,7 @@ {{ option.label }} - {{ option.category }} + {{ option.category }} @@ -41,8 +41,8 @@ { IotRuleSceneTriggerTimeOperatorEnum.BETWEEN_TIME.value, IotRuleSceneTriggerTimeOperatorEnum.AT_TIME.value ] - return timeOnlyOperators.includes(condition.value.operator) + return timeOnlyOperators.includes(condition.value.operator as any) }) // 计算属性:是否需要日期输入 @@ -175,24 +175,66 @@ const needsSecondTimeInput = computed(() => { return condition.value.operator === IotRuleSceneTriggerTimeOperatorEnum.BETWEEN_TIME.value }) +// 计算属性:从 param 中解析时间值 +const timeValue = computed(() => { + if (!condition.value.param) return '' + const params = condition.value.param.split(',') + return params[0] || '' +}) + +// 计算属性:从 param 中解析第二个时间值 +const timeValue2 = computed(() => { + if (!condition.value.param) return '' + const params = condition.value.param.split(',') + return params[1] || '' +}) + /** * 更新条件字段 * @param field 字段名 * @param value 字段值 */ -const updateConditionField = (field: keyof TriggerCondition, value: any) => { +const updateConditionField = (field: any, value: any) => { condition.value[field] = value } +/** + * 处理第一个时间值变化 + * @param value 时间值 + */ +const handleTimeValueChange = (value: string) => { + const currentParams = condition.value.param ? condition.value.param.split(',') : [] + currentParams[0] = value || '' + + // 如果是范围条件,保留第二个值;否则只保留第一个值 + if (needsSecondTimeInput.value) { + condition.value.param = currentParams.slice(0, 2).join(',') + } else { + condition.value.param = currentParams[0] + } +} + +/** + * 处理第二个时间值变化 + * @param value 时间值 + */ +const handleTimeValue2Change = (value: string) => { + const currentParams = condition.value.param ? condition.value.param.split(',') : [''] + currentParams[1] = value || '' + condition.value.param = currentParams.slice(0, 2).join(',') +} + // 监听操作符变化,清理不相关的时间值 watch( () => condition.value.operator, (newOperator) => { if (newOperator === IotRuleSceneTriggerTimeOperatorEnum.TODAY.value) { - ;(condition.value as any).timeValue = undefined - ;(condition.value as any).timeValue2 = undefined + // 今日条件不需要时间参数 + condition.value.param = '' } else if (!needsSecondTimeInput.value) { - ;(condition.value as any).timeValue2 = undefined + // 非范围条件只保留第一个时间值 + const currentParams = condition.value.param ? condition.value.param.split(',') : [] + condition.value.param = currentParams[0] || '' } } )