guonan
2025-07-08 b040d81c856a77f280b38037e78a8b6a8bdb31ab
src/components/menu/Device.vue
@@ -58,13 +58,46 @@
        >
          <template #default="{ node, data }">
            <span v-if="!data.children" class="device-tree-item">
              <span class="device-item-text">{{ node.label }}</span>
              <span class="device-item-text" :title="node.label">{{
                node.label
              }}</span>
            </span>
            <span v-else class="device-tree-category">
              {{ node.label }} ({{ data.children.length }})
            </span>
          </template>
        </el-tree>
        <!-- <el-tree
          v-show="!isLoading"
          :data="deviceTree"
          default-expand-all
          node-key="deviceId"
          :props="treeProps"
          @node-click="handleTreeNodeClick"
          class="device-tree"
        >
          <template #default="{ node, data }">
            <span v-if="!data.children" class="device-tree-item">
              <el-tooltip :content="node.label" placement="top" effect="dark">
                <span class="device-item-text" :title="node.label">{{
                  node.label
                }}</span>
              </el-tooltip>
            </span>
            <span v-else class="device-tree-category">
              <el-tooltip
                :content="`${node.label} (${data.children.length})`"
                placement="top"
                effect="dark"
              >
                <span :title="`${node.label} (${data.children.length})`"
                  >{{ node.label }} ({{ data.children.length }})</span
                >
              </el-tooltip>
            </span>
          </template>
        </el-tree> -->
      </div>
    </div>
  </div>
@@ -73,7 +106,7 @@
<script setup>
import { ref, computed, onMounted, watch, onBeforeUnmount } from "vue";
import { useRoute, onBeforeRouteUpdate } from "vue-router";
import { createPoint, removeEntities, clearAllPoints } from "@/utils/map";
import { createPoint, clearAllPoints } from "@/utils/map";
import { deviceDictList, getDictName } from "@/constant/dict.js";
import { initeWaterPrimitiveView } from "@/utils/water"; //相机flyTo函数,后续options列表中有对应经纬度后弃用
import { useSimStore } from "@/store/simulation";
@@ -144,10 +177,11 @@
  });
};
// 单个点渲染
const DevicePoints = async (item) => {
  // 根据需求可增删
  item.type = getDictName(deviceDictList, item.dictDeviceType);
  item.name = item.deviceName
  item.name = item.deviceName;
  // item.name = item.deviceName.split(selectValue.value)[1] || item.deviceName;
  item.id = item.deviceId;
  item.className = "device";
@@ -271,7 +305,10 @@
  }));
});
function handleTreeNodeClick(data) {
function handleTreeNodeClick(data, node) {
  if (data.children) {
    return; // 一级节点,不执行点击逻辑
  }
  if (selectValue.value) {
    // 此处调用是因为GisView页面会在点击下一乡镇之前把上一个选择的区域的隐患点清除掉(如果刚好选择了孙胡沟,那么下一个点击将会清空孙胡沟的隐患点)
    initializeDevicePoints();
@@ -404,6 +441,7 @@
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-block;
}
:deep(.el-select__placeholder) {