MainView.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <script setup>
  2. import {
  3. defineAsyncComponent
  4. } from 'vue';
  5. import JtHeader from './components/header.vue';
  6. import modifyModule from './components/modifyPassword.vue';
  7. import ZhHeader from "./components/ZhHeader.vue";
  8. import map3d from './components/map.vue';
  9. // import basicLayer from './components/basicLayer.vue';
  10. const layer = defineAsyncComponent(() => import('./components/layer.vue'));
  11. const basicLayer = defineAsyncComponent(() => import('./components/basicLayer.vue'));
  12. import {
  13. provide
  14. } from "vue";
  15. provide("getMapInstance", () => {
  16. return jt3d;
  17. });
  18. </script>
  19. <template>
  20. <div class="Mainpage">
  21. <!-- 顶栏容器 -->
  22. <!-- <JtHeader @handleSelect="handleSelect" /> -->
  23. <ZhHeader></ZhHeader>
  24. <map3d @onload="jtMap3DOnload" ref="refMap3d" class="map3d" />
  25. <template v-if="mapLoaded">
  26. <!-- 图层控制按钮 -->
  27. <div class="layerButton" @click="layerIsShow">
  28. </div>
  29. <!-- 底图组件 -->
  30. <basicLayer style="display: none;" ref="basicLayers"></basicLayer>
  31. <!-- 图层列表 -->
  32. <jt-popup width="300rem" height="650rem" title="图层列表" bottom="140rem" right="1240rem" v-show="layershow"
  33. class="layerStyle">
  34. <layer></layer>
  35. </jt-popup>
  36. <!-- <div v-show="layershow" class="layerStyle">
  37. <layer></layer>
  38. </div> -->
  39. <!-- 控制路由页面是否缓存 -->
  40. <router-view v-slot="{ Component }">
  41. <keep-alive>
  42. <component :is=" Component" v-if="$route.meta.keepAlive" />
  43. </keep-alive>
  44. <component :is="Component" v-if="!$route.meta.keepAlive" />
  45. </router-view>
  46. </template>
  47. <!-- 修改密码 -->
  48. <!-- <modifyModule ref="modifyMoudle"></modifyModule> -->
  49. </div>
  50. </template>
  51. <script>
  52. import {
  53. Store
  54. } from '@/store/index'
  55. let store = Store();
  56. let jt3d = undefined;
  57. export default {
  58. name: 'MainView',
  59. /* 数据 */
  60. data() {
  61. return {
  62. mapLoaded: false, //保证地图加载完成,在加载子路由
  63. layershow: false, //图层是否显示
  64. }
  65. },
  66. computed: {
  67. rotate() {
  68. // 使用 inject 函数来获取 store 实例
  69. return store.rotate;
  70. },
  71. },
  72. watch: {
  73. rotate(newValue) {
  74. if (newValue) {
  75. jt3d.setMapSpinByPoint([117.47086573, 36.33604045]);
  76. }
  77. }
  78. },
  79. /* 方法 */
  80. methods: {
  81. //修改密码弹出框事件
  82. modifyMoudle() {
  83. this.$refs.modifyMoudle.isshow = true
  84. },
  85. jtMap3DOnload(map) {
  86. jt3d = map;
  87. this.mapLoaded = true;
  88. console.log('地图实例', jt3d)
  89. store.jt3d = jt3d
  90. },
  91. layerIsShow() {
  92. this.layershow = !this.layershow
  93. },
  94. },
  95. mounted() {
  96. },
  97. beforeUnmount() {
  98. console.log('重新设置一张图!!!')
  99. localStorage.setItem("currenttab", "YzTtitle");
  100. },
  101. // beforeRouteLeave(to, from, next) {
  102. // console.log(123)
  103. // this.$unmounted();
  104. // next();
  105. // }
  106. }
  107. </script>
  108. <style lang="scss" scoped>
  109. @charset "UTF-8";
  110. @font-face {
  111. font-family: "TTTGB-Medium";
  112. src: url("@/assets/fonts/fonts/TTTGB-Medium.ttf") format("truetype"),
  113. url("@/assets/fonts/fonts/TTTGB-Medium.eot") format("embedded-opentype"),
  114. url("@/assets/fonts/fonts/TTTGB-Medium.svg") format("svg");
  115. font-weight: normal;
  116. font-style: normal;
  117. }
  118. .layerStyle {
  119. // position: fixed;
  120. // left: 400rem;
  121. // bottom:130rem;
  122. // width: 320rem;
  123. // height: 650rem;
  124. overflow: hidden;
  125. // background-color: rgba(5, 45, 115, 0.5) !important;
  126. z-index: 11;
  127. user-select: none;
  128. font-family: "TTTGB-Medium", sans-serif !important;
  129. }
  130. .layerButton {
  131. background: url('@/assets/images/layer/selLayer.png') no-repeat;
  132. background-size: 100% 100%;
  133. font-family: "TTTGB-Medium", sans-serif !important;
  134. position: fixed;
  135. left: 400rem;
  136. bottom: 80rem;
  137. width: 150rem;
  138. height: 40rem;
  139. // background-color: rgba(255,255,255,0.5);
  140. color: #000;
  141. line-height: 40rem;
  142. cursor: pointer;
  143. z-index: 11;
  144. user-select: none;
  145. }
  146. .Mainpage {
  147. position: relative;
  148. top: 0;
  149. width: 100%;
  150. height: 100%;
  151. }
  152. .map3d {
  153. z-index: 5;
  154. }
  155. </style>