From bab3c509ded84f1caa3d8e79a65b7113db8913df Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期五, 24 三月 2023 16:04:47 +0800
Subject: [PATCH] 一张图图层控制修改,发布管理添加表格双击复制功能,发布管理页面模型附件管理页面修改,在线制图修改

---
 src/views/datamanage/metadataManage.vue |   10 
 src/views/datamanage/uploadmanage.vue   |   13 
 src/views/exportMap/index.vue           |  111 +++-
 src/views/Archive/index.vue             |   23 
 src/views/Synthesis/LeftMenu.vue        |    9 
 src/views/Tools/ModelProperty.vue       |  272 +++++++++++
 src/components/mapsdk.vue               |   87 ++-
 src/components/Screen/ProjectTree.vue   |   74 ++
 src/views/datamanage/SpatialData.vue    |    8 
 src/views/Tools/LayerTree.vue           |   35 +
 src/main.js                             |    4 
 src/components/preview_map.vue          |  456 ++++++++++++++++---
 src/views/userManage/userInfoManage.vue |  233 +++++++--
 public/LfSKyline/js/detect.js           |    2 
 14 files changed, 1,095 insertions(+), 242 deletions(-)

diff --git a/public/LfSKyline/js/detect.js b/public/LfSKyline/js/detect.js
index a91470f..04535d7 100644
--- a/public/LfSKyline/js/detect.js
+++ b/public/LfSKyline/js/detect.js
@@ -1,7 +1,7 @@
 var Detect = {
     ieVer: 9.0,
 
-    teVer: 7.4,
+    teVer: 7.0,
 
     sgVer: "66",
 
diff --git a/src/components/Screen/ProjectTree.vue b/src/components/Screen/ProjectTree.vue
index 5ce4970..e237329 100644
--- a/src/components/Screen/ProjectTree.vue
+++ b/src/components/Screen/ProjectTree.vue
@@ -21,7 +21,7 @@
         :props="defaultProps"
         ref="tree"
         class="el-tree"
-        @check-change="handleCheckChange"
+        @check="handleCheckChange"
         :filter-node-method="filterNode"
       >
         <div
@@ -139,6 +139,7 @@
       var std = []
       var layer_list = []
       var layer_groups = []
+      var layerData = [];
       for (var i in data.result) {
         if (data.result[i].type == 1) {
           layer_groups.push({
@@ -161,7 +162,8 @@
             layer_list.push(layer_entity)
             if (data.result[i].isShow == 1) {
               std.push(data.result[i].id)
-              this.setAddImageLayer(layer_entity)
+              layerData.push(data.result[i])
+              // this.setAddImageLayer(layer_entity)
             }
           }
         }
@@ -176,33 +178,71 @@
       this.treeData = layer_groups
 
       this.$refs.tree.setCheckedKeys(std)
+      this.setShowImageLayer(layerData)
     },
     handleCheckChange(data, checked, indeterminate) {
-      if (data.children != null) return
-      var std = []
-      for (var i = 0; i < Viewer.imageryLayers._layers.length; i++) {
-        var val_id = Viewer.imageryLayers._layers[i].imageryProvider.name
-        if (val_id == data.label) {
-          std.push(data.label)
-          const img_layer = Viewer.imageryLayers._layers[i]
-          img_layer.show = checked
+      // if (data.children != null) return
+      // var std = []
+      // for (var i = 0; i < Viewer.imageryLayers._layers.length; i++) {
+      //   var val_id = Viewer.imageryLayers._layers[i].imageryProvider.name
+      //   if (val_id == data.label) {
+      //     std.push(data.label)
+      //     const img_layer = Viewer.imageryLayers._layers[i]
+      //     img_layer.show = checked
+      //   }
+      // }
+      // if (std.length == 0 && checked == true) {
+      //   this.setAddImageLayer(data)
+      // }
+      this.setClearWmsLayer()
+      var value = this.$refs.tree.getCheckedNodes();
+      var url = [];
+      for (var i in value) {
+        if (value[i].resource && value[i].type == 2) {
+
+          url.push(value[i].resource)
         }
       }
-      if (std.length == 0 && checked == true) {
-        this.setAddImageLayer(data)
+      url = url.reverse();
+      this.setAddImageLayer(url)
+    },
+
+    setShowImageLayer(res) {
+      this.setClearWmsLayer()
+      var url = [];
+      for (var i in res) {
+        url.push(res[i].enName)
+      }
+      url = url.reverse();
+      this.setAddImageLayer(url)
+    },
+    setClearWmsLayer() {
+      for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
+        var val_id = window.Viewer.imageryLayers._layers[i].imageryProvider.name;
+        if (val_id == "Wms_Layer") {
+          window.Viewer.imageryLayers.remove(
+            window.Viewer.imageryLayers._layers[i]
+          );
+        }
       }
     },
+
+
     setAddImageLayer(res) {
-      let layerWMS = new Cesium.WebMapServiceImageryProvider({
+      var layerWMS = new Cesium.WebMapServiceImageryProvider({
         url: geoServerURl,
-        layers: res.resource,
+        layers: res.toString(),
         parameters: {
           transparent: true,
           format: "image/png",
+          srs: "EPSG:4490",
+          styles: "",
         },
-      })
-      layerWMS.name = res.label
-      Viewer.imageryLayers.addImageryProvider(layerWMS)
+        tileWidth: 512,
+        tileHeight: 512,
+      });
+      layerWMS.name = "Wms_Layer";
+      window.Viewer.scene.imageryLayers.addImageryProvider(layerWMS);
     },
     changeMenulayer() {
       this.isActive = !this.isActive
diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue
index 6dbed95..6e6ad87 100644
--- a/src/components/mapsdk.vue
+++ b/src/components/mapsdk.vue
@@ -297,40 +297,40 @@
           </div>
         </el-card>
       </div>
-<!--      <div style="display: flex;">-->
+      <!--      <div style="display: flex;">-->
+      <div
+        class="changeTerrain"
+        @click="changeTerrainLayer"
+      >
         <div
-          class="changeTerrain"
-          @click="changeTerrainLayer"
-        >
-          <div
-            title="鍦板舰鍒囨崲"
-            id="cenBg"
-            class="mapTerrain"
-          ></div>
-        </div>
-<!--      class="center CenDiv"-->
+          title="鍦板舰鍒囨崲"
+          id="cenBg"
+          class="mapTerrain"
+        ></div>
+      </div>
+      <!--      class="center CenDiv"-->
+      <div
+        @click="changeMenulayer"
+        class="changeLayer"
+      >
         <div
-          @click="changeMenulayer"
-          class="changeLayer"
-        >
-          <div
-            title="搴曞浘鍒囨崲"
-            id="cenBg"
-            class="mapBaseMap"
-          ></div>
-        </div>
+          title="搴曞浘鍒囨崲"
+          id="cenBg"
+          class="mapBaseMap"
+        ></div>
+      </div>
 
+      <div
+        @click="changeMapType"
+        class="changeMapType"
+      >
         <div
-          @click="changeMapType"
-          class="changeMapType"
-        >
-          <div
-            title="2/3缁村垏鎹�"
-            id="cenBg"
-            :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
-          ></div>
-        </div>
-<!--      </div>-->
+          title="2/3缁村垏鎹�"
+          id="cenBg"
+          :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
+        ></div>
+      </div>
+      <!--      </div>-->
       <!-- 鍧″害鍒嗘瀽寮圭獥-->
       <div
         class="lengend"
@@ -572,11 +572,13 @@
           v-if="dialog.isJpg"
           class="pdfClass"
         >
-          <img
-            style="width:100%; height:100%;"
+          <el-image
+            style="width:100%; height:100%"
             :src="dialog.src"
-            alt=""
-          />
+            :preview-src-list="[dialog.src]"
+          >
+          </el-image>
+
         </div>
       </el-dialog>
       <!--      <div-->
@@ -591,6 +593,7 @@
       <!--      </div>-->
 
     </div>
+    <model-property ref='modelProperty'></model-property>
   </div>
 </template>
 
@@ -598,7 +601,7 @@
 import $ from "jquery";
 import mapMenuTop from "./MapView/mapMenuTop.vue";
 import mapSpaceTop from "./MapView/mapSpaceTop.vue";
-
+import ModelProperty from '../views/Tools/ModelProperty.vue'
 import {
   select_Comprehensive_ByPageAndCount,
   select_Comprehensive_SelectWktById,
@@ -612,6 +615,7 @@
   components: {
     mapMenuTop,
     mapSpaceTop,
+    ModelProperty
 
   },
   data() {
@@ -762,13 +766,14 @@
               window.pickedColor = window.pickedFeature.color
               window.pickedFeature.color = Cesium.Color.RED.withAlpha(0.3);
 
-              this.$store.state.catModel = true;
-              this.$store.state.catModelInfo = {
+              // this.$store.state.catModel = true;
+              that.$store.state.catModelInfo = {
                 id: pickedFeature.getProperty("id"),
                 name: pickedFeature.getProperty("name"),
                 layerId: pickedFeature.primitive.layerId,
                 layerName: pickedFeature.primitive.id
               };
+              that.$refs && that.$refs.modelProperty && that.$refs.modelProperty.open();
             }
           }
         }
@@ -1846,9 +1851,9 @@
   justify-content: center;
   align-items: center;
   cursor: pointer;
-  border: 1px solid rgba(255,255,255,.5);
+  border: 1px solid rgba(255, 255, 255, 0.5);
 }
-.changeLayer{
+.changeLayer {
   position: absolute;
   bottom: 116px;
   right: 46px;
@@ -1859,7 +1864,7 @@
   justify-content: center;
   align-items: center;
   cursor: pointer;
-  border: 1px solid rgba(255,255,255,.5);
+  border: 1px solid rgba(255, 255, 255, 0.5);
 }
 .changeMapType {
   position: absolute;
@@ -1872,7 +1877,7 @@
   justify-content: center;
   align-items: center;
   cursor: pointer;
-  border: 1px solid rgba(255,255,255,.5);
+  border: 1px solid rgba(255, 255, 255, 0.5);
 }
 //.changeTerrain {
 //  position: absolute;
diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue
index cb39621..e135114 100644
--- a/src/components/preview_map.vue
+++ b/src/components/preview_map.vue
@@ -21,6 +21,115 @@
       >
       </el-tree>
     </div>
+    <div
+      v-if="editModelFlag"
+      class="modelLayer box_divm"
+    >
+      <el-form
+        ref="form"
+        :model="modelForm"
+        label-width="80px"
+      >
+        <el-form-item>
+          <el-button
+            size="small"
+            @click="locateTo"
+          >瀹氫綅</el-button>
+          <el-button
+            size="small"
+            @click="showTileset"
+          >鏄鹃殣</el-button>
+          <el-button
+            size="small"
+            @click="underground"
+          >鍦颁笅</el-button>
+          <el-button
+            size="small"
+            @click="pickupCoords"
+          >鎷惧彇</el-button>
+          <el-button
+            size="small"
+            @click="reload"
+          >
+            閲嶈浇
+          </el-button>
+          <el-button
+            size="small"
+            @click="resave"
+          >淇濆瓨</el-button>
+        </el-form-item>
+        <el-form-item label="缁忓害:">
+          <el-input
+            size="small"
+            v-model="modelForm.lon"
+            @input="update"
+          ></el-input>
+          <el-slider
+            v-model="modelForm.lon"
+            @input="update"
+            :min="73"
+            :step="0.001"
+            :max="135"
+          ></el-slider>
+        </el-form-item>
+        <el-form-item label="绾害:">
+          <el-input
+            size="small"
+            v-model="modelForm.lat"
+            @input="update"
+          ></el-input>
+          <el-slider
+            v-model="modelForm.lat"
+            @input="update"
+            :min="3"
+            :step="0.001"
+            :max="54"
+          ></el-slider>
+        </el-form-item>
+        <el-form-item label="楂樺害:">
+          <el-input
+            size="small"
+            v-model="modelForm.height"
+            @input="update"
+          ></el-input>
+          <el-slider
+            v-model="modelForm.height"
+            :min="-800"
+            :step="1"
+            @input="update"
+            :max="8800"
+          ></el-slider>
+        </el-form-item>
+        <el-form-item label="瑙掑害:">
+          <el-input
+            size="small"
+            v-model="modelForm.yaw"
+            @input="update"
+          ></el-input>
+          <el-slider
+            v-model="modelForm.yaw"
+            :min="0"
+            @input="update"
+            :step="0.1"
+            :max="360"
+          ></el-slider>
+        </el-form-item>
+        <el-form-item label="閫忔槑搴�:">
+          <el-input
+            size="small"
+            v-model="modelForm.alpha"
+            @input="update"
+          ></el-input>
+          <el-slider
+            v-model="modelForm.alpha"
+            @input="update"
+            :min="0"
+            :step="0.01"
+            :max="1"
+          ></el-slider>
+        </el-form-item>
+      </el-form>
+    </div>
 
     <el-dialog
       :title="formInline.title"
@@ -220,11 +329,14 @@
         v-if="dialog.isJpg"
         class="pdfClass"
       >
-        <img
+
+        <el-image
           style="width:100%; height:100%"
           :src="dialog.src"
-          alt=""
-        />
+          :preview-src-list="[dialog.src]"
+        >
+        </el-image>
+
       </div>
     </el-dialog>
   </div>
@@ -237,7 +349,9 @@
   comprehensive_insertModel,
   comprehensive_updateModel,
   comprehensive_selectFiles,
-  dataQuery_deletes
+  dataQuery_deletes,
+  publish_update,
+  comprehensive_selectPubById
 } from '../api/api.js';
 import { getToken } from '@/utils/auth';
 export default {
@@ -299,6 +413,21 @@
         isJpg: false,
         src: ''
       },
+      modelType: ['ifc', 'fbx', 'rvt', '3dml'],
+      editModelFlag: false,
+      modelForm: {
+        lon: 119,
+        lat: 39,
+        height: 0,
+        yaw: 0,
+        alpha: 1
+      },
+      app: {
+        tileset: null,
+        isBusy: false,
+        under: false,
+        handler: null
+      }
     }
   },
   mounted() {
@@ -434,15 +563,25 @@
     },
     async EditData() {
       const data = await comprehensive_updateModel(this.formInline)
+
+
       if (data.code != 200) {
         this.$message.error('淇敼澶辫触');
-      } else {
-        this.$message({
-          message: '淇敼鎴愬姛',
-          type: 'success'
-        });
+        return
       }
-      this.startModelData();
+
+
+      this.$message({
+        message: '淇敼鎴愬姛',
+        type: 'success'
+      });
+
+      var that = this;
+      that.dialogVisible = false;
+      this.formInline.title = this.formInline.name
+      that.dialogVisible = true;
+
+
     },
     async InsertData() {
       var std = {
@@ -456,13 +595,19 @@
       const data = await comprehensive_insertModel(std)
       if (data.code != 200) {
         this.$message.error('娣诲姞澶辫触');
-      } else {
-        this.$message({
-          message: '娣诲姞鎴愬姛',
-          type: 'success'
-        });
       }
-      this.startModelData();
+      this.$message({
+        message: '娣诲姞鎴愬姛',
+        type: 'success'
+      });
+
+      var that = this;
+      that.dialogVisible = false;
+      this.formInline.title = this.formInline.name
+      that.dialogVisible = true;
+
+
+
 
     },
     handleClose() {
@@ -548,14 +693,56 @@
             skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
           })
         );
+        var that = this;
         tileset.readyPromise.then((tileset) => {
           tileset.id = res.cnName;
           tileset.layerId = res.id;
-          this.tileSet(tileset, parseFloat(res.elev))
-          Viewer.flyTo(tileset);
+          that.getArgsTileset(tileset, res);
         });
       }
     },
+
+    async getArgsTileset(tileset, res) {
+
+      if (res.pubid > 0) {
+        const data = await comprehensive_selectPubById({ id: res.pubid })
+
+        if (data.code != 200) {
+
+        } else {
+          this.reloadTile(tileset, data.result.json)
+        }
+      } else {
+        this.tileSet(tileset, parseFloat(res.elev))
+
+      }
+    },
+    tileSet(tileset, height) {
+      //3dtile妯″瀷鐨勮竟鐣岀悆浣�
+      var boundingSphere = tileset.boundingSphere;
+      //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
+      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
+      //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
+      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
+      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
+      //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
+      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
+      //淇敼妯″瀷鐭╅樀
+      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+      Viewer.flyTo(tileset);
+    },
+    reloadTile(tileset, res) {
+      var vm = JSON.parse(res)
+      var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
+      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
+      var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
+      var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
+      tileset._root.transform = matrix;
+      Viewer.flyTo(tileset);
+    },
+
+
+
     handleCheckChange(data, checked, indeterminate) {
       if (data.type == 1) {
         this.getchilds(data);
@@ -591,17 +778,12 @@
     init3DMap() {
       //鍦板浘鍒濆鍖�
       window.sgworld = new SmartEarth.SGWorld("mapdiv", {
-
         licenseServer: window.sceneConfig.licenseServer,
       });
-
       window.Viewer = window.sgworld._Viewer;
-
       // Viewer.camera.flyTo({
       //   destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
       // });
-
-
       Viewer._enableInfoOrSelection = false;
       //鏄剧ずfps
       Viewer.scene.debugShowFramesPerSecond = false;
@@ -612,14 +794,20 @@
       //寮�鍚繁搴︽娴�
       // sg.Analysis.depthTestAgainstTerrain(true)
       Viewer.scene.globe.depthTestAgainstTerrain = true;
-
-
       // window.elevationTool = new SmartEarth.ElevationTool(window.sg);
       // elevationTool.setContourColor("#F1D487");
+      var option = {
+        url: window.sceneConfig.SGUrl,
+        layerName: window.sceneConfig.mptName,
+        requestVertexNormals: true,
+      };
+      window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
+
+
 
       if (this.$store.state.previewLayer) {
         var res = this.$store.state.previewLayer;
-
+        var type = res.type;
         if (res.url.indexOf('.png') != -1) {
           var wkt = this.$wkt.parse(res.geom);
           var height = this.getHeight(wkt.coordinates[2])
@@ -628,43 +816,182 @@
               url: res.url,
               maximumLevel: 18
             })
-
           );
           Viewer.camera.flyTo({
             destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height),
           });
         } else if (res.url.indexOf('.json') != -1) {
-          var tileset = Viewer.scene.primitives.add(
-            new Cesium.Cesium3DTileset({
-              url: res.url, //192.168.20.106,to4
-              maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16
-              maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512
-              dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse
-              skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
-            })
-          );
-          tileset.readyPromise.then((tileset) => {
-            tileset.id = res.cnName;
-            tileset.layerId = res.id;
-            this.tileSet(tileset, 50)
-            Viewer.flyTo(tileset);
-          });
-        } else if (res.url.indexOf('.mpt') != -1) {
+          if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset);
+          this.app.tileset = this.createTileset(res);
+          var that = this;
+          Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) {
 
+            that.setModleLocatin()
+            Viewer.flyTo(ts);
+          });
+
+        } else if (res.url.indexOf('.mpt') != -1) {
           Viewer.imageryLayers.removeAll();
           var url = res.url.split(';')
-
-
           sgworld.Creator.createImageryProvider('mpt褰卞儚', "wms", {
             url: url[0],
             layers: url[1]
           }, "0", undefined, true, "");
-
         } else if (res.url.indexOf('menuLayer') != -1) {
           this.setShowModelLayer();
         }
       }
     },
+    async resave() {
+      this.$store.state.previewLayer.json = JSON.stringify(this.modelForm);
+
+      const data = await publish_update(this.$store.state.previewLayer);
+      if (data.code != 200) {
+        this.$message.error('鏁版嵁淇濆瓨澶辫触');
+      } else {
+        this.$message({
+          message: '鏁版嵁淇濆瓨鎴愬姛',
+          type: 'success'
+        });
+      }
+      this.reload();
+    },
+    reload() {
+      var json = JSON.stringify(this.modelForm);
+      var url = this.$store.state.previewLayer.url;
+      if (!url) return;
+      if (this.app.tileset) Viewer.scene.primitives.remove(this.app.tileset);
+
+      this.app.isBusy = true;
+      this.app.tileset = this.createTileset(this.$store.state.previewLayer);
+      var that = this;
+      Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) {
+        that.modelForm = JSON.parse(json);
+        var pos = Cesium.Cartesian3.fromDegrees(parseFloat(that.modelForm.lon), parseFloat(that.modelForm.lat), parseFloat(that.modelForm.height));
+
+
+        var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
+        var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(parseFloat(that.modelForm.yaw)), 0, 0);
+        var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
+        that.app.tileset._root.transform = matrix;
+        Viewer.flyTo(ts);
+        that.app.isBusy = false;
+      });
+    },
+
+    //鎷惧彇
+    pickupCoords() {
+      if (this.app.handler) {
+        this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
+        this.app.handler = undefined;
+        return;
+      }
+      var that = this;
+      this.app.handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
+      this.app.handler.setInputAction(function (event) {
+
+        var ray = Viewer.camera.getPickRay(event.position);
+        var cartesian = Viewer.scene.globe.pick(ray, Viewer.scene);
+        var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
+        var x = that.toFixed(Cesium.Math.toDegrees(cartographic.longitude), 7);
+        var y = that.toFixed(Cesium.Math.toDegrees(cartographic.latitude), 7);
+        var z = that.toFixed(cartographic.height, 3);
+
+        that.modelForm.lon = x;
+        that.modelForm.lat = y;
+        that.modelForm.height = z;
+        that.pickupCoords();
+      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+    },
+    // 淇濈暀灏忔暟浣�
+    toFixed(d, n) {
+      var p = Math.pow(10, n);
+
+      return Math.round(d * p) / p;
+    },
+    update() {
+      this.setTilesetArgs(this.modelForm);
+      sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha)
+    },
+    setTilesetArgs(f) {
+
+      if (!this.app.tileset || this.app.isBusy) return;
+
+      var pos = Cesium.Cartesian3.fromDegrees(parseFloat(f.lon), parseFloat(f.lat), parseFloat(f.height));
+
+      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
+      var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(parseFloat(f.yaw)), 0, 0);
+      var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
+      var model = this.app.tileset
+      model._root.transform = matrix;
+    },
+    //鍦颁笅
+    underground() {
+      this.app.under = !this.app.under;
+      sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha)
+    },
+    //鏄鹃殣
+    showTileset() {
+      if (!this.app.tileset) return;
+      this.app.tileset.show = !this.app.tileset.show;
+    },
+    //瀹氫綅
+    locateTo() {
+      if (!this.app.tileset) return;
+      Viewer.flyTo(this.app.tileset);
+    },
+    createTileset(res) {
+      return new Cesium.Cesium3DTileset({
+        url: res.url,
+        name: 'tsTest',
+        skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
+        baseScreenSpaceError: 1024,
+        maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16锛屾暟鍊煎姞澶ц兘璁╂渶缁堟垚鍍忓彉妯$硦
+        skipScreenSpaceErrorFactor: 16,
+        skipLevels: 1,
+        immediatelyLoadDesiredLevelOfDetail: false,
+        loadSiblings: true, // 鑷姩浠庝腑蹇冨紑濮嬭秴娓呭寲妯″瀷锛歠alse
+        cullWithChildrenBounds: true, // 浣跨敤瀛愰」杈圭晫浣撶Н鐨勫苟闆嗘潵鍓旈櫎鍥惧潡锛歵rue
+        cullRequestsWhileMoving: true,
+        cullRequestsWhileMovingMultiplier: 10, // 鍊艰秺灏忚兘澶熸洿蹇殑鍓旈櫎锛�60
+        preloadWhenHidden: true,
+        preferLeaves: true, // 棰勮瀛愯妭鐐癸細false
+        maximumMemoryUsage: 256, // 鍐呭瓨鍒嗛厤鍙樺皬鏈夊埄浜庡唴瀛樺洖鏀讹紝鎻愬崌鎬ц兘浣撻獙
+        progressiveResolutionHeightFraction: 0.5, // 鏁板�煎亸浜�0鑳藉璁╁垵濮嬪姞杞藉彉寰楁ā绯�
+        dynamicScreenSpaceErrorDensity: 0.5, // 鏁板�煎姞澶э紝鑳借鍛ㄨ竟鍔犺浇鍙樺揩
+        dynamicScreenSpaceErrorFactor: 2, // 鍔ㄦ�佸睆骞曠┖闂磋宸殑绯绘暟
+        dynamicScreenSpaceError: true // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿
+      });
+    },
+    setEditModelLayer(res) {
+      this.editModelFlag = true;
+      if (res.json) {
+        var json = JSON.parse(res.json)
+        this.modelForm = json;
+        this.reload();
+      } else {
+        this.getTilesetArgs();
+      }
+
+    },
+    setModleLocatin() {
+      var res = this.$store.state.previewLayer;
+      var type = res.type;
+      if (this.modelType.indexOf(type) != -1) {
+        this.setEditModelLayer(res)
+      }
+    },
+    getTilesetArgs() {
+      this.app.isBusy = true;
+      var cm = this.app.tileset._root.transform;
+      var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]);
+      var carto = Cesium.Cartographic.fromCartesian(cartesian);
+      this.modelForm.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7);
+      this.modelForm.lat = Cesium.Math.toDegrees(carto.latitude).toFixed(7);
+      this.modelForm.height = carto.height.toFixed(3);
+      this.app.isBusy = false;
+    },
+
     async setShowModelLayer() {
       const data = await perms_selectLayers();
       if (data.code != 200) {
@@ -694,19 +1021,10 @@
                 window.pickedColor = window.pickedFeature.color
                 window.pickedFeature.color = Cesium.Color.RED.withAlpha(0.3);
                 that.setShowModelInfo(pickedFeature);
-                // this.$store.state.catModel = true;
-                // this.$store.state.catModelInfo = {
-                //   id: pickedFeature.getProperty("id"),
-                //   name: pickedFeature.getProperty("name"),
-                //   layerId: pickedFeature.primitive.layerId,
-                //   layerName: pickedFeature.primitive.id
-                // };
               }
             }
           }
         }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
-
-
       }
     },
     setTreeData(source) {
@@ -720,19 +1038,19 @@
         return father.pid == 430; // 杩斿洖涓�绾ц彍鍗�
       });
     },
-    tileSet(tileset, height) {
-      //3dtile妯″瀷鐨勮竟鐣岀悆浣�
-      var boundingSphere = tileset.boundingSphere;
-      //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
-      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
-      //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
-      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
-      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
-      //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
-      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
-      //淇敼妯″瀷鐭╅樀
-      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
-    },
+    // tileSet(tileset, height) {
+    //   //3dtile妯″瀷鐨勮竟鐣岀悆浣�
+    //   var boundingSphere = tileset.boundingSphere;
+    //   //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
+    //   var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
+    //   //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
+    //   var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
+    //   var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
+    //   //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
+    //   var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
+    //   //淇敼妯″瀷鐭╅樀
+    //   tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+    // },
     getHeight(level) {
       if (level > 0 && level < 23) {
         return this.levelArray[level]
@@ -756,7 +1074,7 @@
 
     border: 1px solid #409eff;
     margin: 10px;
-    max-height: 300px;
+    max-height: 600px;
     overflow: auto;
   }
   .pdfClass {
diff --git a/src/main.js b/src/main.js
index d2a3bd6..5961186 100644
--- a/src/main.js
+++ b/src/main.js
@@ -15,7 +15,7 @@
 import '@/assets/css/content.css'
 import '@/assets/css/configure.css'
 import '@/assets/css/config.css'
-import 'animate.css';
+// import 'animate.css';
 import VueParticles from 'vue-particles'
 import dataV from '@jiaminghi/data-view'
 import directive from '@/directive/index.js' // directive
@@ -23,6 +23,8 @@
 import elDragDialog from './utils/diaLog.js'
 Vue.directive('el-drag-dialog', elDragDialog);
 ElementUI.Dialog.props.closeOnClickModal.default = false;
+
+
 Vue.use(directive)
 Vue.use(dataV)
 Vue.use(VueParticles)
diff --git a/src/views/Archive/index.vue b/src/views/Archive/index.vue
index 0070f9d..22b68eb 100644
--- a/src/views/Archive/index.vue
+++ b/src/views/Archive/index.vue
@@ -552,6 +552,7 @@
             </el-form-item>
           </el-form>
           <el-table
+            @cell-dblclick="copyText"
             :data="tableAttach"
             ref="filterTable"
             height="calc(100% - 130px)"
@@ -650,6 +651,7 @@
         </el-form>
         <el-divider />
         <el-table
+          @cell-dblclick="copyText"
           ref="filterTable"
           :data="tableData"
           border
@@ -773,6 +775,7 @@
       <div class="downloadBox">
         <div class="archdowntop">
           <el-table
+            @cell-dblclick="copyText"
             :data="downloadTableData"
             style="width: 100%"
             height="calc(100% - 5px)"
@@ -850,6 +853,7 @@
       <div style="height: 65vh; width: 100%">
 
         <el-table
+          @cell-dblclick="copyText"
           ref="filterTable"
           :data="metaDataTable1"
           style="width: 100%"
@@ -954,6 +958,7 @@
           </el-form-item>
         </el-form>
         <el-table
+          @cell-dblclick="copyText"
           ref="filterTable"
           :data="metaDataTable"
           style="width: 100%"
@@ -1064,11 +1069,13 @@
         v-if="dialog.isJpg"
         class="pdfClass"
       >
-        <img
+        <el-image
           style="width:100%; height:100%"
           :src="dialog.src"
-          alt=""
-        />
+          :preview-src-list="[dialog.src]"
+        >
+        </el-image>
+
       </div>
     </el-dialog>
 
@@ -1245,6 +1252,16 @@
     this.signGetPublicKey();
   },
   methods: {
+    copyText(row, column, cell, event) {
+      // 鍙屽嚮澶嶅埗
+      let save = function (e) {
+        e.clipboardData.setData('text/plain', event.target.innerText);
+        e.preventDefault();  //闃绘榛樿琛屼负
+      }
+      document.addEventListener('copy', save);//娣诲姞涓�涓猚opy浜嬩欢
+      document.execCommand("copy");//鎵цcopy鏂规硶
+      this.$message({ message: '澶嶅埗鎴愬姛', type: 'success' })//鎻愮ず
+    },
     //鎵归噺涓嬭浇澶嶉�夋chagne
     handleCheckedDataTypeChange(res) {
       var std = 0;
diff --git a/src/views/Synthesis/LeftMenu.vue b/src/views/Synthesis/LeftMenu.vue
index 0b7b2af..9a392a5 100644
--- a/src/views/Synthesis/LeftMenu.vue
+++ b/src/views/Synthesis/LeftMenu.vue
@@ -68,11 +68,14 @@
           v-if="dialog.isJpg"
           class="pdfClass"
         >
-          <img
+
+          <el-image
             style="width:100%; height:100%"
             :src="dialog.src"
-            alt=""
-          />
+            :preview-src-list="[dialog.src]"
+          >
+          </el-image>
+
         </div>
       </el-dialog>
       <div style="height:63vh">
diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index a2c2a58..84e312d 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -822,6 +822,7 @@
         } else {
           url = modelUrl + "/" + res.url
         }
+
         var tileset = Viewer.scene.primitives.add(
           new Cesium.Cesium3DTileset({
             name: res.cnName,
@@ -832,11 +833,13 @@
             skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
           })
         );
+
         tileset.readyPromise.then((tileset) => {
           tileset.id = res.cnName;
           tileset.layerId = res.id;
-          this.tileSet(tileset, parseFloat(res.elev))
-          Viewer.flyTo(tileset);
+          this.getTilesetArgs(tileset, res);
+          // 
+
         });
         window.model = tileset
       } else if (res.serveType == "TMS") {
@@ -877,6 +880,23 @@
       }
 
     },
+    async getTilesetArgs(tileset, res) {
+      if (res.pubid > 0) {
+        const data = await comprehensive_selectPubById({ id: res.pubid })
+        if (data.code != 200) {
+
+        } else {
+          this.reload(tileset, data.result.json)
+        }
+      } else {
+        this.tileSet(tileset, parseFloat(res.elev))
+
+      }
+
+
+
+
+    },
     async setQueryPubid(res) {
       const data = await comprehensive_selectPubById({ id: res.pubid })
       if (data.code != 200) {
@@ -903,7 +923,15 @@
         this.setChangeWMS();
       }
     },
-
+    reload(tileset, res) {
+      var vm = JSON.parse(res)
+      var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
+      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
+      var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
+      var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
+      tileset._root.transform = matrix;
+      Viewer.flyTo(tileset);
+    },
     tileSet(tileset, height) {
       //3dtile妯″瀷鐨勮竟鐣岀悆浣�
       var boundingSphere = tileset.boundingSphere;
@@ -916,6 +944,7 @@
       var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
       //淇敼妯″瀷鐭╅樀
       tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+      Viewer.flyTo(tileset);
     },
     setTreeData(source) {
       let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
diff --git a/src/views/Tools/ModelProperty.vue b/src/views/Tools/ModelProperty.vue
new file mode 100644
index 0000000..f6ca6cf
--- /dev/null
+++ b/src/views/Tools/ModelProperty.vue
@@ -0,0 +1,272 @@
+<template>
+  <Popup
+    ref="pop"
+    :title="title"
+    @close="close(true)"
+    width="400px"
+    @cancel="close(false)"
+    top="0vh"
+    left="30vh"
+  >
+    <el-tabs
+      v-model="activeName"
+      @tab-click="handleClick"
+    >
+      <el-tab-pane
+        label="灞炴��"
+        name="first"
+      >
+        <el-form
+          ref="form"
+          :model="formInline"
+          label-width="80px"
+        >
+
+          <el-form-item :label="$t('common.name')">
+
+            {{formInline.name}}
+          </el-form-item>
+          <el-form-item :label="$t('common.type')">
+
+            {{formInline.type}}
+          </el-form-item>
+
+          <el-form-item :label="$t('common.bak')">
+
+            {{formInline.bak}}
+          </el-form-item>
+
+        </el-form>
+
+      </el-tab-pane>
+      <el-tab-pane
+        label="闄勪欢"
+        name="second"
+      >
+
+        <el-table
+          :data="tableData"
+          ref="filterTable"
+          height="calc(100% - 130px)"
+          border
+          style="width: 100%"
+          @selection-change="handleAttatchChange"
+        >
+          <el-table-column
+            type="selection"
+            width="70"
+          />
+          <el-table-column
+            width="60"
+            type="index"
+            :label="$t('common.index')"
+          />
+          <el-table-column
+            prop="name"
+            :label="$t('common.name')"
+          />
+
+          <el-table-column
+            prop="sizes"
+            :label="$t('common.size')"
+            :formatter="statSizeChange"
+          />
+          <el-table-column
+            align="center"
+            :label="$t('common.operate')"
+            min-width="100"
+          >
+            <template slot-scope="scope">
+              <el-link
+                v-if="matchState(scope, /[]/)"
+                @click="setAttatchDetail(scope.$index, scope.row)"
+                class="elLink"
+              >{{ $t('common.see') }}</el-link>
+
+            </template>
+          </el-table-column>
+        </el-table>
+
+      </el-tab-pane>
+
+    </el-tabs>
+    <el-dialog
+      title="棰勮"
+      :append-to-body="false"
+      :visible.sync="dialog.dialogVisible"
+      width="70%"
+      :modal="false"
+      :close-on-click-modal="false"
+    >
+      <div
+        v-if="dialog.isPdf"
+        class="pdfClass"
+      >
+        <iframe
+          :src="dialog.src"
+          type="application/x-google-chrome-pdf"
+          width="100%"
+          height="100%"
+        >
+        </iframe>
+      </div>
+      <div
+        v-if="dialog.isJpg"
+        class="pdfClass"
+      >
+
+        <el-image
+          style="width:100%; height:100%"
+          :src="dialog.src"
+          :preview-src-list="[dialog.src]"
+        >
+        </el-image>
+
+      </div>
+    </el-dialog>
+  </Popup>
+</template>
+
+<script>
+
+import Popup from "./Popup";
+import { comprehensive_selectFiles } from '../../api/api.js'
+import { getToken } from "@/utils/auth";
+
+export default {
+  name: "ModelProperty",
+  components: {
+    Popup,
+  },
+  mixins: [],
+  data() {
+    return {
+      title: "鍦ㄧ嚎鍦板浘",
+      left: undefined,
+      tokne: "",
+      data: {
+
+      },
+      mapCollection: undefined,
+      formInline: {
+        title: '',
+        file: '',
+        name: '',
+        type: '',
+        info: '',
+        icon: '',
+        bak: ''
+      },
+      activeName: 'first',
+      tableData: [],
+      dialog: {
+        dialogVisible: false,
+        isPdf: false,
+        isJpg: false,
+        src: ''
+      },
+      attacgSelection: []
+    };
+  },
+  computed: {
+
+  },
+  methods: {
+
+    // 鍏抽棴寮圭獥
+    close(isCloseBtn, removeLayer = true) {
+      //   removeLayer && this.removeImageLayer();
+
+      // 閲嶇疆data鍊�
+      Object.assign(this.$data, this.$options.data());
+      !isCloseBtn && this.$refs.pop.close();
+    },
+    // 鎵撳紑寮圭獥
+    open() {
+
+      this.close(true);
+      this.$refs.pop.open();
+      this.title = this.$store.state.catModelInfo.name;
+      this.formInline = this.$store.state.catModelInfo;
+    },
+    // changeToken(token) {
+    //   this.mapCollection.tokne = token;
+    // },
+    // 闄勪欢=>琛ㄦ牸閫夋嫨
+    handleAttatchChange(val) {
+      this.attacgSelection = val;
+    },
+    statSizeChange(row, column) {
+      return this.stateFormatSizes(row.sizes)
+    },
+    stateFormatSizes(res) {
+      if (res >= 1024) {
+        const val = parseFloat(res / 1024).toFixed(3);
+        return val + ' GB';
+      } else {
+        return res + ' MB';
+      }
+    },
+    matchState(state = "", reg) {
+      var row = state.row;
+      var name = row.name;
+      if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
+        return true;
+      }
+      return false;
+    },
+    handleClick(tab, event) {
+      if (tab.name == "second") {
+        this.getAttacthFlieList();
+      }
+    },
+
+    //闄勪欢鍒楄〃鏌ヨ
+    async getAttacthFlieList() {
+      var obj = {
+        eventid: this.$store.state.catModelInfo.id,
+        tabName: "lf.sys_style"
+      };
+      const res = await comprehensive_selectFiles(obj);
+      if (res.code != 200) {
+        this.$message.error('鍒楄〃璋冪敤澶辫触');
+        return
+      }
+      this.tableData = res.result;
+    },
+
+    //闄勪欢鏌ョ湅
+    setAttatchDetail(index, row) {
+      this.refreshAttatchDetail()
+      var name = row.name;
+      if (name.indexOf('.pdf') != -1) {
+        this.dialog.dialogVisible = true;
+        this.dialog.isPdf = true;
+        var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken();
+        this.dialog.src = url
+      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
+        this.dialog.dialogVisible = true;
+        this.dialog.isJpg = true;
+        var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken();
+        this.dialog.src = url
+      }
+    },
+    refreshAttatchDetail() {
+      this.dialog.src = "";
+      this.dialog.dialogVisible = false;
+      this.dialog.isPdf = false;
+      this.dialog.isJpg = false;
+    },
+  },
+  mounted() {
+
+  }
+};
+</script>
+
+<style scoped lang="less">
+.pdfClass {
+  height: 63vh;
+  width: 100%;
+}
+</style>
diff --git a/src/views/datamanage/SpatialData.vue b/src/views/datamanage/SpatialData.vue
index 3fed848..99d4f70 100644
--- a/src/views/datamanage/SpatialData.vue
+++ b/src/views/datamanage/SpatialData.vue
@@ -429,11 +429,13 @@
         v-if="dialog.isJpg"
         class="pdfClass"
       >
-        <img
+        <el-image
           style="width:100%; height:100%"
           :src="dialog.src"
-          alt=""
-        />
+          :preview-src-list="[dialog.src]"
+        >
+        </el-image>
+
       </div>
     </el-dialog>
     <el-dialog
diff --git a/src/views/datamanage/metadataManage.vue b/src/views/datamanage/metadataManage.vue
index 4ed5ae6..cda589d 100644
--- a/src/views/datamanage/metadataManage.vue
+++ b/src/views/datamanage/metadataManage.vue
@@ -882,11 +882,13 @@
         v-if="dialog.isJpg"
         class="pdfClass"
       >
-        <img
-          style="width: 100%; height: 100%"
+        <el-image
+          style="width:100%; height:100%"
           :src="dialog.src"
-          alt=""
-        />
+          :preview-src-list="[dialog.src]"
+        >
+        </el-image>
+
       </div>
     </el-dialog>
 
diff --git a/src/views/datamanage/uploadmanage.vue b/src/views/datamanage/uploadmanage.vue
index 8696aca..6308636 100644
--- a/src/views/datamanage/uploadmanage.vue
+++ b/src/views/datamanage/uploadmanage.vue
@@ -169,8 +169,8 @@
         <el-table
           :data="tableData"
           style="width: 100%"
-          border
           @selection-change="handleSelectionChange"
+          @cell-dblclick="copyText"
           height="calc(100% - 1px)"
         >
           <el-table-column
@@ -615,6 +615,16 @@
     }
   },
   methods: {
+    copyText(row, column, cell, event) {
+      // 鍙屽嚮澶嶅埗
+      let save = function (e) {
+        e.clipboardData.setData('text/plain', event.target.innerText);
+        e.preventDefault();  //闃绘榛樿琛屼负
+      }
+      document.addEventListener('copy', save);//娣诲姞涓�涓猚opy浜嬩欢
+      document.execCommand("copy");//鎵цcopy鏂规硶
+      this.$message({ message: '澶嶅埗鎴愬姛', type: 'success' })//鎻愮ず
+    },
     setOptions() {
       var std = [];
       for (var i = 0; i < 21; i++) {
@@ -817,6 +827,7 @@
     },
     //棰勮寮圭獥鍏抽棴
     handleClose() {
+      this.getTableData();
       this.dialogVisible = false;
       this.showMapView = false;
 
diff --git a/src/views/exportMap/index.vue b/src/views/exportMap/index.vue
index c1b467c..724c6b6 100644
--- a/src/views/exportMap/index.vue
+++ b/src/views/exportMap/index.vue
@@ -109,7 +109,7 @@
               node-key="id"
               :props="defaultProps"
               :default-expanded-keys="[1]"
-              @check-change="handleTreeNodeClick"
+              @check="handleTreeNodeClick"
               ref="tree"
             >
             </el-tree>
@@ -348,7 +348,7 @@
   mounted() {
     this.LayerStart()
     this.initMap()
-    this.showMapLayer()
+
   },
   methods: {
     setTreeData(source) {
@@ -371,6 +371,7 @@
 
       var val = [];
       var std = [];
+      var layerWMS = [];
       for (var i in res) {
         var str = res[i];
 
@@ -380,7 +381,7 @@
           if (str.isShow == 1) {
 
             std.push(str.id)
-            this.showMapLayer(str)
+            layerWMS.push(str)
             this.tableData.push({
               name: str.cnName,
               ename: str.enName,
@@ -392,23 +393,42 @@
       var res = this.setTreeData(val);
       this.treeData = res;
       this.$refs.tree.setCheckedKeys(std)
+      this.showMapLayer(layerWMS);
+
+    },
+    setClearMap() {
+      var layers_ol = mapView.getAllLayers();
+      for (var i in layers_ol) {
+        var layerOl = layers_ol[i];
+        if (layerOl.values_.name == "Wms_Layer") {
+          mapView.removeLayer(layers_ol[i]); //鏄剧ず鍥惧眰
+        }
+      }
     },
     showMapLayer(val) {
-      if (val == undefined) return;
-      if (val.serveType == "WMS") {
+      if (val) {
+        this.setClearMap();
+        var url = [];
+        for (var i in val) {
+          if (val[i].url) {
+            url.push(val[i].url)
+          }
+
+        }
+        url = url.reverse()
+        console.log(url)
         var layer2 = new Image({
-          name: val.cnName,
+          name: "Wms_Layer",
           source: new ImageWMS({
             crossOrigin: "anonymous",
             url: geoServerURl,
-
             params: {
               FORMAT: "image/png",
               VERSION: "1.1.1",
-              LAYERS: val.url,
+              LAYERS: url.toString(),
             },
           }),
-        })
+        });
         mapView.addLayer(layer2)
       }
 
@@ -594,39 +614,55 @@
     },
     handleClose() { },
     handleTreeNodeClick(data, nodes) {
-      if (data.children != null) return
+      var value = this.$refs.tree.getCheckedNodes();
 
-      var layers = mapView.getAllLayers()
-      for (var i in layers) {
-        var layer = layers[i]
-        var str = 0
-        if (layer.values_.name == data.cnName) {
-          layer.setVisible(nodes) //鏄剧ず鍥惧眰
-          if (nodes == true) {
-            str++
-            this.tableData.push({
-              name: data.cnName,
-              ename: data.enName
-            })
-          } else {
-            this.tableData.some((item, i) => {
-              if (item.name === data.cnName) {
-                this.tableData.splice(i, 1)
-              }
-            })
-          }
+      this.showMapLayer(value)
+
+      var std = [];
+      for (var i in value) {
+        if (value[i].type == 2) {
+          var str = value[i]
+          std.push({
+            name: str.cnName,
+            ename: str.enName,
+          })
         }
-      }
 
-      if (str == 0 && nodes == true) {
-        this.showMapLayer(data)
-        // this.tableData.push({
-        //   name: data.cnName,
-        //   ename: data.enName,
-        // })
       }
+      this.tableData = std;
+      // if (data.children != null) return
 
-      // this.tableData = this.arrList
+      // var layers = mapView.getAllLayers()
+      // for (var i in layers) {
+      //   var layer = layers[i]
+      //   var str = 0
+      //   if (layer.values_.name == data.cnName) {
+      //     layer.setVisible(nodes) //鏄剧ず鍥惧眰
+      //     if (nodes == true) {
+      //       str++
+      //       this.tableData.push({
+      //         name: data.cnName,
+      //         ename: data.enName
+      //       })
+      //     } else {
+      //       this.tableData.some((item, i) => {
+      //         if (item.name === data.cnName) {
+      //           this.tableData.splice(i, 1)
+      //         }
+      //       })
+      //     }
+      //   }
+      // }
+
+      // if (str == 0 && nodes == true) {
+      //   this.showMapLayer(data)
+      //   // this.tableData.push({
+      //   //   name: data.cnName,
+      //   //   ename: data.enName,
+      //   // })
+      // }
+
+      // // this.tableData = this.arrList
     },
     setAddMapLayer() {
       this.dialogVisible = false
@@ -710,6 +746,7 @@
     width: 100%;
     height: 70px;
     padding-left: 20px;
+    margin: 0;
   }
   .left_Menu {
     z-index: 40;
diff --git a/src/views/userManage/userInfoManage.vue b/src/views/userManage/userInfoManage.vue
index 0ce26e4..632a187 100644
--- a/src/views/userManage/userInfoManage.vue
+++ b/src/views/userManage/userInfoManage.vue
@@ -1,15 +1,20 @@
 <template>
   <div class="userInfo_box">
-    <My-bread
-      :list="[
+    <My-bread :list="[
         `${$t('userManage.userManage')}`,
         `${$t('userManage.userInfoManage')}`,
-      ]"
-    ></My-bread>
+      ]"></My-bread>
     <el-divider />
     <div class="inquire">
-      <el-form ref="queryForm" :model="queryForm" :inline="true">
-        <el-form-item prop="uname" :label="$t('userManage.userInfoObj.uname')">
+      <el-form
+        ref="queryForm"
+        :model="queryForm"
+        :inline="true"
+      >
+        <el-form-item
+          prop="uname"
+          :label="$t('userManage.userInfoObj.uname')"
+        >
           <el-input v-model="queryForm.uname" />
         </el-form-item>
         <el-form-item
@@ -38,7 +43,7 @@
             type="primary"
             @click="queryInfo()"
             icon="el-icon-search"
-            >{{ $t("operatManage.ELM.search") }}
+          >{{ $t("operatManage.ELM.search") }}
           </el-button>
         </el-form-item>
         <el-form-item>
@@ -77,7 +82,7 @@
             size="small"
             @click="editPwd"
             icon="el-icon-unlock"
-            >閲嶇疆瀵嗙爜
+          >閲嶇疆瀵嗙爜
           </el-button>
         </el-form-item>
       </el-form>
@@ -90,7 +95,10 @@
         height="99%"
         @selection-change="handleSelectionChange"
       >
-        <el-table-column type="selection" width="55" />
+        <el-table-column
+          type="selection"
+          width="55"
+        />
         <el-table-column
           align="center"
           type="index"
@@ -178,11 +186,23 @@
           :label="$t('userManage.userInfoObj.status')"
         >
           <template slot-scope="scope">
-            <el-tag v-if="scope.row.status == 0" type="success">姝e父</el-tag>
-            <el-tag v-if="scope.row.status == 1" type="info">绂佺敤</el-tag>
-            <el-tag v-if="scope.row.status == 2" type="warning">鍒犻櫎</el-tag>
+            <el-tag
+              v-if="scope.row.status == 0"
+              type="success"
+            >姝e父</el-tag>
+            <el-tag
+              v-if="scope.row.status == 1"
+              type="info"
+            >绂佺敤</el-tag>
+            <el-tag
+              v-if="scope.row.status == 2"
+              type="warning"
+            >鍒犻櫎</el-tag>
             <el-tag v-if="scope.row.status == 3">鐢宠</el-tag>
-            <el-tag v-if="scope.row.status == 4" type="danger">鎷掓壒</el-tag>
+            <el-tag
+              v-if="scope.row.status == 4"
+              type="danger"
+            >鎷掓壒</el-tag>
           </template>
         </el-table-column>
         <el-table-column
@@ -203,12 +223,14 @@
               type="warning"
               @click="editInfo(scope.row)"
               size="mini"
-              >{{ $t("common.edit") }}</el-button
-            >
+            >{{ $t("common.edit") }}</el-button>
           </template>
         </el-table-column>
       </el-table>
-      <div style="margin-top: 25px" class="pagination_box">
+      <div
+        style="margin-top: 25px"
+        class="pagination_box"
+      >
         <el-pagination
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
@@ -241,8 +263,14 @@
             v-if="behavior == '鏂板鐢ㄦ埛'"
             :label-width="formLabelWidth"
           >
-            <el-input v-model="editForm.uid" autocomplete="off"></el-input>
-            <div class="isNewUser" v-if="isNewUser">
+            <el-input
+              v-model="editForm.uid"
+              autocomplete="off"
+            ></el-input>
+            <div
+              class="isNewUser"
+              v-if="isNewUser"
+            >
               <img src="../../assets/img/success.png" />
               璐﹀彿鍙敤
             </div>
@@ -271,7 +299,11 @@
               show-password
             ></el-input>
           </el-form-item>
-          <el-form-item prop="pwd" label="瀵嗙爜" :label-width="formLabelWidth">
+          <el-form-item
+            prop="pwd"
+            label="瀵嗙爜"
+            :label-width="formLabelWidth"
+          >
             <el-input
               type="password"
               v-model="editForm.pwd"
@@ -296,10 +328,21 @@
             label="鐢ㄦ埛鍚嶇О"
             :label-width="formLabelWidth"
           >
-            <el-input v-model="editForm.uname" autocomplete="off"></el-input>
+            <el-input
+              v-model="editForm.uname"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
-          <el-form-item prop="sex" label="鎬у埆" :label-width="formLabelWidth">
-            <el-select v-model="editForm.sex" clearable placeholder="璇烽�夋嫨">
+          <el-form-item
+            prop="sex"
+            label="鎬у埆"
+            :label-width="formLabelWidth"
+          >
+            <el-select
+              v-model="editForm.sex"
+              clearable
+              placeholder="璇烽�夋嫨"
+            >
               <el-option
                 v-for="item in sexOpt"
                 :key="item.value"
@@ -314,7 +357,10 @@
             label="绫嶈疮"
             :label-width="formLabelWidth"
           >
-            <el-input v-model="editForm.natives" autocomplete="off"></el-input>
+            <el-input
+              v-model="editForm.natives"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
           <el-form-item
             prop="depid"
@@ -343,39 +389,73 @@
             label="璇佷欢鍙�"
             :label-width="formLabelWidth"
           >
-            <el-input v-model="editForm.idcard" autocomplete="off"></el-input>
+            <el-input
+              v-model="editForm.idcard"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
         </div>
         <div style="width: 45%">
-          <el-form-item prop="job" label="宸ヤ綔" :label-width="formLabelWidth">
-            <el-input v-model="editForm.job" autocomplete="off"></el-input>
+          <el-form-item
+            prop="job"
+            label="宸ヤ綔"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="editForm.job"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
-          <el-form-item prop="edu" label="鏁欒偛" :label-width="formLabelWidth">
-            <el-input v-model="editForm.edu" autocomplete="off"></el-input>
+          <el-form-item
+            prop="edu"
+            label="鏁欒偛"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="editForm.edu"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
-          <el-form-item prop="addr" label="鍦板潃" :label-width="formLabelWidth">
-            <el-input v-model="editForm.addr" autocomplete="off"></el-input>
+          <el-form-item
+            prop="addr"
+            label="鍦板潃"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="editForm.addr"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
           <el-form-item
             prop="email"
             label="鐢靛瓙閭欢"
             :label-width="formLabelWidth"
           >
-            <el-input v-model="editForm.email" autocomplete="off"></el-input>
+            <el-input
+              v-model="editForm.email"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
           <el-form-item
             prop="contact"
             label="鑱旂郴鏂瑰紡"
             :label-width="formLabelWidth"
           >
-            <el-input v-model="editForm.contact" autocomplete="off"></el-input>
+            <el-input
+              v-model="editForm.contact"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
           <el-form-item
             prop="status"
             label="鐘舵��"
             :label-width="formLabelWidth"
           >
-            <el-select v-model="editForm.status" clearable placeholder="璇烽�夋嫨">
+            <el-select
+              v-model="editForm.status"
+              clearable
+              placeholder="璇烽�夋嫨"
+            >
               <el-option
                 v-for="item in statusOpt"
                 :key="item.value"
@@ -385,30 +465,49 @@
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item prop="bak" label="澶囨敞" :label-width="formLabelWidth">
-            <el-input v-model="editForm.bak" autocomplete="off"></el-input>
+          <el-form-item
+            prop="bak"
+            label="澶囨敞"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model="editForm.bak"
+              autocomplete="off"
+            ></el-input>
           </el-form-item>
         </div>
       </el-form>
-      <div v-if="behavior == '淇敼淇℃伅'" slot="footer" class="dialog-footer">
-        <el-button size="medium" @click="cancelEdit()">閲嶇疆</el-button>
+      <div
+        v-if="behavior == '淇敼淇℃伅'"
+        slot="footer"
+        class="dialog-footer"
+      >
+        <el-button
+          size="medium"
+          @click="cancelEdit()"
+        >閲嶇疆</el-button>
         <el-button
           size="medium"
           type="primary"
           @click="sendEdit('editForm')"
           v-loading.fullscreen.lock="fullscreenLoading"
-          >鎻愪氦</el-button
-        >
+        >鎻愪氦</el-button>
       </div>
-      <div v-else slot="footer" class="dialog-footer">
-        <el-button size="medium" @click="cancelAdd('editForm')">閲嶇疆</el-button>
+      <div
+        v-else
+        slot="footer"
+        class="dialog-footer"
+      >
+        <el-button
+          size="medium"
+          @click="cancelAdd('editForm')"
+        >閲嶇疆</el-button>
         <el-button
           size="medium"
           type="primary"
           @click="sendAdd('editForm')"
           v-loading.fullscreen.lock="fullscreenLoading"
-          >鎻愪氦</el-button
-        >
+        >鎻愪氦</el-button>
       </div>
     </el-dialog>
     <el-dialog
@@ -418,8 +517,16 @@
       :visible.sync="resetPwd"
       :before-close="handleClose"
     >
-      <el-form :model="pwdForm" ref="pwdForm" :rules="rules">
-        <el-form-item prop="adminPwd" label="绠$悊鍛樺瘑鐮�" label-width="140px">
+      <el-form
+        :model="pwdForm"
+        ref="pwdForm"
+        :rules="rules"
+      >
+        <el-form-item
+          prop="adminPwd"
+          label="绠$悊鍛樺瘑鐮�"
+          label-width="140px"
+        >
           <el-input
             type="password"
             v-model="pwdForm.adminPwd"
@@ -427,7 +534,11 @@
             show-password
           ></el-input>
         </el-form-item>
-        <el-form-item prop="newPwd" label="鏂板瘑鐮�" label-width="140px">
+        <el-form-item
+          prop="newPwd"
+          label="鏂板瘑鐮�"
+          label-width="140px"
+        >
           <el-input
             type="password"
             v-model="pwdForm.newPwd"
@@ -435,7 +546,11 @@
             show-password
           ></el-input>
         </el-form-item>
-        <el-form-item prop="checkPwd" label="纭瀵嗙爜" label-width="140px">
+        <el-form-item
+          prop="checkPwd"
+          label="纭瀵嗙爜"
+          label-width="140px"
+        >
           <el-input
             type="password"
             v-model="pwdForm.checkPwd"
@@ -444,17 +559,20 @@
           ></el-input>
         </el-form-item>
       </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button size="medium" @click="cancelReset - 'pwdForm'"
-          >閲嶇疆</el-button
-        >
+      <div
+        slot="footer"
+        class="dialog-footer"
+      >
+        <el-button
+          size="medium"
+          @click="cancelReset - 'pwdForm'"
+        >閲嶇疆</el-button>
         <el-button
           size="medium"
           type="primary"
           @click="sendReset('pwdForm')"
           v-loading.fullscreen.lock="fullscreenLoading"
-          >鎻愪氦</el-button
-        >
+        >鎻愪氦</el-button>
       </div>
     </el-dialog>
   </div>
@@ -712,7 +830,7 @@
             });
           }
         })
-        .catch((res) => {});
+        .catch((res) => { });
 
       queryPageUser({
         pageIndex: 1,
@@ -729,7 +847,7 @@
             });
           }
         })
-        .catch((res) => {});
+        .catch((res) => { });
     },
     treeData(source) {
       let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
@@ -956,7 +1074,7 @@
 
           done();
         })
-        .catch((_) => {});
+        .catch((_) => { });
     },
     //鎻愪氦缂栬緫
     sendEdit(formName) {
@@ -1041,9 +1159,6 @@
 };
 </script>
 <style>
-/deep/ .el-table__fixed-right {
-  height: 100% !important;
-}
 </style>
 <style lang="less" scoped>
 //@import url(); 寮曞叆鍏叡css绫�

--
Gitblit v1.9.3