From d0f98ad8e1047e3161a458399ad3005404ed87b8 Mon Sep 17 00:00:00 2001
From: whychdw <496960745@qq.com>
Date: 星期五, 06 六月 2025 15:52:15 +0800
Subject: [PATCH] 标准参数管理

---
 src/views/alarm/battAlarm.vue |  247 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 158 insertions(+), 89 deletions(-)

diff --git a/src/views/alarm/battAlarm.vue b/src/views/alarm/battAlarm.vue
index 081c54e..edd56ca 100644
--- a/src/views/alarm/battAlarm.vue
+++ b/src/views/alarm/battAlarm.vue
@@ -29,6 +29,11 @@
     confirmBattAlm,
   } from "@/api/alarm.js";
 
+  import {
+    getBattAlarmIdType,
+  } from "@/api/station.js";
+  
+
 	const { $loading, $message, $confirm } = useElement();
 
   const alarmLevel = ref();
@@ -83,7 +88,7 @@
 			width: "120",
 		},
     {
-			prop: "almId",
+			prop: "almName",
 			label: "鍛婅绫诲瀷",
 			width: "120",
 		},
@@ -129,15 +134,26 @@
 	const currentAreaId = ref();
 	const currentAreaIds = ref([]);
 	const datas = reactive({
-		tableData: [],
+    tableData: [],
 		rowData: {},
 	});
 
-	// const tableData = reactive([]);
-	// const rowData = reactive({});
+  const almIds = ref([]);
+  const alarmTypeList = ref([]);
 
-	// const userStore = useUserStore();
-	// const { uid, uname } = storeToRefs(userStore);
+  const checkAll = ref(true);
+  const isIndeterminate = ref(false);
+
+  function handleCheckAllChange (val) {
+    almIds.value = val ? alarmTypeList.value.map(v => v.value) : []
+    isIndeterminate.value = false
+  }
+  function handleCheckedChange (value) {
+    const checkedCount = value.length
+    checkAll.value = checkedCount === alarmTypeList.value.length
+    isIndeterminate.value = checkedCount > 0 && checkedCount < alarmTypeList.value.length
+  }
+
 
   // almIds: [119001],
   // almLevel: "1",
@@ -149,7 +165,7 @@
   // stationName: "娴嬭瘯鏈烘埧6",
   function sendMessage() {
     let params = {
-      // almIds: [119001],
+      almIds: almIds.value,
       almLevel: alarmLevel.value || undefined,
       provice: provice.value || undefined,
       city: city.value || undefined,
@@ -165,6 +181,18 @@
     nextTick(() => {
       sendMessage();
     });
+  }
+
+  // 鏌ヨ鍛婅绫诲瀷
+  async function getAlarmType() {
+    let res = await getBattAlarmIdType();
+    let { code, data, data2 } = res;
+    let list = [];
+    if (code && data) {
+      list = Object.keys(data2).map((key) => ({value: key, label: data2[key]}));
+    }
+    alarmTypeList.value = list;
+    almIds.value = list.map(v => v.value);
   }
 
   watch(
@@ -256,7 +284,8 @@
   }
 
 
-	onMounted(() => {
+	onMounted(async () => {
+    await getAlarmType();
 		sendMessage();
 	});
 </script>
@@ -269,96 +298,125 @@
       <yc-card is-full>
         <div class="page-content-wrapper">
           <div class="page-content-tools page-filter">
-            <div class="table-row">
-              <div class="table-cell text-right">鐪侊細</div>
-              <div class="table-cell">
-                <el-select
-                  v-model="provice"
-                  size="small"
-                  clearable
-                  placeholder="璇烽�夋嫨鐪�"
-                  @change="selectChange"
-                >
-                  <el-option
-                    v-for="item in proviceList"
-                    :key="'l0_' + item"
-                    :label="item"
-                    :value="item"
+            <div class="grid-container" :style="{'--counter': 5}">
+              <div class="grid-item">
+                <div class="label">鐪�</div>
+                <div class="value">
+                  <el-select
+                    v-model="provice"
+                    size="small"
+                    clearable
+                    placeholder="璇烽�夋嫨鐪�"
+                    @change="selectChange"
                   >
-                  </el-option>
-                </el-select>
+                    <el-option
+                      v-for="item in proviceList"
+                      :key="'l0_' + item"
+                      :label="item"
+                      :value="item"
+                    >
+                    </el-option>
+                  </el-select>
+                </div>
               </div>
-              <div class="table-cell text-right">甯傦細</div>
-              <div class="table-cell">
-                <el-select
-                  v-model="city"
-                  size="small"
-                  clearable
-                  placeholder="璇烽�夋嫨甯�"
-                  @change="selectChange"
-                >
-                  <el-option
-                    v-for="item in cityList"
-                    :key="'l1_' + item"
-                    :label="item"
-                    :value="item"
+              <div class="grid-item">
+                <div class="label">甯�</div>
+                <div class="value">
+                  <el-select
+                    v-model="city"
+                    size="small"
+                    clearable
+                    placeholder="璇烽�夋嫨甯�"
+                    @change="selectChange"
                   >
-                  </el-option>
-                </el-select>
+                    <el-option
+                      v-for="item in cityList"
+                      :key="'l1_' + item"
+                      :label="item"
+                      :value="item"
+                    >
+                    </el-option>
+                  </el-select>
+                </div>
               </div>
-              <div class="table-cell text-right">鍖哄幙:</div>
-              <div class="table-cell">
-                <el-select
-                  v-model="country"
-                  clearable
-                  size="small"
-                  placeholder="璇烽�夋嫨鍖哄幙"
-                  @change="selectChange"
-                >
-                  <el-option
-                    v-for="item in countryList"
-                    :key="'l2_' + item"
-                    :label="item"
-                    :value="item"
+              <div class="grid-item">
+                <div class="label">鍖哄幙</div>
+                <div class="value">
+                  <el-select
+                    v-model="country"
+                    clearable
+                    size="small"
+                    placeholder="璇烽�夋嫨鍖哄幙"
+                    @change="selectChange"
                   >
-                  </el-option>
-                </el-select>
+                    <el-option
+                      v-for="item in countryList"
+                      :key="'l2_' + item"
+                      :label="item"
+                      :value="item"
+                    >
+                    </el-option>
+                  </el-select>
+                </div>
               </div>
-              <div class="table-cell text-right">绔欑偣:</div>
-              <div class="table-cell">
-                <el-select
-                  v-model="stationName"
-                  clearable
-                  size="small"
-                  placeholder="璇烽�夋嫨绔欑偣"
-                  @change="selectChange"
-                >
-                  <el-option
-                    v-for="item in stationList"
-                    :key="'l3_' + item.stationId"
-                    :label="item.stationName"
-                    :value="item.stationName"
+              <div class="grid-item">
+                <div class="label">绔欑偣</div>
+                <div class="value">
+                  <el-select
+                    v-model="stationName"
+                    clearable
+                    size="small"
+                    placeholder="璇烽�夋嫨绔欑偣"
+                    @change="selectChange"
                   >
-                  </el-option>
-                </el-select>
+                    <el-option
+                      v-for="item in stationList"
+                      :key="'l3_' + item.stationId"
+                      :label="item.stationName"
+                      :value="item.stationName"
+                    >
+                    </el-option>
+                  </el-select>
+                </div>
               </div>
-              <div class="table-cell text-right">鍛婅绛夌骇:</div>
-              <div class="table-cell">
-                <el-select
-                  v-model="alarmLevel"
-                  clearable
-                  size="small"
-                  placeholder="璇烽�夋嫨鍛婅绛夌骇"
-                  @change="selectChange"
-                >
-                  <el-option
-                    v-for="item in alarmLevels"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
+              <div class="grid-item">
+                <div class="label">鍛婅绛夌骇</div>
+                <div class="value">
+                  <el-select
+                    v-model="alarmLevel"
+                    clearable
+                    size="small"
+                    placeholder="璇烽�夋嫨鍛婅绛夌骇"
+                    @change="selectChange"
                   >
-                  </el-option>
-                </el-select>
+                    <el-option
+                      v-for="item in alarmLevels"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </div>
+              </div>
+              <div class="grid-item">
+                <div class="label">鍛婅绫诲瀷</div>
+                <div class="value flex-row" style="grid-column: span 9;">
+                  <el-checkbox
+                    v-model="checkAll"
+                    :indeterminate="isIndeterminate"
+                    @change="handleCheckAllChange"
+                  >鍏ㄩ��
+                  </el-checkbox>
+                  <el-checkbox-group
+                    class="group"
+                    v-model="almIds"
+                    @change="handleCheckedChange"
+                  >
+                    <el-checkbox v-for="(item, idx) in alarmTypeList" :key="'list0_' + idx" :label="item.label" :value="item.value">
+                    </el-checkbox>
+                  </el-checkbox-group>
+                </div>
               </div>
             </div>
           </div>
@@ -434,6 +492,17 @@
 
   .page-content-tools {
     padding-bottom: 8px;
+
+    .flex-row {
+      display: flex;
+      align-items: center;
+      :deep(.el-checkbox) {
+        color: #fff;
+      }
+      .group {
+        margin-left: 30px;
+      }
+    }
   }
 
   .page-content-table {

--
Gitblit v1.9.1