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