From 8193a3d83d463717b873392b248873fdef0acaa9 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期五, 18 十一月 2022 12:15:29 +0800
Subject: [PATCH] 1

---
 src/views/exportMap/index.vue |  262 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 205 insertions(+), 57 deletions(-)

diff --git a/src/views/exportMap/index.vue b/src/views/exportMap/index.vue
index 7abb0e6..973e822 100644
--- a/src/views/exportMap/index.vue
+++ b/src/views/exportMap/index.vue
@@ -46,7 +46,7 @@
           <el-form-item>
             <el-link
               style="color: white"
-              @click="showMapList = true"
+              @click="getShowMapList"
               :underline="false"
               >鍑哄浘鍒楄〃</el-link
             ></el-form-item
@@ -64,6 +64,9 @@
             >
             <el-button plain size="mini" @click="setMapRemoveDraw()"
               >娓呴櫎</el-button
+            >
+            <el-button plain size="mini" @click="setExportMapLayer"
+              >鍑哄浘</el-button
             >
           </el-form-item>
         </el-form>
@@ -87,14 +90,6 @@
           </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
@@ -106,7 +101,7 @@
           </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">
@@ -120,12 +115,10 @@
               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>
@@ -136,7 +129,7 @@
           </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">
@@ -144,26 +137,46 @@
               ><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 }"
@@ -172,8 +185,9 @@
           id="cenBg"
           v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
         ></div>
-      </div>
+      </div> -->
     </div>
+
     <el-dialog
       title="鎻愮ず"
       :visible.sync="dialogVisible"
@@ -218,6 +232,9 @@
 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 {
@@ -233,15 +250,22 @@
       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',
@@ -249,17 +273,93 @@
       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();
 
@@ -284,9 +384,13 @@
         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);
       });
     },
@@ -295,17 +399,40 @@
       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',
@@ -319,6 +446,11 @@
         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);
@@ -327,6 +459,7 @@
           }
         }
       }
+      this.tableData = this.arrList;
     },
     setAddMapLayer() {
       this.dialogVisible = false;
@@ -347,26 +480,37 @@
     },
     //鍦板浘鍒濆鍖�
     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();
     },
     //鍒囨崲搴曞浘
@@ -377,10 +521,14 @@
     },
     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);
       }
     },
@@ -506,22 +654,22 @@
     .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>

--
Gitblit v1.9.3