月球大数据地理空间分析展示平台-【前端】-月球2期前端
WX
2023-06-16 ffb95c5b73c2bf11cd66b3c05955833397dc553b
src/views/menus.vue
@@ -1,5 +1,5 @@
<template>
  <div class="menus">
  <div class="menus" v-show="fullScreen">
    <div class="logo_box">
      <img src="../assets/img/logo.png" alt="" class="logo" />
      <div class="logo_name">
@@ -11,6 +11,7 @@
      <div
        class="imgBox"
        v-for="(item, i) in menuOptions"
        :key="i"
        @click="setMenuClick(item)"
      >
        <img
@@ -26,7 +27,15 @@
      </div>
    </div>
  </div>
  <layer-manage> </layer-manage>
  <div class="content_box" v-show="fullScreen">
    <layer-manage v-show="checkMenuFlag == 'l1'"> </layer-manage>
    <plotting v-show="checkMenuFlag == 'l2'"> </plotting>
    <baseMapSwitching v-show="checkMenuFlag == 'l5'"> </baseMapSwitching>
    <search v-if="thematicMapBtnState"> </search>
  </div>
  <top-btn v-show="fullScreen" v-if="thematicMapBtnState"></top-btn>
  <thematic-map v-show="!thematicMapBtnState"></thematic-map>
  <div class="fullScreen_btn" v-show="!fullScreen" @click="screen"></div>
</template>
<script lang="ts" setup>
@@ -40,12 +49,35 @@
} from "vue";
import menuData from "@/assets/js/Map/menuData";
import menuTool from "@/assets/js/Map/menuTool";
//顶部菜单
import topBtn from "@/components/topBtn.vue";
//专题图菜单
import thematicMap from "@/components/thematicMap/thematicMap.vue";
//图层管理页面
import layerManage from "@/views/layer/layerManage.vue";
//地理编码搜索
import search from "@/views/search/search.vue";
//标绘查询
import plotting from "@/views/plotting/plotting.vue";
//底图切换
import baseMapSwitching from "@/views/baseMapSwitching/baseMapSwitching.vue";
const menuOptions = ref([]);
const checkMenuFlag = ref("");
let fullScreen = ref(true);
let thematicMapState = ref(true);
let thematicMapBtnState = ref(true);
const setMenuClick = (res) => {
  console.log(res);
  if (res.id == "l6") {
    // fullScreen.value = !fullScreen.value;
    screen();
  }
  if (res.id == "l3") {
    thematicMapState.value = false;
    thematicMapBtnState.value = false;
  } else {
    thematicMapState.value = true;
    thematicMapBtnState.value = true;
  }
  if (checkMenuFlag.value && checkMenuFlag.value == res.id) {
    checkMenuFlag.value = null;
  } else {
@@ -53,6 +85,50 @@
    menuTool.leftTools(res);
  }
};
// 切换浏览器全屏
const screen = () => {
  fullScreen.value = !fullScreen.value;
  if (fullScreen.value) {
    // 退出全屏
    if (document.exitFullscreen) {
      document.exitFullscreen();
    } else if (document.mozCancelFullScreen) {
      document.mozCancelFullScreen();
    } else if (document.webkitExitFullscreen) {
      document.webkitExitFullscreen();
    }
  } else {
    var element = document.body;
    if (element.requestFullscreen) {
      element.requestFullscreen();
    } else if (element.mozRequestFullScreen) {
      element.mozRequestFullScreen();
    } else if (element.webkitRequestFullscreen) {
      element.webkitRequestFullscreen();
    } else if (element.msRequestFullscreen) {
      element.msRequestFullscreen();
    }
  }
};
// 监听浏览器全屏事件
document.addEventListener("fullscreenchange", () => {
  if (!isFullScreen()) {
    if (!fullScreen.value) {
      fullScreen.value = !fullScreen.value;
      console.log(fullScreen.value);
    }
  }
  console.log(isFullScreen());
});
// 判断是否全屏
function isFullScreen() {
  return (
    document.isFullScreen ||
    document.mozIsFullScreen ||
    document.webkitIsFullScreen
  );
}
onMounted(() => {
  menuOptions.value = menuData.leftMenu;
});
@@ -99,6 +175,7 @@
      display: flex;
      justify-content: center;
      margin-bottom: 52px;
      cursor: pointer;
      img {
        width: 30px;
        height: 30px;
@@ -106,4 +183,24 @@
    }
  }
}
.content_box {
  position: absolute;
  top: 135px;
  left: 100px;
  display: flex;
}
.fullScreen_btn {
  background: url("../assets/img/leftBtn/合集_03.png") no-repeat center;
  background-size: 100% 100%;
  width: 30px;
  height: 30px;
  position: absolute;
  right: 20px;
  top: 20px;
}
.fullScreen_btn:hover {
  background: url("../assets/img/leftBtn/合集_03-02.png") no-repeat center;
  background-size: 100% 100%;
  cursor: pointer;
}
</style>