| | |
| | | <el-form-item> |
| | | <el-link |
| | | style="color: white" |
| | | @click="showMapList = true" |
| | | @click="getShowMapList" |
| | | :underline="false" |
| | | >出图列表</el-link |
| | | ></el-form-item |
| | |
| | | > |
| | | <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> |
| | | <div class="topContent" v-if="rowtype"> |
| | | <el-link |
| | | @click="dialogVisible = true" |
| | | style="color: white" |
| | | :underline="false" |
| | | > |
| | | <i class="el-icon-plus">添加</i></el-link |
| | | > |
| | | <el-divider /> |
| | | <el-tree |
| | | :data="data" |
| | | show-checkbox |
| | |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | <div v-drag class="mapApplay" v-if="showMapApply"> |
| | | <div class="mapApplay" v-if="showMapApply"> |
| | | <label>出图申请</label> |
| | | <el-divider /> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | |
| | | style="width: 100%" |
| | | height="200" |
| | | > |
| | | <el-table-column type="index" width="50"> </el-table-column> |
| | | <el-table-column property="date" label="日期" width="120"> |
| | | <el-table-column type="index" label="序号" width="50"> |
| | | </el-table-column> |
| | | <el-table-column property="name" label="姓名" width="120"> |
| | | </el-table-column> |
| | | <el-table-column property="address" label="地址"> |
| | | |
| | | <el-table-column property="name" label="图层名称"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-form-item> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div v-drag class="mapApplay" v-if="showMapList"> |
| | | <div class="mapApplay" v-if="showMapList"> |
| | | <div> |
| | | <label>出图列表</label> |
| | | <div style="float: right"> |
| | |
| | | ><i class="el-icon-close"></i |
| | | ></el-link> |
| | | </div> |
| | | <div style="float: right; margin-right: 20px"> |
| | | <el-button type="warning" size="mini" plain>批量下载</el-button> |
| | | </div> |
| | | </div> |
| | | <el-divider /> |
| | | <el-table |
| | | ref="singleTable" |
| | | :data="tableData" |
| | | :data="exportable" |
| | | style="width: 100%" |
| | | height="200" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="index" width="50"> </el-table-column> |
| | | <el-table-column property="date" label="日期" width="120"> |
| | | <el-table-column type="index" width="50" label="序号"> |
| | | </el-table-column> |
| | | <el-table-column property="name" label="姓名" width="120"> |
| | | <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-column property="address" label="地址"> </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 |
| | | <!-- <div |
| | | @click="changeMenulayer" |
| | | class="center CenDiv" |
| | | :class="{ center1: centerFlag }" |
| | |
| | | id="cenBg" |
| | | v-bind:class="{ active: isActive, menuLayer: isMenuLayer }" |
| | | ></div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | |
| | | <el-dialog |
| | | title="提示" |
| | | :visible.sync="dialogVisible" |
| | |
| | | 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 { |
| | |
| | | formInline: { role: '' }, |
| | | layerform: {}, |
| | | tableData: [], |
| | | options: [{}], |
| | | value: '', |
| | | exportable: [], |
| | | multipleSelection: [], |
| | | options: [{ label: '1:20万', value: '1:20万' }], |
| | | value: '1:20万', |
| | | data: [ |
| | | { |
| | | id: 1, |
| | | label: '图层', |
| | | children: [], |
| | | 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标签元素 |
| | | 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(); |
| | | |
| | |
| | | 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'); |
| | | var std = [a1, a2]; |
| | | console.log(std); |
| | | |
| | | this.layerExtent = { |
| | | xmin: a1[0], |
| | | ymin: a1[1], |
| | | xmax: a2[0], |
| | | ymax: a2[1], |
| | | }; |
| | | mapView.removeInteraction(this.draw); |
| | | }); |
| | | }, |
| | |
| | | var role = (Math.PI / 180) * value; |
| | | mapView.getView().setRotation(role); |
| | | }, |
| | | setMapApply() {}, |
| | | 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', |
| | | //serverType: 'geoserver', |
| | | |
| | | params: { |
| | | VERSION: '1.3.0', |
| | | FORMAT: 'image/png', |
| | |
| | | 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); |
| | |
| | | } |
| | | } |
| | | } |
| | | this.tableData = this.arrList; |
| | | }, |
| | | setAddMapLayer() { |
| | | this.dialogVisible = false; |
| | |
| | | }, |
| | | //地图初始化 |
| | | initMap() { |
| | | var vectorLayer = new TileLayer({ |
| | | var TiandiLayer = new TileLayer({ |
| | | source: new XYZ({ |
| | | url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}', |
| | | url: 'http://t0.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=94a34772eb88317fcbf8428e10448561', |
| | | }), |
| | | }); |
| | | var imageLayer = new TileLayer({ |
| | | var TiandiTitle = new TileLayer({ |
| | | source: new XYZ({ |
| | | url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}', |
| | | 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: [imageLayer, vectorLayer], |
| | | 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(); |
| | | }, |
| | | //切换底图 |
| | |
| | | }, |
| | | setLayerVisible() { |
| | | if (this.isActive == true) { |
| | | mapView.getLayers().item(0).setVisible(false); |
| | | 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(0).setVisible(true); |
| | | mapView.getLayers().item(2).setVisible(true); |
| | | mapView.getLayers().item(3).setVisible(true); |
| | | mapView.getLayers().item(0).setVisible(false); |
| | | mapView.getLayers().item(1).setVisible(false); |
| | | } |
| | | }, |
| | |
| | | .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; |
| | | } |
| | | // .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> |