wangjuncheng
2025-05-19 c6e9813265f13c9d3c9cc371e8e14a4ab3c2895b
change
已修改1个文件
73 ■■■■■ 文件已修改
src/components/menu/Location.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/menu/Location.vue
@@ -1,31 +1,32 @@
<template>
  <div class="district">
    <div class="left-top">
      <span>监测位置</span>
    </div>
    <div class="left-content district-content">
      <div style="margin-left: 5px">
        <span style="color: white">重点沟:</span>
        <el-select @change="handleChange" v-model="selectValue" placeholder="Select" size="large" style="width: 240px">
          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
        </el-select>
  <template>
    <div class="district">
      <div class="left-top">
        <span>监测位置</span>
      </div>
      <!-- 滚动区域 -->
      <div style="overflow-y: auto; height: 95%">
        <!-- 加载遮罩层 -->
        <div v-if="loading" class="loading-overlay">
          <div class="spinner"></div>
      <div class="left-content district-content">
        <div style="margin-left: 5px">
          <span style="color: white">重点沟:</span>
          <el-select @change="handleChange" v-model="selectValue" placeholder="Select" size="large"
            style="width: 240px">
            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
          </el-select>
        </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 style="overflow-y: auto; height: 95%">
          <!-- 加载遮罩层 -->
          <div v-if="loading" class="loading-overlay">
            <div class="spinner"></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>
        </div>
      </div>
    </div>
  </div>
</template>
  </template>
<script setup>
import { ref, onMounted, watch, onBeforeUnmount } from "vue";
@@ -44,6 +45,8 @@
onBeforeUnmount(() => {
  if (route.path !== '/yhgl') {
    console.log('zzzzzzzzzzzzzzzzzzzzzzzzzz');
    handleCleanup();
  }
});
@@ -112,11 +115,14 @@
    districtList.value = [];
    return;
  }
  districtList.value = simStore.DangerPoint.filter((item) =>
  const filteredData = simStore.DangerPoint.filter((item) =>
    item.position?.includes(areaName)
  );
  await initializeDevicePoints();
  if (JSON.stringify(districtList.value) !== JSON.stringify(filteredData)) { // 检查是否真的需要更新
    districtList.value = filteredData;
    await initializeDevicePoints();
  }
};
// 处理区域变化事件
@@ -128,11 +134,19 @@
  }
  filterDataByArea(areaName);
};
watch(() => simStore.DangerShowSwitch, (newValue, oldValue) => {
let isInitialized = false;
watch(() => simStore.DangerShowSwitch, async (newValue, oldValue) => {
  console.log('当前状态:', newValue);
  if (newValue) {
    initializeDevicePoints();
    if (!isInitialized) {
      await initializeDevicePoints();
      isInitialized = true;
    }
  } else {
    handleCleanup()
    handleCleanup();
    isInitialized = false; // 或者保持为 true,取决于你的需求
  }
});
// 监听 simStore.DangerPoint 变化
@@ -147,8 +161,7 @@
      districtList.value = [];
      loading.value = true; // 数据未准备就绪
    }
  },
  { immediate: true }
  }
);
onMounted(() => {