Selaa lähdekoodia

地图菜单联动bug修复

Hwf 8 kuukautta sitten
vanhempi
commit
7192b20725

+ 1 - 0
src/types/components.d.ts

@@ -99,6 +99,7 @@ declare module 'vue' {
     UserSelect: typeof import('./../components/UserSelect/index.vue')['default']
     VideoContainer: typeof import('./../components/HKVideo/video-container.vue')['default']
     YMap: typeof import('./../components/Map/YMap.vue')['default']
+    YMapold: typeof import('./../components/Map/YMapold.vue')['default']
     YztMap: typeof import('./../components/Map/YztMap/index.vue')['default']
   }
   export interface ComponentCustomProperties {

+ 1 - 6
src/views/globalMap/LeftMenu.vue

@@ -118,12 +118,7 @@ const changeBoxShow = (item) => {
 // 处理菜单点击事件
 const handleClick = (item) => {
   item.checked = !item.checked;
-  emits('clickMenu', item);
-  // if (item.component === '2') {
-  //   emits('addMarkers', item);
-  // } else {
-  //
-  // }
+  emits('clickMenu', item, menuData.value);
 };
 
 const initData = () => {

+ 11 - 0
src/views/globalMap/RightMenu/PotentialFloodHazard.vue

@@ -0,0 +1,11 @@
+<template>
+  <div class="menu-content"></div>
+</template>
+
+<script lang="ts" setup>
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 9 - 3
src/views/globalMap/RightMenu/index.vue

@@ -46,6 +46,8 @@
         <Fireproofing v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '森林防火'" @handle-menu="handleMenu" />
         <!--防灾救援-->
         <Mitigation v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '防灾救援'" @handle-menu="handleMenu" />
+        <!--易涝隐患点-->
+        <PotentialFloodHazard v-if="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '易涝隐患点'" @handle-menu="handleMenu" />
       </div>
     </div>
   </div>
@@ -121,11 +123,15 @@ const handleMenu = (name) => {
 const updateMenu = (type, menu) => {
   if (type === '1') {
     if (menu.name === '图层分析') {
-
+      let index = menuState.menuData.findIndex((item) => {
+        return item.name === menu.name;
+      });
+      if (index === -1) {
+        menuState.menuData.push(menu);
+      }
     } else {
-
+      menuState.menuData.push(menu);
     }
-    menuState.menuData.push(menu);
     clickMenu(menuState.menuData.length - 1);
   } else if (type === '2') {
     let index = menuState.menuData.findIndex((item) => item.name === menu.name);

+ 20 - 2
src/views/globalMap/index.vue

@@ -29,6 +29,7 @@ import { deepClone } from '@/utils';
 import { getPointInfo } from '@/api/globalMap';
 import RightMenu from './RightMenu/index.vue';
 import { PointType } from '@/api/globalMap/type';
+import { c } from 'vite/dist/node/types.d-aGj9QkWt';
 
 interface Props {
   isComponent?: boolean;
@@ -109,7 +110,7 @@ let showDrawTools = ref(false);
 // 右侧菜单
 
 // 点击菜单
-const clickMenu = (item) => {
+const clickMenu = (item, dataList) => {
   if (item.path === '1') {
     // 空间分析
     if (item.component === 'spatial') {
@@ -117,11 +118,28 @@ const clickMenu = (item) => {
     }
     rightMenuRef.value.updateMenu(item.checked ? '1' : '2', item);
   } else if (item.path === '2') {
+    let checked = item.checked ? '1' : '2';
+    let index = findChecked(dataList, item.name);
     // 打点信息
     addMarkers(item);
-    rightMenuRef.value.updateMenu(item.checked ? '1' : '2', { name: '图层分析', meta: { icon: 'icon1' } });
+    if (item.checked || (!item.checked && index === 0)) {
+      rightMenuRef.value.updateMenu(checked, ['易涝隐患点'].includes(item.name) ? item : { name: '图层分析', meta: { icon: 'icon1' } });
+    }
   }
 };
+const findChecked = (dataList, name) => {
+  let index = 0;
+  dataList.forEach((item) => {
+    if (item.name !== name && item.path === '2' && !!item.checked) {
+      index++;
+    }
+    if (item.children && item.children.length > 0) {
+      let res = findChecked(item.children, name);
+      index += res;
+    }
+  });
+  return index;
+};
 // 点击搜索结果,添加标注
 const selectSearchMarker = (item) => {
   const dom = activeMap.value === 'satellite2' ? map2Ref.value : mapRef.value;