From b23bc4d88ed6215fdda94dc94a15dd62e9f4a5cc Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期四, 12 六月 2025 11:59:10 +0800
Subject: [PATCH] 北京市隐患点和监测设备修改

---
 src/components/menu/Location.vue |  134 +++++++++++++++++++++++++++++---------------
 1 files changed, 87 insertions(+), 47 deletions(-)

diff --git a/src/components/menu/Location.vue b/src/components/menu/Location.vue
index 53c3d4a..85ada38 100644
--- a/src/components/menu/Location.vue
+++ b/src/components/menu/Location.vue
@@ -10,7 +10,7 @@
         <el-select
           @change="handleChange1"
           v-model="selectValue1"
-          placeholder="Select"
+          placeholder="璇烽�夋嫨琛屾斂鍖�"
           size="mini"
           style="width: 240px"
         >
@@ -27,7 +27,7 @@
         <el-select
           @change="handleChange"
           v-model="selectValue"
-          placeholder="Select"
+          placeholder="璇烽�夋嫨閲嶇偣娌�"
           size="mini"
           style="width: 240px"
         >
@@ -66,14 +66,14 @@
 
 <script setup>
 import { ref, onMounted, watch, onBeforeUnmount } from "vue";
-import { createPoint,clearAllPoints } from "@/utils/map";
+import { createPoint, clearAllPoints } from "@/utils/map";
 import { useSimStore } from "@/store/simulation";
 import { initeWaterPrimitiveView } from "@/utils/water"; //鐩告満flyTo鍑芥暟锛屽悗缁璷ptions鍒楄〃涓湁瀵瑰簲缁忕含搴﹀悗寮冪敤
 import { useRoute, onBeforeRouteUpdate } from "vue-router";
 import { Loading } from "@element-plus/icons-vue";
+import { getDangerPointByPage } from "@/api/hpApi";
 
 const districtList = ref([]);
-
 
 const simStore = useSimStore();
 
@@ -86,38 +86,40 @@
 });
 const selectValue = ref("瀛欒儭娌�");
 
-const selectValue1 = ref("鍖椾含甯�");
+const selectValue1 = ref("");
 
-const BJoptions = ref([]);
+const BJoptions = ref([
+  { label: "瀵嗕簯鍖�", value: "110118000000" },
+  { label: "鎴垮北鍖�", value: "110111000000" },
+  { label: "闂ㄥご娌熷尯", value: "110109000000" },
+  { label: "寤跺簡鍖�", value: "110119000000" },
+  { label: "鎬�鏌斿尯", value: "110116000000" },
+  { label: "鏄屽钩鍖�", value: "110114000000" },
+  { label: "骞宠胺鍖�", value: "110117000000" },
+  { label: "娴锋穩鍖�", value: "110108000000" },
+  { label: "鐭虫櫙灞卞尯", value: "110107000000" },
+  { label: "涓板彴鍖�", value: "110106000000" },
+]);
 
 const options = ref([
-  {
-    value: "瀛欒儭娌�",
-    label: "瀛欒儭娌�",
-  },
-  {
-    value: "楸兼按娲炲悗娌�",
-    label: "楸兼按娲炲悗娌�",
-  },
-  {
-    value: "浜庡瑗挎矡",
-    label: "浜庡瑗挎矡",
-  },
-  {
-    value: "鍖楁渤娌�",
-    label: "鍖楁渤娌�",
-  },
-  {
-    value: "榫欐硥宄潙",
-    label: "榫欐硥宄潙",
-  },
+  { value: "瀛欒儭娌�", label: "瀛欒儭娌�" },
+  { value: "楸兼按娲炲悗娌�", label: "楸兼按娲炲悗娌�" },
+  { value: "浜庡瑗挎矡", label: "浜庡瑗挎矡" },
+  { value: "鍖楁渤娌�", label: "鍖楁渤娌�" },
+  { value: "榫欐硥宄潙", label: "榫欐硥宄潙" },
 ]);
 
 const loading = ref(true); // 鎺у埗鍔犺浇鐘舵��
 
 function handleClick(district) {
-  // 姝ゅ璋冪敤鏄洜涓篏isView椤甸潰浼氬湪鐐瑰嚮涓嬩竴涔¢晣涔嬪墠鎶婁笂涓�涓�夋嫨鐨勫尯鍩熺殑闅愭偅鐐规竻闄ゆ帀锛堝鏋滃垰濂介�夋嫨浜嗗瓩鑳℃矡锛岄偅涔堜笅涓�涓偣鍑诲皢浼氭竻绌哄瓩鑳℃矡鐨勯殣鎮g偣锛�
-  initializeDevicePoints();
+  if (selectValue.value) {
+    // 姝ゅ璋冪敤鏄洜涓篏isView椤甸潰浼氬湪鐐瑰嚮涓嬩竴涔¢晣涔嬪墠鎶婁笂涓�涓�夋嫨鐨勫尯鍩熺殑闅愭偅鐐规竻闄ゆ帀锛堝鏋滃垰濂介�夋嫨浜嗗瓩鑳℃矡锛岄偅涔堜笅涓�涓偣鍑诲皢浼氭竻绌哄瓩鑳℃矡鐨勯殣鎮g偣锛�
+    initializeDevicePoints();
+  } else {
+    // 琛屾斂鍖哄垝鐨勭偣浣嶅お澶氫簡锛屽彧鑳介�変腑鍝釜娓叉煋鍝釜
+    DevicePoints(district);
+  }
+
   const entity = viewer.entities.getById(district.hdId);
   if (entity) {
     viewer.flyTo(entity, {
@@ -148,6 +150,18 @@
   );
 };
 
+const DevicePoints = async (item) => {
+  // 鏍规嵁闇�姹傚彲澧炲垹
+  item.id = item.hdId;
+  item.name = item.hdName;
+  item.latitude = item.lat;
+  item.longitude = item.lon;
+  item.showBillboard = true;
+  item.type = item.disasterType;
+  item.className = "district";
+  await createPoint(item);
+};
+
 const filterDataByArea = async (areaName) => {
   clearAllPoints();
   if (!areaName || !simStore.DangerPoint || simStore.DangerPoint.length === 0) {
@@ -165,33 +179,59 @@
   }
 };
 
+const handleChange1 = async (item) => {
+  if (!item) {
+    ElMessage("璇烽�夋嫨涓�涓尯鍩�");
+    return;
+  }
+  selectValue1.value = item;
+  selectValue.value = "";
+  // 寮�鍚姞杞界姸鎬�
+  // loading.value = true;
+  districtList.value = []; // 娓呯┖鏃ф暟鎹�
+
+  let pageNum = 1;
+  let hasMore = true;
+
+  try {
+    while (hasMore) {
+      const res = await getDangerPointByPage(item, pageNum);
+
+      // 灏嗘柊鏁版嵁杩藉姞鍒板垪琛ㄤ腑
+      districtList.value = [...districtList.value, ...res.data.pageData];
+
+      // 鍒ゆ柇鏄惁杩樻湁涓嬩竴椤�
+      if (pageNum < res.data.pageCount) {
+        pageNum++;
+        await new Promise((resolve) => setTimeout(resolve, 300));
+      } else {
+        hasMore = false;
+      }
+    }
+  } catch (err) {
+    console.error("鑾峰彇闅愭偅鐐瑰け璐�", err);
+    districtList.value = []; // 鍙�夛細娓呯┖鎴栦繚鐣欏凡鍔犺浇閮ㄥ垎
+  } finally {
+    // 鏆傛椂鍏堝叧闂姞杞界姸鎬侊紝鍥犱负姝ゅ涓哄垎椤佃姹傛暟鎹紝鐒跺悗涓�鐐逛竴鐐圭殑娓叉煋锛屾渶缁堜細鍔犺浇瀹屾垚
+    // 濡傛灉寮�鍚姞杞界姸鎬侊紝鏈�鍚庤繕鏄細绛夋墍鏈夋暟鎹兘璇锋眰鍥炴潵鎵嶄細娓叉煋
+    // loading.value = false; // 鍏抽棴鍔犺浇鐘舵��
+  }
+};
+
 // 澶勭悊鍖哄煙鍙樺寲浜嬩欢
 const handleChange = (item) => {
-  const areaName = item;
-  if (!areaName) {
+  selectValue1.value = "";
+  selectValue.value = item;
+
+  if (!item) {
     ElMessage.warning("璇烽�夋嫨涓�涓尯鍩�");
     return;
   }
-  filterDataByArea(areaName);
+  filterDataByArea(item);
 };
+
 let isInitialized = false;
 
-// watch(
-//   () => simStore.DangerShowSwitch,
-//   async (newValue, oldValue) => {
-//     console.log("褰撳墠鐘舵�侊細", newValue);
-
-//     if (newValue) {
-//       if (!isInitialized) {
-//         await initializeDevicePoints();
-//         isInitialized = true;
-//       }
-//     } else {
-//       clearAllPoints();
-//       isInitialized = false;
-//     }
-//   }
-// );
 // 鐩戝惉 simStore.DangerPoint 鍙樺寲
 watch(
   () => simStore.DangerPoint,

--
Gitblit v1.9.3