guonan
2025-06-18 1188387a47e55590a87c161cb43b2db0729b0146
src/components/menu/Location.vue
@@ -5,13 +5,30 @@
    </div>
    <div class="left-content district-content">
      <div style="margin-left: 5px; margin-bottom: 5px">
        <span style="color: white">北京市:</span>
        <el-select
          @change="handleChange1"
          v-model="selectValue1"
          placeholder="请选择行政区"
          size="mini"
          style="width: 240px"
        >
          <el-option
            v-for="item in BJoptions"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </div>
      <div style="margin-left: 5px">
        <span style="color: white">重点沟:</span>
        <el-select
          @change="handleChange"
          v-model="selectValue"
          placeholder="Select"
          size="large"
          placeholder="请选择重点沟"
          size="mini"
          style="width: 240px"
        >
          <el-option
@@ -23,15 +40,24 @@
        </el-select>
      </div>
      <div style="overflow-y: auto; height: 95%">
      <!-- 滚动区域 -->
      <div style="overflow-y: auto; height: 91%; position: relative">
        <!-- 加载遮罩层 -->
        <div v-if="loading" class="loading-overlay">
          <div class="loading-content">
            <el-icon class="loading-icon"><Loading /></el-icon>
            <span class="loading-text">数据加载中...</span>
          </div>
        </div>
        <div
          v-else
          v-for="(item, key) in districtList"
          :key="key"
          class="district-item"
          @click="handleClick(item)"
        >
          <div class="district-item-icon"></div>
          <div class="district-item-text">{{ item.hdName }}</div>
          <div class="district-item-text" :title="item.hdName">{{ item.hdName }}</div>
        </div>
      </div>
    </div>
@@ -39,670 +65,62 @@
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, reactive } from "vue";
import { createPoint, removeEntities } from "@/utils/map";
import { ref, onMounted, watch, onBeforeUnmount } from "vue";
import { createPoint, clearAllPoints } from "@/utils/map";
import { useSimStore } from "@/store/simulation";
const simStore = useSimStore();
const selectValue = ref("孙胡沟");
const options = ref([
  {
    value: "孙胡沟",
    label: "孙胡沟",
  },
  {
    value: "鱼水洞后沟",
    label: "鱼水洞后沟",
  },
  {
    value: "于家西沟",
    label: "于家西沟",
  },
  {
    value: "北河沟",
    label: "北河沟",
  },
  {
    value: "龙泉峪村",
    label: "龙泉峪村",
  },
]);
import { initeWaterPrimitiveView } from "@/utils/water"; //相机flyTo函数,后续options列表中有对应经纬度后弃用
import { useRoute, onBeforeRouteUpdate } from "vue-router";
import { Loading } from "@element-plus/icons-vue";
import { getDangerPointByPage } from "@/api/hpApi";
const districtList = ref([]);
// const districtList = ref([
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116020058",
//     latitude: 40.56652778,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村尹家西沟尹建燕家屋后",
//     longitude: 116.5803889,
//     monitor: "",
//     monitorAdvice: "",
//     name: "尹家西沟尹建燕家屋后崩塌隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "小型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 2,
//     threatenMoney: 0,
//     threatenPopulation: "3",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "崩塌",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116020078",
//     latitude: 40.56497222,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村河西于凤英家屋后",
//     longitude: 116.5955278,
//     monitor: "",
//     monitorAdvice: "",
//     name: "河西于凤英家屋后崩塌隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "小型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 4,
//     threatenMoney: 0,
//     threatenPopulation: "6",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "崩塌",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030041",
//     latitude: 40.55369444,
//     length: 0,
//     district: "琉璃庙镇孙胡沟公路",
//     longitude: 116.6002778,
//     monitor: "",
//     monitorAdvice: "",
//     name: "南梁小东沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "小型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 0,
//     threatenMoney: 0,
//     threatenPopulation: "",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030015",
//     latitude: 40.55277778,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村南梁村大窑沟",
//     longitude: 116.5994722,
//     monitor: "",
//     monitorAdvice: "",
//     name: "大窑沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "已监测、已治理",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "中型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 5,
//     threatenMoney: 0,
//     threatenPopulation: "11",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030076",
//     latitude: 40.55972222,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村东坎大东沟",
//     longitude: 116.5916667,
//     monitor: "",
//     monitorAdvice: "",
//     name: "大东沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "已治理",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "小型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 1,
//     threatenMoney: 0,
//     threatenPopulation: "2",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030074",
//     latitude: 40.56580556,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村尹家西沟",
//     longitude: 116.59,
//     monitor: "",
//     monitorAdvice: "",
//     name: "尹家西沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes:
//       "已监测;灾害体变化:4处坡积物垮塌,堆积至坡脚,方量约20m³。",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "中型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 7,
//     threatenMoney: 0,
//     threatenPopulation: "12",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030053",
//     latitude: 40.57361111,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村北大地西洼子沟",
//     longitude: 116.5897222,
//     monitor: "",
//     monitorAdvice: "",
//     name: "北大地西洼子沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "沟口正对房屋,降雨时出水量大,建议治理,汛期加强巡查",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "中型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 6,
//     threatenMoney: 0,
//     threatenPopulation: "10",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116020102",
//     latitude: 40.55972222,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村范家庄王秀莲家屋后",
//     longitude: 116.5922222,
//     monitor: "",
//     monitorAdvice: "",
//     name: "范家庄王秀莲家屋后崩塌隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "边坡较陡,顺向岩层,房屋靠近坡脚,建议尽快治理",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "小型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 1,
//     threatenMoney: 0,
//     threatenPopulation: "3",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "崩塌",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116020742",
//     latitude: 40.57680556,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村三亩地范忠田家屋后",
//     longitude: 116.5887222,
//     monitor: "",
//     monitorAdvice: "",
//     name: "三亩地范忠田家屋后崩塌隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,更换警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "中型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 8,
//     threatenMoney: 0,
//     threatenPopulation: "23",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "崩塌",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030040",
//     latitude: 40.56344444,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村河西于家西沟",
//     longitude: 116.5953889,
//     monitor: "",
//     monitorAdvice: "",
//     name: "于家西沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes:
//       "已监测,2018村已治理;沟口堆积扇明显,正对房屋,建议汛期加强巡查",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "中型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 18,
//     threatenMoney: 0,
//     threatenPopulation: "59",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030055",
//     latitude: 40.55283333,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村椴树底下东沟",
//     longitude: 116.5999444,
//     monitor: "",
//     monitorAdvice: "",
//     name: "椴树底下东沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "已治理:威胁对象重复:与110116030015重复5户11人",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,预警转移,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "中型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 5,
//     threatenMoney: 0,
//     threatenPopulation: "11",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
//   {
//     activeStatus: "",
//     areaCode: "",
//     areaName: "",
//     brookLength: 0,
//     checkId: "",
//     city: "北京市",
//     codeProvince: "110116",
//     county: "怀柔",
//     dangerLevel: "",
//     disasterStatus: "",
//     drainageArea: "",
//     elevation: 0,
//     featureDes: "",
//     groupMonitor: "李桂梅,孙桂和,范满田,秦建权,孙桂江,孙桂伟",
//     hasPlan: "",
//     id: "110116030054",
//     latitude: 40.56166667,
//     length: 0,
//     district: "琉璃庙镇孙胡沟村上台子河东南沟",
//     longitude: 116.5997222,
//     monitor: "",
//     monitorAdvice: "",
//     name: "河东南沟泥石流隐患点",
//     number:
//       "13716108909,13716029391,13716291714,13716191943,13716427398,13124792612",
//     preventionDes: "已监测",
//     preventionLevel: "",
//     preventionPlan: "定期巡查,立警示牌",
//     preventionUnit: "乡镇",
//     principal: "",
//     province: "北京市",
//     qp: "",
//     reason: "",
//     responsibleUnit: "",
//     riskLevel: "",
//     scale: "小型",
//     stableLevel: "",
//     status: "",
//     thickness: 0,
//     threatenFamily: 0,
//     threatenMoney: 0,
//     threatenPopulation: "",
//     threatenType: "",
//     town: "琉璃庙镇",
//     trigger: "",
//     type: "泥石流",
//     village: "孙胡沟村",
//     volume: "",
//     volumePotential: "",
//     width: 0,
//   },
// ]);
const simStore = useSimStore();
const route = useRoute();
onBeforeUnmount(() => {
  if (route.path !== "/yhgl") {
    clearAllPoints();
  }
});
const selectValue = ref("孙胡沟");
const selectValue1 = 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: "龙泉峪村" },
]);
const loading = ref(true); // 控制加载状态
function handleClick(district) {
  const entity = viewer.entities.getById(district.unifiedCode);
  if (selectValue.value) {
    // 此处调用是因为GisView页面会在点击下一乡镇之前把上一个选择的区域的隐患点清除掉(如果刚好选择了孙胡沟,那么下一个点击将会清空孙胡沟的隐患点)
    initializeDevicePoints();
  } else {
    // 行政区划的点位太多了,只能选中哪个渲染哪个
    DevicePoints(district);
  }
  const entity = viewer.entities.getById(district.hdId);
  if (entity) {
    viewer.flyTo(entity, {
      offset: {
@@ -712,46 +130,136 @@
      },
    });
  }
  // if (entity) {
  //    viewer.flyTo(entity)
  // }
}
// 隐患点列表
const originalData = simStore.DangerPoint; // 存储原始数据(仅加载一次)
const initializeDevicePoints = async () => {
  await Promise.all(
    districtList.value.map(async (item, index) => {
      // 根据需求可增删
      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);
      // 打印每个设备的名称和设备类型
      // console.log(`设备名称: ${item.id}, 设备类型: ${item.name}`);
    })
  );
};
// 根据区域名称过滤数据
const filterDataByArea = (areaName) => {
  if (!areaName) {
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) {
    districtList.value = [];
    return;
  }
  districtList.value = originalData.filter((item) =>
  const filteredData = simStore.DangerPoint.filter((item) =>
    item.position?.includes(areaName)
  );
  if (JSON.stringify(districtList.value) !== JSON.stringify(filteredData)) {
    districtList.value = filteredData;
    await initializeDevicePoints();
  }
};
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);
};
// 组件挂载时加载原始数据,并默认过滤为 "孙胡沟"
onMounted(async () => {
  // await loadAllData();
  filterDataByArea("孙胡沟"); // 默认显示孙胡沟的数据
});
onBeforeUnmount(() => {
  // removeEntities()
let isInitialized = false;
// 监听 simStore.DangerPoint 变化
watch(
  () => simStore.DangerPoint,
  (newVal) => {
    if (newVal && newVal.length > 0) {
      filterDataByArea(selectValue.value);
      loading.value = false; // 数据加载完成
    } else {
      clearAllPoints();
      districtList.value = [];
      loading.value = true; // 数据未准备就绪
    }
  }
);
onMounted(() => {
  clearAllPoints();
  // initeWaterPrimitiveView();
  // 默认先检查一遍数据
  if (simStore.DangerPoint && simStore.DangerPoint.length > 0) {
    filterDataByArea("孙胡沟");
    loading.value = false;
  } else {
    loading.value = true;
  }
});
</script>
<style lang="less" scoped>
.district {
  position: absolute;
@@ -767,10 +275,14 @@
  cursor: pointer;
  margin-top: 10px;
}
.district-content {
  padding: 10px;
  box-sizing: border-box;
  height: calc(100% - 70px);
  position: relative;
}
.district-item-icon {
  background: url("@/assets/img/menu/locationicon.png") no-repeat;
  background-position: 5px 5px;
@@ -786,9 +298,50 @@
  overflow: hidden;
  text-overflow: ellipsis;
}
.loading-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  // background-color: rgba(0, 0, 0, 0.7);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 100;
  // border-radius: 4px;
}
.loading-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #fff;
}
.loading-icon {
  font-size: 24px;
  margin-bottom: 8px;
  animation: rotating 2s linear infinite;
}
.loading-text {
  font-size: 14px;
}
@keyframes rotating {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
/deep/ .el-select__placeholder {
  color: white;
}
/deep/ .el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
  color: white !important;