Prechádzať zdrojové kódy

perf(views): 优化“报警管理”模块编辑提交数据异常问题

wangshun 1 mesiac pred
rodič
commit
d0187fc615

+ 13 - 1
src/views/alarm-manage/AlarmConditions.vue

@@ -74,6 +74,18 @@ const confirmClick = (value: DataSelectionItem) => {
   dataSelectionRef.value?.hideView();
 };
 
+const addConditionType = () => {
+  props.form.paramCode = '';
+  props.form.paramName = '';
+  props.form.deviceId = undefined;
+  props.form.deviceName = undefined;
+  props.form.alarmAlgOperator = undefined;
+  props.form.alarmThreshold = undefined;
+  props.form.alarmDeviceState = undefined;
+  props.form.alarmScheduledTime = undefined;
+  props.form.alarmRepeatTime = undefined;
+};
+
 defineExpose({
   formRefSubmit,
   formResetFields,
@@ -95,6 +107,7 @@ defineExpose({
               :options="alarmCondition"
               :field-names="{ label: 'dictValue', value: 'dictEngValue' }"
               :placeholder="$t('common.plzSelect')"
+              @change="addConditionType"
             />
           </AFormItem>
           <AFormItem :label="t('algorithmManage.equipmentParameters')" name="paramCode" v-if="form.subType == '0'">
@@ -154,7 +167,6 @@ defineExpose({
               class="select-input select-right"
               v-model:value="form.alarmScheduledTime"
               format="HH:mm"
-              value-format="HH:mm"
               :allow-clear="false"
             />
           </AFormItem>

+ 10 - 1
src/views/alarm-manage/AlarmExecution.vue

@@ -51,6 +51,15 @@ const confirmClick = (value: DataSelectionItem) => {
 
   dataSelectionRef.value?.hideView();
 };
+const addPerformAction = () => {
+  props.form.alarmNotifyMethod = undefined;
+  props.form.alarmContact = undefined;
+  props.form.alarmAlertContent = undefined;
+  props.form.alarmWaitTime = undefined;
+  props.form.paramCode = '';
+  props.form.alarmAdjustmentValue = '';
+  props.form.paramName = '';
+};
 
 const deleteExecutionConditions = () => {
   emit('deleteClick', props.index);
@@ -77,6 +86,7 @@ defineExpose({
               :options="executionAction"
               :field-names="{ label: 'dictValue', value: 'dictEngValue' }"
               :placeholder="t('common.plzSelect')"
+              @change="addPerformAction"
             />
           </AFormItem>
           <AFormItem
@@ -119,7 +129,6 @@ defineExpose({
               class="select-input select-right"
               v-model:value="form.alarmWaitTime"
               format="mm:ss"
-              value-format="mm:ss"
               :allow-clear="false"
             />
           </AFormItem>

+ 17 - 5
src/views/alarm-manage/AlarmManage.vue

@@ -506,11 +506,23 @@ const convertAtoB = (arr: TriggerConditionItem[] | ExecutionAction[]): AlarmEven
     const { type, subType, groupId, childGroupId, deviceId, paramCode, paramName, deviceName, ...dynamicFields } = item;
     // 转换动态字段到 dataList
     const dataList = Object.entries(dynamicFields)
-      .map(([code, value]) => ({
-        code,
-        value: String(value), // 确保值转为字符串
-      })) // 过滤空值(空字符串、null、undefined)
-      .filter(({ value }) => value !== '' && value != null && value != 'undefined');
+      .map(([code, value]) => {
+        // 特殊处理时间字段
+        if (code === 'alarmScheduledTime') {
+          if (value) {
+            return { code, value: dayjs(value).format('HH:mm') };
+          }
+        }
+
+        if (code === 'alarmWaitTime') {
+          if (value) {
+            return { code, value: dayjs(value).format('mm:ss') };
+          }
+        }
+
+        return { code, value: String(value) };
+      }) // 过滤空值(空字符串、null、undefined)
+      .filter(({ value }) => value !== '' && value != null && value != 'undefined' && value != undefined);
 
     // 返回符合 AlarmEventItem 结构的对象
     return {