fix(project): 修复 IoT 场景规则不介于条件输入与回显

This commit is contained in:
YunaiV
2026-09-26 23:28:31 +08:00
parent 7034b293db
commit 81cccc4921
3 changed files with 27 additions and 36 deletions
@@ -1,4 +1,3 @@
<!-- 值输入组件 -->
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
@@ -40,6 +39,13 @@ const localValue = useVModel(props, 'modelValue', emit, {
defaultValue: '',
});
const isRangeOperator = computed(() =>
[
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value,
IotRuleSceneTriggerConditionParameterOperatorEnum.NOT_BETWEEN.value,
].some((operator) => operator === props.operator),
);
const rangeStart = ref(''); // 范围开始值
const rangeEnd = ref(''); // 范围结束值
const dateValue = ref(''); // 日期值
@@ -148,10 +154,7 @@ function handleNumberChange(value: any) {
/** 根据外部值同步内部输入态 */
function syncInternalValue(value = '') {
const normalized = value;
if (
props.operator ===
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value
) {
if (isRangeOperator.value) {
const [start = '', end = ''] = normalized.split(',');
rangeStart.value = start;
rangeEnd.value = end;
@@ -232,13 +235,7 @@ watch(
</Select>
<!-- 范围输入 (between 操作符) -->
<div
v-else-if="
operator ===
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value
"
class="w-full! flex items-center gap-2"
>
<div v-else-if="isRangeOperator" class="w-full! flex items-center gap-2">
<Input
v-model:value="rangeStart"
:type="getInputType()"
@@ -1,4 +1,3 @@
<!-- 值输入组件 -->
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
@@ -40,6 +39,13 @@ const localValue = useVModel(props, 'modelValue', emit, {
defaultValue: '',
});
const isRangeOperator = computed(() =>
[
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value,
IotRuleSceneTriggerConditionParameterOperatorEnum.NOT_BETWEEN.value,
].some((operator) => operator === props.operator),
);
const rangeStart = ref(''); // 范围开始值
const rangeEnd = ref(''); // 范围结束值
const dateValue = ref(''); // 日期值
@@ -148,10 +154,7 @@ function handleNumberChange(value: any) {
/** 根据外部值同步内部输入态 */
function syncInternalValue(value = '') {
const normalized = value;
if (
props.operator ===
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value
) {
if (isRangeOperator.value) {
const [start = '', end = ''] = normalized.split(',');
rangeStart.value = start;
rangeEnd.value = end;
@@ -226,13 +229,7 @@ watch(
/>
<!-- 范围输入 (between 操作符) -->
<div
v-else-if="
operator ===
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value
"
class="w-full! flex items-center gap-2"
>
<div v-else-if="isRangeOperator" class="w-full! flex items-center gap-2">
<Input
v-model:value="rangeStart"
:type="getInputType()"
@@ -1,4 +1,3 @@
<!-- 值输入组件 -->
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
@@ -41,6 +40,13 @@ const localValue = useVModel(props, 'modelValue', emit, {
defaultValue: '',
});
const isRangeOperator = computed(() =>
[
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value,
IotRuleSceneTriggerConditionParameterOperatorEnum.NOT_BETWEEN.value,
].some((operator) => operator === props.operator),
);
const rangeStart = ref(''); // 范围开始值
const rangeEnd = ref(''); // 范围结束值
const dateValue = ref(''); // 日期值
@@ -149,10 +155,7 @@ function handleNumberChange(value: number | undefined) {
/** 根据外部值同步内部输入态 */
function syncInternalValue(value = '') {
const normalized = value;
if (
props.operator ===
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value
) {
if (isRangeOperator.value) {
const [start = '', end = ''] = normalized.split(',');
rangeStart.value = start;
rangeEnd.value = end;
@@ -232,13 +235,7 @@ watch(
</ElSelect>
<!-- 范围输入 (between 操作符) -->
<div
v-else-if="
operator ===
IotRuleSceneTriggerConditionParameterOperatorEnum.BETWEEN.value
"
class="w-full! flex items-center gap-2"
>
<div v-else-if="isRangeOperator" class="w-full! flex items-center gap-2">
<ElInput
v-model="rangeStart"
:type="getInputType()"