guonan
2025-06-10 f0a0f01ca70e852caf0300fd47d1840799c4d65d
撒点
已修改6个文件
181 ■■■■ 文件已修改
src/api/hpApi.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tools/LayerTree.vue 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/map.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/GisView.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/left/KGSimOption/RealTimeSimulation.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
// 按照北京市code查询行政区code
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;
}
// 按照行政区code查询乡镇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;
}
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",
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("孙胡沟隐患点", list);
//   }
// });
    treeMap.set("孙胡沟隐患点", list);
  }
});
let divPointList = [];
/**
@@ -351,7 +351,7 @@
 * 初始化所有数据
 */
function getData() {
  // initDevicePoint();
  initDevicePoint();
  // initDistrictPoint();
  initDuanmianPoint();
  addTetrahedron();
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);
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") {
  // 添加默认值
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);