From 5c11db14675b3a0f409e8c79e07304f37514b52a Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期六, 26 十一月 2022 21:14:39 +0800
Subject: [PATCH] 添加综合展示,在线制图,资料馆跳转页面功能,修改数据管理,运维管理页面数据获取

---
 src/views/exportMap/index.vue           |  676 +++++++++++++++++++++++++++++++++++++
 src/api/api.js                          |    9 
 src/views/Synthesis/index.vue           |  193 ++-------
 src/views/datamanage/dataController.vue |    9 
 src/views/datamanage/dataLoader.vue     |    4 
 src/views/maintenance/mochaitmo.vue     |    9 
 src/components/navMenu.vue              |  147 +++++--
 src/router/index.js                     |   12 
 src/views/datamanage/dataUpdata.vue     |    4 
 9 files changed, 862 insertions(+), 201 deletions(-)

diff --git a/src/api/api.js b/src/api/api.js
index 6fcce81..5b0ea7b 100644
--- a/src/api/api.js
+++ b/src/api/api.js
@@ -517,6 +517,11 @@
   return request.get('/dataUpload/selectByPageForUpload', { params: params });
 }
 
+//鏁版嵁涓婁紶=鍒犻櫎鏁版嵁
+export function dataUpload_deleteMetas(params) {
+  return request.get('/dataUpload/deleteMetas', { params: params });
+}
+
 //鏁版嵁鍏ュ簱=>鑾峰彇鐩綍鏍�
 export function dataLoader_selectDirAll(params) {
   return request.get('/dataLoader/selectDirAll', { params: params });
@@ -552,6 +557,10 @@
 export function dataLoader_selectByPageForUpload(params) {
   return request.get('/dataLoader/selectByPageForUpload', { params: params });
 }
+//鏁版嵁鍏ュ簱=>鍒犻櫎鏁版嵁
+export function dataLoader_deleteMetas(params) {
+  return request.get('/dataLoader/deleteMetas', { params: params });
+}
 
 // //鏁版嵁鍏ュ簱=>鏌ヨ鏂囦欢
 // export function dataLoader_selectDirAll(params) {
diff --git a/src/components/navMenu.vue b/src/components/navMenu.vue
index 9825020..a4db331 100644
--- a/src/components/navMenu.vue
+++ b/src/components/navMenu.vue
@@ -8,20 +8,27 @@
     <div class="rightWrapper">
       <div class="rightMenu">
         <ul class="infinite-list menu_ul">
-          <li
-            @click="setMenuMove(index, item)"
-            v-for="(item, index) in listMenu"
-            class="infinite-list-item"
-          >
-            <div
-              class="menuImage"
-              :class="changeSelectStyle == index ? item.checkClass : item.class"
-            ></div>
-            <div
-              class="menulabel"
-              :class="{ changeStyle: changeSelectStyle == index }"
-            >
-              {{ item.label }}
+          <li v-for="(item, index) in listMenu" class="infinite-list-item">
+            <div @click="setMenuMove(index, item)">
+              <div
+                class="menuImage"
+                :class="changeSelectStyle == index ? item.checkClass : item.css"
+              ></div>
+              <div
+                class="menulabel"
+                :class="{ changeStyle: changeSelectStyle == index }"
+              >
+                {{ item.cnName }}
+              </div>
+            </div>
+            <div class="secondMenuDiv" v-show="item.show">
+              <div
+                v-for="res in item.children"
+                @click="setLiClick(res)"
+                :class="{ changeLiStyle: changeliSelect == res.cnName }"
+              >
+                {{ res.cnName }}
+              </div>
             </div>
           </li>
         </ul>
@@ -40,7 +47,7 @@
         </div>
         <color-change></color-change>
       </div>
-
+      <!-- -->
       <!-- <div class="menu"></div>
       <div class="userInfo">
         <img src="../assets/img/user.png" alt="" />
@@ -54,11 +61,13 @@
 </template>
 
 <script>
-import { logout } from '@/api/api';
+import { logout, selectMenuRecursive } from '@/api/api';
 import { removeToken, getToken } from '@/utils/auth';
 import customElMenu from '../components/customElMenu.vue';
 import { queryMenuTree } from '../api/api';
 import colorChange from '../views/maintenance/colorChange.vue';
+import { containsCoordinate } from 'ol/extent';
+import Vue from 'vue';
 export default {
   name: 'navMenu',
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
@@ -86,44 +95,29 @@
       formLabelWidth: '70px',
       count: 5,
       changeSelectStyle: 5,
+      changeliSelect: null,
+      changeSelectdiv: false,
       listMenu: [
         {
-          label: '鏁版嵁璐ㄦ',
-          class: 'm1',
+          cnName: '鏁版嵁璐ㄦ',
+          css: 'm1',
           checkClass: 'm11',
           url: '',
         },
         {
-          label: '鏁版嵁浜ゆ崲',
-          class: 'm2',
+          cnName: '鏁版嵁浜ゆ崲',
+          css: 'm2',
           checkClass: 'm21',
           url: '',
         },
         {
-          label: '鏁版嵁绠$悊',
-          class: 'm3',
-          checkClass: 'm31',
-          url: '',
-        },
-        {
-          label: '鏈嶅姟绠$悊',
-          class: 'm4',
+          cnName: '鏈嶅姟绠$悊',
+          css: 'm4',
           checkClass: 'm41',
           url: '',
         },
-        {
-          label: '缁煎悎灞曠ず',
-          class: 'm5',
-          checkClass: 'm51',
-          url: '',
-        },
-        {
-          label: '杩愮淮绠$悊',
-          class: 'm6',
-          checkClass: 'm61',
-          url: '',
-        },
       ],
+      showFlag: null,
     };
   },
   created() {},
@@ -158,8 +152,36 @@
     },
     //榧犳爣绉诲叆鑿滃崟浜嬩欢
     setMenuMove(index, item) {
-      this.$router.push(item.url);
+      var that = this;
+
+      if (item.perms != null) {
+        this.$router.push(item.url);
+        this.setShowFalseDiv(false);
+        this.changeliSelect = '鍛靛懙';
+        this.showFlag = null;
+      } else {
+        if (this.showFlag != index) {
+          this.showFlag = index;
+          this.setShowFalseDiv(true);
+        } else {
+          let newItem = this.listMenu[index];
+          newItem.show = !this.listMenu[index].show;
+          Vue.set(this.listMenu, index, newItem);
+        }
+      }
+
       this.changeSelectStyle = index;
+    },
+    setShowFalseDiv(bolean) {
+      var index = this.showFlag;
+      let newItem = this.listMenu[index];
+      newItem.show = bolean;
+      Vue.set(this.listMenu, index, newItem);
+    },
+    setLiClick(res) {
+      this.setShowFalseDiv(false);
+      this.changeliSelect = res.cnName;
+      this.$router.push(res.url);
     },
     async getMenuTree() {
       //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
@@ -183,16 +205,18 @@
         }
       }
     },
-    setMenuTree(res) {
-      console.log(res);
-      for (var i = 0; i < res.length; i++) {
-        for (var j = 0; j < this.listMenu.length; j++) {
-          if (this.listMenu[j].label == res[i].cnName) {
-            this.listMenu[j].url = res[i].perms;
-          }
+    async setMenuTree(res) {
+      for (var i in res) {
+        res[i].checkClass = res[i].css + '1';
+        res[i].show = false; //鎺у埗鏄鹃殣
+        if (res[i].perms == null) {
+          const result = await selectMenuRecursive({ name: res[i].cnName });
+          res[i].children = result.result.filter((value) => {
+            return value.pid == res[i].id;
+          });
         }
+        this.listMenu.push(res[i]);
       }
-      console.log(this.listMenu);
     },
     treeData(source) {
       let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
@@ -507,5 +531,30 @@
     color: #2e95fb !important;
     background: linear-gradient(#112f57, #122344) !important;
   }
+  .secondMenuDiv {
+    position: absolute;
+    z-index: 30;
+    margin-top: 10px;
+    border: 1px solid white;
+    border-radius: 5px;
+    div {
+      line-height: 30px;
+
+      background: #303030;
+      padding: 10px;
+
+      font-size: 18px;
+      font-family: Microsoft YaHei;
+      font-weight: 400;
+      color: #ffffff;
+      line-height: 49px;
+      width: 100px;
+    }
+
+    .changeLiStyle {
+      color: #fec801;
+      background: linear-gradient(180deg, #002992, #080472);
+    }
+  }
 }
 </style>
diff --git a/src/router/index.js b/src/router/index.js
index aac88a8..bf58e3d 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -32,7 +32,7 @@
 import domainManage from '../views/datamanage/domainManage.vue'; //鏁版嵁绠$悊-鍊煎煙绠$悊
 import styleManage from '../views/datamanage/styleManage.vue'; //鏁版嵁绠$悊-鏍峰紡绠$悊
 import addStyle from '../views/datamanage/addStyle.vue'; //鏁版嵁绠$悊-鏍峰紡绠$悊-娣诲姞鏍峰紡
-
+import ExportMap from '../views/exportMap/index.vue'; //鍦ㄧ嚎鍒跺浘
 import userInfoManage from '../views/userManage/userInfoManage.vue'; // 鐢ㄦ埛绠$悊妯″潡
 import orgManage from '../views/userManage/orgManage.vue'; // 鐢ㄦ埛绠$悊妯″潡
 import userAuditing from '../views/userManage/userAuditing.vue'; // 鐢ㄦ埛绠$悊妯″潡
@@ -85,7 +85,15 @@
           requireAuth: true, // 鏍囪瘑璇ヨ矾鐢辨槸鍚﹂渶瑕佺櫥褰�
         },
       },
-
+      {
+        path: '/ExportMap',
+        name: 'ExportMap',
+        component: ExportMap,
+        meta: {
+          title: '鍦ㄧ嚎鍒跺浘',
+          requireAuth: true, // 鏍囪瘑璇ヨ矾鐢辨槸鍚﹂渶瑕佺櫥褰�
+        },
+      },
       {
         path: '/Synthesis',
         name: 'Synthesis',
diff --git a/src/views/Synthesis/index.vue b/src/views/Synthesis/index.vue
index 43e74b1..a0d6c7f 100644
--- a/src/views/Synthesis/index.vue
+++ b/src/views/Synthesis/index.vue
@@ -1,6 +1,7 @@
 <template>
   <div class="synthesis">
-    <el-tabs type="border-card">
+    <map-div></map-div>
+    <!-- <el-tabs type="border-card">
       <el-tab-pane v-if="menuStatus.menu1" :label="$t('synthesis.coverage')">
         <coverage />
       </el-tab-pane>
@@ -27,7 +28,7 @@
       </el-tab-pane>
     </el-tabs>
     <el-card class="box-card">
-      <map-div></map-div>
+
     </el-card>
     <div class="plotBox">
       <el-collapse-transition>
@@ -46,21 +47,21 @@
           </ul>
         </div>
       </el-collapse-transition>
-    </div>
+    </div> -->
   </div>
 </template>
 
 <script>
-import coverage from "./coverage.vue"; //鍥惧眰
-import viewport from "./viewport.vue"; //瑙嗗浘
-import wander from "./wander.vue"; //婕父
-import analyse from "./analyse.vue"; //鍒嗘瀽
-import iqyery from "./inquire.vue"; //鏌ヨ
-import orientation from "./orientation.vue"; //瀹氫綅
-import measurement from "./measurement.vue"; //娴嬮噺
-import plotting from "./plotting.vue"; //鏍囩粯
-import MapDiv from "../../components/MapDiv";
-import { getPerms } from "../../api/api";
+import coverage from './coverage.vue'; //鍥惧眰
+import viewport from './viewport.vue'; //瑙嗗浘
+import wander from './wander.vue'; //婕父
+import analyse from './analyse.vue'; //鍒嗘瀽
+import iqyery from './inquire.vue'; //鏌ヨ
+import orientation from './orientation.vue'; //瀹氫綅
+import measurement from './measurement.vue'; //娴嬮噺
+import plotting from './plotting.vue'; //鏍囩粯
+import MapDiv from '../../components/MapDiv';
+import { getPerms } from '../../api/api';
 export default {
   components: {
     coverage,
@@ -78,14 +79,14 @@
       showBtnBox: false,
       itemsOne: [
         {
-          id: "1",
-          name: "synthesis.point",
-          class: "h1",
+          id: '1',
+          name: 'synthesis.point',
+          class: 'h1',
         },
         {
-          id: "2",
-          name: "synthesis.line",
-          class: "h2",
+          id: '2',
+          name: 'synthesis.line',
+          class: 'h2',
         },
         // {
         //   id: "3",
@@ -93,9 +94,9 @@
         //   class: "h3",
         // },
         {
-          id: "4",
-          name: "synthesis.polygon",
-          class: "h4",
+          id: '4',
+          name: 'synthesis.polygon',
+          class: 'h4',
         },
         // {
         //   id: "7",
@@ -113,9 +114,9 @@
         //   class: "h6",
         // },
         {
-          id: "8",
-          name: "synthesis.removepaint",
-          class: "h8",
+          id: '8',
+          name: 'synthesis.removepaint',
+          class: 'h8',
         },
         // {
         //   id: "9",
@@ -152,35 +153,35 @@
     changePlot(res) {
       sgworld.Creator.SimpleGraphic.edit(true, { editProp: true });
       switch (res.id) {
-        case "1":
+        case '1':
           sgworld.Creator.createSimpleGraphic(
-            "point",
+            'point',
             {},
             function (entity) {}
           );
           break;
-        case "2":
+        case '2':
           sgworld.Creator.createSimpleGraphic(
-            "polyline",
+            'polyline',
             {},
             function (entity) {}
           );
           break;
-        case "3":
+        case '3':
           sgworld.Creator.createSimpleGraphic(
-            "rectangle",
+            'rectangle',
             {},
             function (entity) {}
           );
           break;
-        case "4":
+        case '4':
           sgworld.Creator.createSimpleGraphic(
-            "polygon",
+            'polygon',
             {},
             function (entity) {}
           );
           break;
-        case "6":
+        case '6':
           if (window.Excavation) {
             window.Excavation.clear();
             window.Excavation = null;
@@ -188,7 +189,7 @@
             this.$refs.terrainDig.open();
           }
           break;
-        case "5":
+        case '5':
           if (window.TerrainFlattening) {
             window.TerrainFlattening.remove();
             window.TerrainFlattening = null;
@@ -196,14 +197,13 @@
             this.$refs.modelPress.open();
           }
           break;
-        case "7":
+        case '7':
           sgworld.Creator.createModelLibrary();
           break;
-        case "8":
+        case '8':
           this.clearAll();
           break;
-        case "10":
-          
+        case '10':
           break;
       }
     },
@@ -221,11 +221,11 @@
     },
     tepostmessage(res) {
       const msg = {
-        message: "changeTool",
+        message: 'changeTool',
         data: res,
       };
       document
-        .getElementById("sunIframe")
+        .getElementById('sunIframe')
         .contentWindow.postMessage(msg, this.iframeSrc);
     },
     showMenuChange(res, result) {
@@ -239,28 +239,28 @@
     },
     showMenuStatus(res) {
       switch (res.cnName) {
-        case "鍥惧眰":
+        case '鍥惧眰':
           this.menuStatus.menu1 = true;
           break;
-        case "瑙嗗浘":
+        case '瑙嗗浘':
           this.menuStatus.menu2 = true;
           break;
-        case "婕父":
+        case '婕父':
           this.menuStatus.menu3 = true;
           break;
-        case "鍒嗘瀽":
+        case '鍒嗘瀽':
           this.menuStatus.menu4 = true;
           break;
-        case "鏌ヨ":
+        case '鏌ヨ':
           this.menuStatus.menu5 = true;
           break;
-        case "瀹氫綅":
+        case '瀹氫綅':
           this.menuStatus.menu6 = true;
           break;
-        case "娴嬮噺":
+        case '娴嬮噺':
           this.menuStatus.menu7 = true;
           break;
-        case "鏍囩粯":
+        case '鏍囩粯':
           this.menuStatus.menu8 = true;
           break;
       }
@@ -270,7 +270,7 @@
       if (this.$store.state.currentPerms) {
         val = this.$store.state.currentPerms;
       } else {
-        val = "/comprehensive";
+        val = '/comprehensive';
       }
       var permsEntity = this.$store.state.permsEntity;
 
@@ -294,7 +294,7 @@
   },
   mounted() {
     //this.messageName = this.$store.state.teNmme;
-    this.$bus.$on("changetool", (e) => {
+    this.$bus.$on('changetool', (e) => {
       this.tepostmessage(e);
     });
   },
@@ -305,99 +305,10 @@
 };
 </script>
 
-<style >
-.synthesis .el-card {
-  border: transparent !important;
-}
+<style>
 .synthesis {
   width: 100%;
   height: 100%;
-  position: relative;
-}
-.synthesis .el-tabs__item {
-  color: white !important;
-  text-align: center;
-
-  background: rgb(55, 77, 110) !important;
-}
-.synthesis .is-active {
-  color: white !important;
-  background-color: #586884 !important;
-  border: #586884 !important;
-}
-.synthesis .el-tabs__nav-scroll {
-  background: rgb(55, 77, 110) !important;
-}
-.synthesis .el-tabs__content {
-  color: white !important;
-  background-color: #586884 !important;
-  padding: 0px !important;
-}
-.synthesis .box-card {
-  height: 88%;
-  position: relative;
-
-  border-radius: 0px;
-}
-.synthesis .el-card .el-card__body {
-  padding: 0px;
-}
-.synthesis .cardbox {
-  width: 98%;
-  height: 86%;
   position: absolute;
-}
-.synthesis .el-tabs--border-card {
-  border: transparent;
-  background: transparent;
-}
-.synthesis .divli {
-  width: 100%;
-  height: 50%;
-  position: relative;
-}
-.synthesis li {
-  list-style: none;
-  float: left;
-  height: 60px;
-  text-align: center;
-  margin: 2px;
-  position: relative;
-  cursor: pointer;
-  margin-top: 5px;
-}
-.synthesis .backimge8 {
-  width: 30px;
-  height: 30px;
-  position: absolute;
-  background-size: 100% 100%;
-  margin: 0% 30%;
-}
-.synthesis .plotBox {
-  width: 160px;
-  /* height:; */
-  position: absolute;
-  top: 115px;
-  left: 5px;
-  background-color: #596882;
-}
-.synthesis .plotBox .transition-box ul {
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: space-evenly;
-  align-items: center;
-  width: 100%;
-  border-radius: 4px;
-  text-align: center;
-  color: #fff;
-  /* background-color: #bfa; */
-  box-sizing: border-box;
-}
-.synthesis .plotBox .transition-box li {
-  margin: 5px;
-  width: 46%;
-  margin-left: 0;
-  /* background-color: #fff; */
-  justify-content: space-between;
 }
 </style>
diff --git a/src/views/datamanage/dataController.vue b/src/views/datamanage/dataController.vue
index fb96977..277d5d0 100644
--- a/src/views/datamanage/dataController.vue
+++ b/src/views/datamanage/dataController.vue
@@ -42,7 +42,7 @@
 </template>
 
 <script>
-import { selectMenuRecursive } from '../../api/api';
+import { selectMenuRecursive, queryMenuTree } from '../../api/api';
 import customElMenu from '../../components/customElMenu.vue';
 import dataUpdata from '@/views/datamanage/dataUpdata.vue'; //鏁版嵁绠$悊-鏁版嵁涓婁紶
 import catalogueManage from '@/views/datamanage/catalogueManage.vue'; //鏁版嵁绠$悊-鐩綍绠$悊
@@ -98,7 +98,12 @@
   methods: {
     //鑾峰彇鏍�
     async getTreeData() {
-      const res = await selectMenuRecursive({ name: '鏁版嵁绠$悊' });
+      const data = await queryMenuTree();
+      let menuLists = data.result.filter((value) => {
+        return value.url == '/dataController';
+      });
+
+      const res = await selectMenuRecursive({ name: menuLists[0].cnName });
 
       if (res.code == 200) {
         if (res.result.length != 0) {
diff --git a/src/views/datamanage/dataLoader.vue b/src/views/datamanage/dataLoader.vue
index 0be226f..249237b 100644
--- a/src/views/datamanage/dataLoader.vue
+++ b/src/views/datamanage/dataLoader.vue
@@ -311,7 +311,7 @@
   dataLoader_selectMappers,
   dataLoader_SelectTabs,
   dataLoader_selectByPageForUpload,
-  deleteMeta
+dataLoader_deleteMetas
 } from '../../api/api';
 export default {
   name: 'dataUpdata',
@@ -452,7 +452,7 @@
           for (var i in this.multipleDelete) {
             std.push(this.multipleDelete[i].id);
           }
-          const res = await deleteMeta({ids: std.toString() })
+          const res = await dataLoader_deleteMetas({ids: std.toString() })
           if(res.code != 200){
             this.$message.error('鍒犻櫎澶辫触');
           }else{
diff --git a/src/views/datamanage/dataUpdata.vue b/src/views/datamanage/dataUpdata.vue
index 5925249..7271333 100644
--- a/src/views/datamanage/dataUpdata.vue
+++ b/src/views/datamanage/dataUpdata.vue
@@ -274,7 +274,7 @@
 import MyBread from '../../components/MyBread.vue';
 import { getToken } from '@/utils/auth';
 import { selectdirTab, queryDepTree, dataUploadSelectVerByDirid, dataUploadSelectPath, dataUploadSelectFiles, dataUploadDeleteFiles, dataUploadInsertFiles,
-dataUpload_selectByPageForUpload,deleteMeta} from '../../api/api';
+dataUpload_selectByPageForUpload,dataUpload_deleteMetas} from '../../api/api';
 export default {
   name: 'dataUpdata',
   components: {
@@ -366,7 +366,7 @@
           for (var i in this.multipleDelete) {
             std.push(this.multipleDelete[i].id);
           }
-          const res = await deleteMeta({ids: std.toString() })
+          const res = await dataUpload_deleteMetas({ids: std.toString() })
           if(res.code != 200){
             this.$message.error('鍒犻櫎澶辫触');
           }else{
diff --git a/src/views/exportMap/index.vue b/src/views/exportMap/index.vue
new file mode 100644
index 0000000..8587a5c
--- /dev/null
+++ b/src/views/exportMap/index.vue
@@ -0,0 +1,676 @@
+<template>
+  <div class="exportmap">
+    <div id="mapView" class="mapView">
+      <!-- <div class="topMenu">
+        <el-form :inline="true" :model="formInline" class="demo-form-inline">
+          <el-form-item>
+            <el-link
+              style="color: white"
+              @click="setLeftMenu"
+              :underline="false"
+              >鍥惧眰</el-link
+            >
+          </el-form-item>
+          <el-form-item>
+            <el-link
+              style="color: white"
+              @click="changeMenulayer"
+              :underline="false"
+              ><i class="el-icon-menu"></i>搴曞浘</el-link
+            >
+          </el-form-item>
+          <el-form-item>
+            <el-select v-model="value" placeholder="璇烽�夋嫨">
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-link style="color: white" :underline="false"
+              ><i class="el-icon-rank"></i>
+            </el-link>
+          </el-form-item>
+          <el-form-item>
+            <el-link
+              style="color: white"
+              @click="showMapApply = !showMapApply"
+              :underline="false"
+              >鍑哄浘鐢宠
+            </el-link></el-form-item
+          >
+          <el-form-item>
+            <el-link
+              style="color: white"
+              @click="getShowMapList"
+              :underline="false"
+              >鍑哄浘鍒楄〃</el-link
+            ></el-form-item
+          >
+          <el-form-item label="鏃嬭浆">
+            <el-input
+              v-model="formInline.role"
+              placeholder="璇疯緭鍏ュ唴瀹�"
+            ></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button plain size="mini" @click="setMapRole">鏃嬭浆</el-button>
+            <el-button plain size="mini" @click="setMapAddDraw()"
+              >缁樺埗</el-button
+            >
+            <el-button plain size="mini" @click="setMapRemoveDraw()"
+              >娓呴櫎</el-button
+            >
+            <el-button plain size="mini" @click="setExportMapLayer"
+              >鍑哄浘</el-button
+            >
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="leftMeu" v-if="showleftMenu">
+        <div class="topHeader">
+          <div style="float: left">鍥惧眰</div>
+          <div style="float: right">
+            <el-link @click="showleftMenu = false" :underline="false"
+              ><i class="el-icon-close"></i
+            ></el-link>
+          </div>
+          <div style="float: right; margin-right: 5%">
+            <el-link :underline="false" @click="changeRowType"
+              ><i
+                :class="
+                  rowtype == true ? 'el-icon-arrow-down' : 'el-icon-arrow-up'
+                "
+              ></i
+            ></el-link>
+          </div>
+        </div>
+        <div class="topContent" v-if="rowtype">
+          <el-tree
+            :data="data"
+            show-checkbox
+            node-key="id"
+            :props="defaultProps"
+            :default-expanded-keys="[1]"
+            @check-change="handleTreeNodeClick"
+          >
+          </el-tree>
+        </div>
+      </div>
+      <div class="mapApplay" v-if="showMapApply">
+        <label>鍑哄浘鐢宠</label>
+        <el-divider />
+        <el-form ref="form" :model="form" label-width="80px">
+          <el-form-item label="鍑哄浘鍚嶇О">
+            <el-input v-model="form.name"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-table
+              ref="singleTable"
+              :data="tableData"
+              style="width: 100%"
+              height="200"
+            >
+              <el-table-column type="index" label="搴忓彿" width="50">
+              </el-table-column>
+
+              <el-table-column property="name" label="鍥惧眰鍚嶇О">
+              </el-table-column>
+            </el-table>
+          </el-form-item>
+
+          <el-form-item>
+            <el-button type="primary" @click="setMapApply">绔嬪嵆鍒涘缓</el-button>
+            <el-button @click="showMapApply = false">鍙栨秷</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="mapApplay" v-if="showMapList">
+        <div>
+          <label>鍑哄浘鍒楄〃</label>
+          <div style="float: right">
+            <el-link @click="showMapList = false" :underline="false"
+              ><i class="el-icon-close"></i
+            ></el-link>
+          </div>
+        </div>
+        <el-divider />
+        <el-table
+          ref="singleTable"
+          :data="exportable"
+          style="width: 100%"
+          height="200"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="index" width="50" label="搴忓彿">
+          </el-table-column>
+          <el-table-column property="name" label="鍚嶇О"> </el-table-column>
+          <el-table-column property="type" label="绫诲瀷"> </el-table-column>
+          <el-table-column property="descr" label="鎻忚堪"> </el-table-column>
+          <el-table-column label="鎿嶄綔" width="120">
+            <template slot-scope="scope">
+              <el-button
+                @click.native.prevent="downloadMap(scope.$index, scope.row)"
+                type="text"
+                size="small"
+              >
+                涓嬭浇
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="block">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="listdata.pageIndex"
+            :page-sizes="[10, 20, 30, 40]"
+            :page-size="listdata.pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="count"
+          >
+          </el-pagination>
+        </div>
+      </div> -->
+      <!-- <div
+        @click="changeMenulayer"
+        class="center CenDiv"
+        :class="{ center1: centerFlag }"
+      >
+        <div
+          id="cenBg"
+          v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
+        ></div>
+      </div> -->
+    </div>
+
+    <!-- <el-dialog
+      title="鎻愮ず"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <el-form ref="layerform" :model="layerform" label-width="80px">
+        <el-form-item label="鏈嶅姟鍚嶇О">
+          <el-input v-model="layerform.name"></el-input>
+        </el-form-item>
+        <el-form-item label="鏈嶅姟绫诲瀷">
+          <el-radio-group v-model="layerform.type">
+            <el-radio label="WMS"></el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鏈嶅姟鍦板潃">
+          <el-input type="textarea" v-model="layerform.resource"></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="setAddMapLayer">纭� 瀹�</el-button>
+      </span>
+    </el-dialog> -->
+  </div>
+</template>
+
+<script>
+import ImageWMS from 'ol/source/ImageWMS';
+import Map from 'ol/Map';
+import XYZ from 'ol/source/XYZ';
+import View from 'ol/View';
+import Image from 'ol/layer/Image';
+import TileLayer from 'ol/layer/Tile';
+import { transform } from 'ol/proj';
+import Draw, { createRegularPolygon, createBox } from 'ol/interaction/Draw.js';
+import { OSM, Vector as VectorSource } from 'ol/source';
+import { Vector as VectorLayer } from 'ol/layer';
+import LayerVector from 'ol/layer/Vector';
+import Style from 'ol/style/Style';
+import Fill from 'ol/style/Fill';
+import Stroke from 'ol/style/Stroke';
+import Circle from 'ol/style/Circle';
+import mapviewVue from '../../components/mapview.vue';
+import { removeToken, getToken } from '@/utils/auth';
+import $ from 'jquery';
+import { exportSelectByPage } from '../../api/api.js';
+export default {
+  data() {
+    return {
+      dialogVisible: false,
+      showleftMenu: false,
+      showMapApply: false,
+      showMapList: false,
+      centerFlag: false,
+      isActive: true,
+      isMenuLayer: false,
+      rowtype: true,
+      form: {},
+      formInline: { role: '' },
+      layerform: {},
+      tableData: [],
+      exportable: [],
+      multipleSelection: [],
+      options: [{ label: '1:20涓�', value: '1:20涓�' }],
+      value: '1:20涓�',
+      data: [
+        {
+          id: 1,
+          label: '鍥惧眰',
+          children: [
+            { label: '闃�瀹�', value: '闃�瀹�' },
+            { label: '绔欏満', value: '绔欏満' },
+            { label: '绠¢亾涓績绾�', value: '绠¢亾涓績绾�' },
+          ],
+        },
+      ],
+      arrList: [],
+      defaultProps: {
+        children: 'children',
+        label: 'label',
+      },
+      draw: null,
+      vector: null,
+      source: null,
+      layerExtent: null,
+      listdata: {
+        name: null,
+        pageSize: 10,
+        pageIndex: 1,
+      },
+      count: 0,
+    };
+  },
+  mounted() {
+    this.initMap();
+  },
+  methods: {
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleSizeChange(val) {
+      this.listdata.pageIndex = 1;
+      this.listdata.pageSize = val;
+      this.getShowMapList();
+    },
+    handleCurrentChange(val) {
+      this.listdata.pageIndex = val;
+      this.getShowMapList();
+    },
+    async getShowMapList() {
+      const data = await exportSelectByPage(this.listdata);
+      this.exportable = data.result;
+      this.showMapList = true;
+      this.count = data.count;
+    },
+    setExportMapLayer(res) {
+      var token = '?token=' + getToken();
+      var data = {
+        token: token.replace('?token=', ''),
+        title: this.form.name,
+        pageSize: 'A4',
+        province: '灞变笢鐪�',
+        scale: this.value,
+        resolution: '20绫�',
+        date: '2022.11.14',
+        layers: res.toString(),
+        rotation: 0,
+        xmin: this.layerExtent.xmin,
+        ymin: this.layerExtent.ymin,
+        xmax: this.layerExtent.xmax,
+        ymax: this.layerExtent.ymax,
+      };
+
+      $.ajax({
+        async: true,
+        url: BASE_URL + '/export/insertMap' + token,
+        type: 'POST',
+        data: JSON.stringify(data),
+        contentType: 'application/json',
+        dataType: 'json',
+        error: function () {},
+        success: (rs) => {
+          var value = 'code = ' + rs.code + ', result = ' + rs.result;
+          if ((rs.code = 200)) {
+            this.$message({
+              message: value,
+              type: 'success',
+            });
+          } else {
+            this.$message.error(value);
+          }
+        },
+      });
+    },
+    downloadMap(index, rows) {
+      var guid = rows.guid;
+      var token = '?token=' + getToken();
+      var a = document.createElement('a'); // 鍒涘缓涓�涓猘鏍囩鍏冪礌
+      a.style.display = 'none'; // 璁剧疆鍏冪礌涓嶅彲瑙�
+      a.href = BASE_URL + '/mark/downloadFile' + token + '&guid=' + guid;
+
+      document.body.appendChild(a); // 鍔犲叆
+      a.click(); // 瑙﹀彂鐐瑰嚮,涓嬭浇
+      document.body.removeChild(a); // 閲婃斁
+    },
+    setMapRemoveDraw() {
+      if (this.draw != null) {
+        mapView.removeLayer(this.vector);
+      }
+    },
+
+    setMapAddDraw() {
+      this.setMapRemoveDraw();
+
+      this.source = new VectorSource({ wrapX: false });
+
+      this.vector = new VectorLayer({
+        source: this.source,
+      });
+      mapView.addLayer(this.vector);
+
+      let type = 'Circle';
+      let geometryFunction = createBox();
+      this.draw = new Draw({
+        source: this.source,
+        type,
+        geometryFunction,
+      });
+      mapView.addInteraction(this.draw);
+      this.draw.on('drawend', (e) => {
+        let feature = e.feature;
+        let geom = feature.getGeometry();
+        var extent = geom.getExtent();
+        var a1 = transform([extent[0], extent[1]], 'EPSG:3857', 'EPSG:4326');
+        var a2 = transform([extent[2], extent[3]], 'EPSG:3857', 'EPSG:4326');
+
+        this.layerExtent = {
+          xmin: a1[0],
+          ymin: a1[1],
+          xmax: a2[0],
+          ymax: a2[1],
+        };
+        mapView.removeInteraction(this.draw);
+      });
+    },
+    setMapRole() {
+      var value = parseFloat(this.formInline.role);
+      var role = (Math.PI / 180) * value;
+      mapView.getView().setRotation(role);
+    },
+    setMapApply() {
+      if (this.layerExtent == null) {
+        this.$message.error('璇烽�夋嫨鍑哄浘鑼冨洿');
+        return;
+      }
+      var val_data = [];
+      for (var i in this.tableData) {
+        val_data.push(this.tableData[i].name);
+      }
+      if (this.isActive) {
+        val_data.push('鐭㈤噺鍥�');
+        val_data.push('鐭㈤噺娉ㄨ');
+      } else {
+        val_data.push('楂樺痉褰卞儚');
+        val_data.push('楂樺痉褰卞儚娉ㄨ');
+      }
+      this.setExportMapLayer(val_data);
+      this.showMapApply = false;
+      this.form = {};
+    },
+    handleClose() {},
+    handleTreeNodeClick(data, nodes) {
+      if (data.label == '鍥惧眰') return;
+
+      if (nodes == true) {
+        this.arrList.push({
+          name: data.label,
+        });
+        var wmsLayer = new Image({
+          source: new ImageWMS({
+            ratio: 1,
+            url: data.resource,
+            crossOrigin: 'anonymous',
+
+            params: {
+              VERSION: '1.3.0',
+              FORMAT: 'image/png',
+              LAYERS: '',
+              srs: 'EPSG:900913',
+              tiled: true,
+              styles: '',
+            },
+          }),
+        });
+        wmsLayer.name = data.label;
+        mapView.addLayer(wmsLayer);
+      } else {
+        this.arrList.some((item, i) => {
+          if (item.name === data.label) {
+            this.arrList.splice(i, 1);
+          }
+        });
+        var len = mapView.getAllLayers();
+        for (var i in len) {
+          var layer = mapView.getLayers().item(i);
+          if (layer.name == data.label) {
+            mapView.removeLayer(layer);
+          }
+        }
+      }
+      this.tableData = this.arrList;
+    },
+    setAddMapLayer() {
+      this.dialogVisible = false;
+      this.data[0].children.push({
+        label: this.layerform.name,
+        type: this.layerform.type,
+        resource: this.layerform.resource,
+      });
+    },
+
+    setLeftMenu() {
+      this.showleftMenu = true;
+      this.rowtype = true;
+    },
+    //宸︿晶鑿滃崟鐐瑰嚮浜嬩欢
+    changeRowType() {
+      this.rowtype = !this.rowtype;
+    },
+    //鍦板浘鍒濆鍖�
+    initMap() {
+      var TiandiLayer = new TileLayer({
+        source: new XYZ({
+          url: 'http://t0.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561',
+        }),
+      });
+      var TiandiTitle = new TileLayer({
+        source: new XYZ({
+          url: 'http://t0.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561',
+        }),
+      });
+      var GaoDeLayer = new TileLayer({
+        source: new XYZ({
+          url: 'http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6',
+        }),
+      });
+      var GaoDeTitle = new TileLayer({
+        source: new XYZ({
+          url: 'http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8',
+        }),
+      });
+      window.mapView = new Map({
+        target: 'mapView',
+        layers: [TiandiLayer, TiandiTitle, GaoDeLayer, GaoDeTitle],
+        view: new View({
+          center: transform([105.02, 34.9], 'EPSG:4326', 'EPSG:3857'),
+          zoom: 4,
+          projection: 'EPSG:3857',
+        }),
+      });
+      mapView.getLayers().item(2).setVisible(false);
+      mapView.getLayers().item(3).setVisible(false);
+      this.formInline.role = mapView.getView().getRotation();
+    },
+    //鍒囨崲搴曞浘
+    changeMenulayer() {
+      this.isActive = !this.isActive;
+      this.isMenuLayer = !this.isMenuLayer;
+      this.setLayerVisible();
+    },
+    setLayerVisible() {
+      if (this.isActive == true) {
+        mapView.getLayers().item(2).setVisible(false);
+        mapView.getLayers().item(3).setVisible(false);
+        mapView.getLayers().item(0).setVisible(true);
+        mapView.getLayers().item(1).setVisible(true);
+      } else {
+        mapView.getLayers().item(2).setVisible(true);
+        mapView.getLayers().item(3).setVisible(true);
+        mapView.getLayers().item(0).setVisible(false);
+        mapView.getLayers().item(1).setVisible(false);
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less">
+.exportmap {
+  width: 100%;
+  height: 100%;
+  background: white;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
+  position: absolute;
+  .mapView {
+    width: 100%;
+    height: 100%;
+    .topMenu {
+      background: rgba(0, 0, 0, 0.5);
+      z-index: 40;
+      position: absolute;
+      left: 40%;
+      top: 3%;
+      padding-top: 1%;
+      padding-left: 1%;
+      padding-right: 1%;
+    }
+    .mapApplay {
+      width: 40%;
+      position: absolute;
+      background: rgba(0, 0, 0, 0.5);
+      z-index: 40;
+      top: 15%;
+      margin-left: 20%;
+      padding: 1%;
+      label {
+        color: white;
+      }
+    }
+    .mapList {
+      width: 40%;
+      position: absolute;
+      background: rgba(0, 0, 0, 0.5);
+      z-index: 40;
+      top: 15%;
+      margin-left: 20%;
+      padding: 1%;
+    }
+    .leftMeu {
+      position: absolute;
+      width: 13%;
+      z-index: 40;
+      top: 10%;
+      margin-left: 1%;
+      border-radius: 5px;
+      padding: 1%;
+    }
+    .topHeader {
+      padding: 5%;
+      background: rgba(0, 0, 0, 0.5);
+      width: 100%;
+      border-radius: 5px;
+      color: white;
+      height: 25px;
+      border: 1px solid gray;
+    }
+    .topContent {
+      background: rgba(0, 0, 0, 0.5);
+      width: 100%;
+      padding: 5%;
+      border-radius: 5px;
+      border: 1px solid gray;
+    }
+
+    .el-icon-close {
+      color: white;
+    }
+    .el-icon-arrow-down {
+      color: white;
+    }
+    .el-icon-arrow-up {
+      color: white;
+    }
+
+    .contentHeader {
+      border-top: 1px solid gray;
+      padding: 3%;
+      width: 94%;
+      color: white;
+    }
+    .center {
+      margin-left: 1%;
+    }
+    .CenDiv {
+      position: absolute;
+      bottom: 3%;
+      height: 40px;
+      width: 60px;
+      z-index: 101;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      box-shadow: 3px 3px 6px #666;
+      border: 1px solid rgba(204, 204, 204, 0.76);
+      border-radius: 5px;
+      cursor: pointer;
+    }
+    .center1 {
+      margin-left: 1%;
+    }
+    .right {
+      position: absolute;
+      top: 50px;
+      right: 0;
+      width: 20%;
+      height: calc(100% - 50px);
+
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+    }
+    .CenDiv:hover {
+      border: 1px solid #409eff;
+    }
+    // .active {
+    //   width: 100%;
+    //   height: 100%;
+    //   background: url('../../assets/img/Layer/imgLayer2.png') no-repeat center;
+    //   position: absolute;
+    //   background-size: 100% 100%;
+    //   border-radius: 5px;
+    // }
+    // .menuLayer {
+    //   width: 100%;
+    //   height: 100%;
+    //   background: url('../../assets/img/Layer/imgLayer1.png') no-repeat center;
+    //   position: absolute;
+    //   background-size: 100% 100%;
+    //   border-radius: 5px;
+    // }
+  }
+}
+</style>
diff --git a/src/views/maintenance/mochaitmo.vue b/src/views/maintenance/mochaitmo.vue
index ce296af..42b1cd8 100644
--- a/src/views/maintenance/mochaitmo.vue
+++ b/src/views/maintenance/mochaitmo.vue
@@ -87,7 +87,7 @@
 import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //鏁版嵁搴撶洃鎺�
 import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //绯荤粺鐩戞帶
 import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //绯荤粺閰嶇疆
-import { selectMenuRecursive } from '../../api/api';
+import { selectMenuRecursive, queryMenuTree } from '../../api/api';
 import customElMenu from '../../components/customElMenu.vue';
 export default {
   components: {
@@ -139,8 +139,11 @@
   methods: {
     //鑾峰彇鏍�
     async getTreeData() {
-      const res = await selectMenuRecursive({ name: '杩愮淮绠$悊' });
-
+      const data = await queryMenuTree();
+      let menuLists = data.result.filter((value) => {
+        return value.url == '/mochaitmo';
+      });
+      const res = await selectMenuRecursive({ name: menuLists[0].cnName });
       if (res.code == 200) {
         if (res.result.length != 0) {
           let menuList = res.result.filter((value) => {

--
Gitblit v1.9.3