From f0a0f01ca70e852caf0300fd47d1840799c4d65d Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期二, 10 六月 2025 11:08:34 +0800
Subject: [PATCH] 撒点

---
 src/components/tools/LayerTree.vue                |   46 +++++-----
 src/views/GisView.vue                             |   50 +++++++++---
 src/utils/map.js                                  |    4 
 src/api/hpApi.js                                  |   62 +++++++++++++++
 src/api/index.js                                  |   12 +++
 src/views/left/KGSimOption/RealTimeSimulation.vue |    7 +
 6 files changed, 141 insertions(+), 40 deletions(-)

diff --git a/src/api/hpApi.js b/src/api/hpApi.js
index b497b88..23e827e 100644
--- a/src/api/hpApi.js
+++ b/src/api/hpApi.js
@@ -183,4 +183,66 @@
   });
   console.log("getRainfallData:", response);
   return response.data;
+}
+
+// 鏌ヨ闆ㄩ噺璁¤鏁�
+export async function getYLJData(data) {
+  // 鑾峰彇褰撳墠鏃堕棿
+  const now = new Date();
+
+  // 璁$畻涓�灏忔椂鍓嶇殑鏃堕棿
+  const oneHourAgo = new Date(now.getTime() - 2 * 60 * 60 * 1000);
+
+  // 鏍煎紡鍖栨椂闂翠负YYYY-MM-DD HH:mm:ss
+  const formatTime = (date) => {
+    const pad = (num) => num.toString().padStart(2, '0');
+    return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
+  };
+
+  const response = await axios.post("/hp/ylclyPacket/getData", {
+    "currentPage": 1,
+    "pageSize": 20,
+    "filterObject": {
+      "deviceName": "",
+      "deviceCode": data,
+      "sendTimeList": [
+        formatTime(oneHourAgo),  // 涓�灏忔椂鍓�
+        formatTime(now)         // 褰撳墠鏃堕棿
+      ],
+      "divisionDistrict": "110116000000",
+      "townCode": "110116110000",
+      "dictPacketsDataStatus": "1887255639886540806",
+    }
+  });
+
+  console.log("getYLJData:", response);
+  return response.data;
+}
+
+// 鎸夌収鍖椾含甯俢ode鏌ヨ琛屾斂鍖篶ode
+export async function getAeraCode() {
+  const response = await axios.post("/hp/sinoDzHiddenDangerPoint/getHiddenDangerCountByDistrict", {
+    "dictDisasterGrade": "",
+    "dictDisasterType": "",
+    "dictRiskLevel": "",
+    "districtCode": "110000000000",
+    "dictThreatObj": "",
+    "year": "2025"
+  });
+  console.log("getAeraCode:", response);
+  return response.data;
+}
+
+// 鎸夌収琛屾斂鍖篶ode鏌ヨ涔¢晣code
+export async function getAeraTownCode(data) {
+  const response = await axios.post("/hp/sinoDzHiddenDangerPoint/getHiddenDangerTownCount", {
+    "dictDisasterGrade": "",
+    "dictDisasterType": "",
+    "dictRiskLevel": "",
+    "districtCode": data,
+    "dictThreatObj": "",
+    "year": "2025"
+  });
+  console.log("getAeraCode:", response);
+  return response.data;
 }
\ No newline at end of file
diff --git a/src/api/index.js b/src/api/index.js
index dd62064..710edf6 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -42,6 +42,18 @@
 	return await response.json()
 }
 
+
+// export async function getDistrictCount() {
+// 	const response = await fetch("/json/response.json", {
+// 		mode: "cors",
+// 		cache: "no-cache",
+// 		headers: {
+// 			"Content-Type": "application/json",
+// 		},
+// 	})
+// 	return await response.json()
+// }
+
 export async function getDistrictCountByCity() {
 	const response = await fetch("/json/CountByCounty.json", {
 		mode: "cors",
diff --git a/src/components/tools/LayerTree.vue b/src/components/tools/LayerTree.vue
index 5e4e75f..8f27c05 100644
--- a/src/components/tools/LayerTree.vue
+++ b/src/components/tools/LayerTree.vue
@@ -278,31 +278,31 @@
 }
 
 // 闅愭偅鐐瑰垪琛�
-// watchEffect(() => {
-//   const dangerPoints = simStore.DangerPoint.filter((item) =>
-//     item.position?.includes("瀛欒儭娌�")
-//   );
+watchEffect(() => {
+  const dangerPoints = simStore.DangerPoint.filter((item) =>
+    item.position?.includes("瀛欒儭娌�")
+  );
 
-//   if (dangerPoints && dangerPoints.length > 0) {
-//     const list = [];
+  if (dangerPoints && dangerPoints.length > 0) {
+    const list = [];
 
-//     dangerPoints.forEach((item) => {
-//       // console.log(item, "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";
-//       const entity = createPoint(item);
-//       entity.show = false;
-//       list.push(entity);
-//     });
+    dangerPoints.forEach((item) => {
+      // console.log(item, "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";
+      const entity = createPoint(item);
+      entity.show = false;
+      list.push(entity);
+    });
 
-//     treeMap.set("瀛欒儭娌熼殣鎮g偣", list);
-//   }
-// });
+    treeMap.set("瀛欒儭娌熼殣鎮g偣", list);
+  }
+});
 
 let divPointList = [];
 /**
@@ -351,7 +351,7 @@
  * 鍒濆鍖栨墍鏈夋暟鎹�
  */
 function getData() {
-  // initDevicePoint();
+  initDevicePoint();
   // initDistrictPoint();
   initDuanmianPoint();
   addTetrahedron();
diff --git a/src/utils/map.js b/src/utils/map.js
index f6f3975..d43b581 100644
--- a/src/utils/map.js
+++ b/src/utils/map.js
@@ -58,15 +58,15 @@
 }
 
 let entities = [];
-// 鍋囪浣犳湁涓�涓叏灞�瀛樺偍 entities 鐨勭粨鏋勶紙寤鸿鐢� Map 鎻愰珮鎬ц兘鏌ユ壘锛�
 const pointEntityMap = new Map(); // key: id, value: entity
 
 export function createPoint(option) {
   const { id, type = "", name = "榛樿鍚嶇О", view, latitude, longitude, height, callback, imgWidth = 56, imgHeight = 67, showBillboard = true, showLabel = true, className = "device" } = option;
   // 濡傛灉宸茬粡瀛樺湪璇� id 鐨� entity锛屽垯璺宠繃鍒涘缓
   if (pointEntityMap.has(id)) {
+    clearAllPoints()
     console.log(`鐐� ${id} 宸插瓨鍦紝璺宠繃鍒涘缓`);
-    return;
+    // return;
   }
 
   let position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height || 50);
diff --git a/src/views/GisView.vue b/src/views/GisView.vue
index 4d59796..bbb0786 100644
--- a/src/views/GisView.vue
+++ b/src/views/GisView.vue
@@ -47,7 +47,12 @@
 import { useSimStore } from "@/store/simulation";
 const simStore = useSimStore();
 
-import { getDangerPoint, getDeviceInfo } from "@/api/hpApi";
+import {
+  getDangerPoint,
+  getDeviceInfo,
+  getAeraCode,
+  getAeraTownCode,
+} from "@/api/hpApi";
 /////////////////////////鍦板浘褰卞儚閫夋嫨/////////////////////////
 const views = [
   { label: "鍦板浘", value: "map", icon: "鍦板浘.png" },
@@ -419,22 +424,39 @@
 };
 
 // 鍒濆鍖栧尯鍩熺粺璁�
-function initDistrictCount(level = "secondary") {
-  const getPoint =
-    level === "secondary" ? getDistrictCount : getDistrictCountByCity;
-  const config = LEVEL_CONFIG[level];
-
-  getPoint()
-    .then((res) => {
+async function initDistrictCount(level = "secondary") {
+  try {
+    if (level === "primary") {
+      // 涓�绾у尯鍩燂細鐩存帴璋冪敤 getAeraCode()
+      const res = await getAeraCode();
       res.data.forEach((item) => {
-        processDistrictItem(item, config, level); // 娣诲姞level鍙傛暟
+        processDistrictItem(item, LEVEL_CONFIG[level], level);
       });
-    })
-    .catch((error) => {
-      console.error(`鍒濆鍖�${level}绾у尯鍩熺粺璁″け璐�:`, error);
-    });
-}
+    } else if (level === "secondary") {
+      // 浜岀骇鍖哄煙锛氬厛鑾峰彇涓�绾у尯鍩燂紝鍐嶉亶鍘嗘瘡涓竴绾у尯鍩熺殑 code 鏌ヨ浜岀骇鍖哄煙
+      const primaryRes = await getAeraCode();
 
+      // 閬嶅巻鎵�鏈変竴绾у尯鍩熺殑 districtCode锛屽苟鍙戣姹備簩绾у尯鍩熸暟鎹�
+      const townPromises = primaryRes.data.map((item) =>
+        getAeraTownCode(item.districtCode)
+      );
+
+      // 绛夊緟鎵�鏈変簩绾у尯鍩熻姹傚畬鎴�
+      const townResults = await Promise.all(townPromises);
+
+      // 澶勭悊鎵�鏈変簩绾у尯鍩熸暟鎹�
+      townResults.forEach((townRes) => {
+        townRes.data.forEach((townItem) => {
+          processDistrictItem(townItem, LEVEL_CONFIG[level], level);
+        });
+      });
+    } else {
+      console.error("鏈煡鐨� level 绫诲瀷:", level);
+    }
+  } catch (error) {
+    console.error(`鍒濆鍖� ${level} 绾у尯鍩熺粺璁″け璐�:`, error);
+  }
+}
 // 澶勭悊鍗曚釜鍖哄煙椤�
 function processDistrictItem(item, config, level = "secondary") {
   // 娣诲姞榛樿鍊�
diff --git a/src/views/left/KGSimOption/RealTimeSimulation.vue b/src/views/left/KGSimOption/RealTimeSimulation.vue
index 29ca253..0b34776 100644
--- a/src/views/left/KGSimOption/RealTimeSimulation.vue
+++ b/src/views/left/KGSimOption/RealTimeSimulation.vue
@@ -78,7 +78,7 @@
 import { initeWaterPrimitiveView } from "@/utils/water";
 import { SimAPIStore } from "@/store/simAPI";
 import { EventBus } from "@/eventBus"; // 寮曞叆浜嬩欢鎬荤嚎
-import { getDeviceInfoShg } from "@/api/hpApi";
+import { getDeviceInfoShg, getYLJData } from "@/api/hpApi";
 
 // 鑾峰彇 Store 瀹炰緥
 const simStore = SimAPIStore();
@@ -139,6 +139,8 @@
       ...device,
       selected: true, // 榛樿閫変腑
     }));
+
+  console.log(shgList.value, "shgList.valueshgList.value");
 };
 
 // 涓嬫媺妗嗛�変腑鍊肩殑琛ㄦ牸鏁版嵁鍙樺寲
@@ -198,6 +200,9 @@
 // 淇濆瓨鏂规
 const saveSim = async () => {
   try {
+    getYLJData("1101160300070101").then((res) => {
+      console.log(res, "resres");
+    });
     updateSelectedGauges();
     formData.geom = props.selectedArea;
     await simStore.addSimCheme(formData);

--
Gitblit v1.9.3