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