guonan
8 天以前 112fe00d846c65847b0a1e9570ab19dfcf8ed784
src/views/Home.vue
@@ -8,10 +8,14 @@
  <!-- <Left v-if="leftShow" />
      <Right v-if="rightShow" /> -->
  <Tools :style="rightRiverShow || showDangerAssess
    ? { right: '400px' }
    : { right: '12px' }
    " class="tools" />
  <Tools
    :style="
      rightRiverShow || showDangerAssess
        ? { right: '400px' }
        : { right: '12px' }
    "
    class="tools"
  />
  <!-- <Message v-if="messageShow" class="messageTool" /> -->
  <Announcement v-show="$route.fullPath != '/'" class="announcementTool" />
  <!-- <Location v-if="locationShow" class="locationTool" /> -->
@@ -22,7 +26,6 @@
  <ImagePreview v-if="showPreview" />
  <!-- <Weather v-if="weatherShow" @close="weatherShow = false" /> -->
  <Bar v-if="barShow" @close="barShow = false" />
  <Detail v-if="showDetail" />
</template>
@@ -52,17 +55,15 @@
import GisView from "./GisView.vue";
// import Device from "@/components/menu/Device.vue";
import Detail from "@/components/tools/Detail.vue";
// 不可以删除,否则全局样式会丢掉,不知道原因
import ResultAssess from "@/components/monifangzhen/ResultAssess.vue";
// import ResultAssess from "@/components/monifangzhen/ResultAssess.vue";
// import DangerAssess from "@/components/monifangzhen/DangerAssess.vue";
import { showDeviceDetail } from "@/store";
import { setupTokenRefresh } from "@/api/hpApi.js"
import { getSimData ,fetchWaterSimulationData} from "@/api/trApi.js"
import { convertToWKT } from '@/utils/wktUtils';
import { setupTokenRefresh, getDangerPoint, getAllCode } from "@/api/hpApi.js";
import { convertToWKT } from "@/utils/wktUtils";
import { getDeviceInfoSHG, getWeather } from "@/api/hpApi";
const route = useRoute();
const simStore = useSimStore();
const backHome = ref(false);
// 接收来自 ComponentA 的事件,并更新 isFlying
function handleBackToHome() {
@@ -82,34 +83,86 @@
const { init, startYHGL, startZHJC, startMNFZ, startMNPG } = simStore;
// 模拟的经纬度数组
const multiPolygonCoordinates = [
    [
        [120.123456, 30.654321],
        [120.234567, 30.765432],
        [120.345678, 30.876543],
        [120.123456, 30.654321] // 闭合点
    ],
    [
        [121.111111, 31.222222],
        [121.333333, 31.444444],
        [121.555555, 31.666666],
        [121.111111, 31.222222] // 闭合点
    ]
  [
    [120.123456, 30.654321],
    [120.234567, 30.765432],
    [120.345678, 30.876543],
    [120.123456, 30.654321], // 闭合点
  ],
  [
    [121.111111, 31.222222],
    [121.333333, 31.444444],
    [121.555555, 31.666666],
    [121.111111, 31.222222], // 闭合点
  ],
];
// 计算属性
const showDetail = computed(() => showDeviceDetail.value);
function groupTopWithLeafNodes(dataArray) {
  const result = {};
  function traverse(nodes, topLevelName = null) {
    if (!Array.isArray(nodes)) return;
    for (const node of nodes) {
      const isLeaf = !node.children || node.children.length === 0;
      // 如果是顶层节点,记录它的名字作为 key
      if (!topLevelName && !isLeaf) {
        topLevelName = node.nameChn;
        if (!result[topLevelName]) {
          result[topLevelName] = [];
        }
      }
      // 如果是叶子节点,加入对应数组
      if (isLeaf && topLevelName) {
        result[topLevelName].push({
          name: node.nameChn,
          code: node.code,
        });
      }
      // 继续递归子节点(保持当前顶层名称)
      if (node.children && node.children.length > 0) {
        traverse(node.children, topLevelName);
      }
    }
  }
  // 遍历整个大数组中的每一项(即每一个区域)
  for (const item of dataArray) {
    if (item && item.children && Array.isArray(item.children)) {
      traverse([item]); // 把当前项包装成数组,方便统一处理
    }
  }
  return result;
}
onMounted(async () => {
  setupTokenRefresh()// 获取宏图token
  getSimData() //测试tr后端
  getAllCode().then((res) => {
    // 北京市所有村以及街道code
    simStore.townCodeAll = groupTopWithLeafNodes(res.data[0].children);
    console.log(simStore.townCodeAll, "中科软接口获取乡镇code");
  });
  setupTokenRefresh(); // 获取宏图token
  // getSimData(); //测试tr后端
  // 获取隐患点列表(因为中科软后端接口获取加载时间较长)
  getDangerPoint("110116110000").then((res) => {
    simStore.DangerPoint = res.data.pageData;
  });
  getDeviceInfoSHG(null).then((res) => {
    simStore.devices = res.data.pageData;
  });
  try {
    const wktResult = convertToWKT(multiPolygonCoordinates);
    // console.log(wktResult,'a');
    // 输出: MULTIPOLYGON(((120.123456 30.654321,120.234567 30.765432,120.345678 30.876543,120.123456 30.654321)))
  } catch (error) {
    console.error(error.message);
  }
});
// 初始化