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