Forráskód Böngészése

feat: 调整告警计划交互联动,事件类型和生效时段联动;

liujia 1 hónapja
szülő
commit
26c3385933

+ 33 - 1
src/views/device/detail/components/alarmPlanModal/index.vue

@@ -116,6 +116,7 @@
             v-model:value="formState.eventType"
             :options="eventTypeList"
             placeholder="请选择事件类型"
+            @change="eventTypeChange"
           />
 
           <a-form-item-rest v-if="formState.eventType && ![1, 2, 3].includes(formState.eventType)">
@@ -198,8 +199,15 @@
               valueFormat="HH:mm"
               format="HH:mm"
               style="width: 100%"
+              :disabled="[4, 6, 8].includes(formState.eventType!)"
             />
-            <a-button size="small" type="link" @click="addEffectTime">添加</a-button>
+            <a-button
+              size="small"
+              type="link"
+              :disabled="[4, 6, 8].includes(formState.eventType!)"
+              @click="addEffectTime"
+              >添加</a-button
+            >
           </div>
           <div style="margin-top: 12px">
             <span
@@ -855,6 +863,11 @@ const addEffectTime = () => {
     message.warn('请选择时间段')
     return
   }
+  // 仅允许添加一个时段校验
+  if ([5, 7].includes(formState.eventType!) && formState.effectTimeFrames.length >= 1) {
+    message.warn('当前事件类型,仅支持添加一个生效时段')
+    return
+  }
   formState.effectTimeFrames.push({
     startTime: formState.effectTimeFrame[0],
     endTime: formState.effectTimeFrame[1],
@@ -867,6 +880,20 @@ const deleteEffectTimeItem = (e: Event, index: number) => {
   formState.effectTimeFrames.splice(index, 1)
 }
 
+// 生效时段变化
+const eventTypeChange = (value: number) => {
+  if ([4, 6, 8].includes(value)) {
+    formState.effectTimeFrames = [
+      {
+        startTime: '00:00',
+        endTime: '23:59',
+      },
+    ]
+  } else {
+    formState.effectTimeFrames = []
+  }
+}
+
 // 关闭弹窗
 const cancel = () => {
   formRef?.value?.resetFields()
@@ -968,6 +995,11 @@ const submit = () => {
         console.log('🔥paramData🔥', paramData)
       }
 
+      if ([5, 7].includes(formState.eventType!) && formState.effectTimeFrames.length >= 1) {
+        message.warn('当前事件类型,仅支持添加一个生效时段')
+        return
+      }
+
       const params = {
         alarmPlanId: props.alarmPlanId || undefined, // 告警计划ID 编辑时传入
         clientId: props.clientId, // 设备ID