From 8e44ce5a0c75861e5fdca999e3dc5b6f61faa585 Mon Sep 17 00:00:00 2001
From: TreeWish <1131093754@qq.com>
Date: 星期四, 16 二月 2023 09:42:06 +0800
Subject: [PATCH] Merge branch 'master' of http://103.85.165.99:8989/r/LFWEB_NEW

---
 src/views/Tools/LayerTree.vue |  162 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 119 insertions(+), 43 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index 03592cc..6696753 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -15,7 +15,8 @@
       @node-contextmenu="rightClick"
       @check-change="handleCheckChange"
       :default-checked-keys="handleTreeCheck"
-      ref="tree"     >
+      ref="tree"
+    >
       <span
         class="slot-t-node"
         slot-scope="{ node, data }"
@@ -38,7 +39,7 @@
           ></el-input>
         </span>
       </span>
-      
+
     </el-tree>
 
     <el-card
@@ -143,6 +144,14 @@
 import { image_layer } from '../../assets/js/index.js';
 import ImageWMS from 'ol/source/ImageWMS';
 import Image from 'ol/layer/Image';
+import GeoJSON from 'ol/format/GeoJSON.js';
+import Map from 'ol/Map.js';
+
+import { Vector as VectorSource } from "ol/source";
+import { Vector as VectorLayer, } from "ol/layer";
+
+import View from 'ol/View.js';
+import { Fill, Stroke, Style } from 'ol/style.js';
 import { perms_selectLayers } from '../../api/api.js'
 export default {
   name: 'tree',
@@ -297,6 +306,30 @@
     deleteNode() {
 
       this.foo();
+      var label = this.currentNode.data.label;
+      if (this.currentNode.data.layerType == 'WMS') {
+        for (var i in window.Viewer.imageryLayers_layers) {
+          if (window.Viewer.imageryLayers_layers[i].name === label) {
+            window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers_layers[i])
+          }
+        }
+
+      } else if (this.currentNode.data.layerType == 'WFS') {
+        for (var i in window.Viewer.dataSources._dataSources) {
+          if (window.Viewer.dataSources._dataSources[i].name == label) {
+            window.Viewer.dataSources.remove(window.Viewer.dataSources._dataSources[i]);
+            std.push(data.label)
+          }
+        }
+      }
+      var layers_ol = window.map.getAllLayers();
+      for (var i in layers_ol) {
+        var layerOl = layers_ol[i];
+        if (layerOl.values_.name == label) {
+          window.map.removeLayer(layerOl); //鏄剧ず鍥惧眰
+        }
+      }
+
       this.$refs.tree.remove(this.currentNode);
     },
 
@@ -317,40 +350,41 @@
 
 
     menuMoveF(type) {
-        // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤
-        var node= this.currentNode;
-        var data = this.currentData;
-        let copyNode = this.currentNode
-        // copyNode.previousSibling = {...node. }
-        // copyNode.nextSibling = {...node.nextSibling}
-        // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode))
-        let nodeData = {}
-        if (type==='up') {
-           // 涓婄Щ
-          if (node.previousSibling) {
-            // 鍒犻櫎鍘熷厛鐨刵ode
-            this.$refs.tree.remove(node.data)
-            // 鎷垮埌copy鐨刵ode
-            // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
-            // // 澶嶅埗璇ode鍒版寚瀹氫綅缃�(鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫悗涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node)
-            // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data)
-            window.sessionStorage.removeItem('menuNode')
-          } else {
-            this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓婄骇')
-          }
+      // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤
+      var node = this.currentNode;
+      var data = this.currentData;
+      let copyNode = this.currentNode
+
+      // copyNode.previousSibling = {...node. }
+      // copyNode.nextSibling = {...node.nextSibling}
+      // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode))
+      let nodeData = {}
+      if (type === 'up') {
+        // 涓婄Щ
+        if (node.previousSibling) {
+          // 鍒犻櫎鍘熷厛鐨刵ode
+          this.$refs.tree.remove(node.data)
+          // 鎷垮埌copy鐨刵ode
+          // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
+          // // 澶嶅埗璇ode鍒版寚瀹氫綅缃�(鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫悗涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node)
+          // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data)
+          window.sessionStorage.removeItem('menuNode')
         } else {
-          // 涓嬬Щ
-          if (node.nextSibling) {
-            this.$refs.tree.remove(node.data)
-            nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
-            // 鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫墠涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node
-            this.$refs.tree.insertAfter(nodeData.data,nodeData.nextSibling.data)
-            window.sessionStorage.removeItem('menuNode')
-          } else {
-            this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓嬬骇')
-          }
+          this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓婄骇')
         }
-      },
+      } else {
+        // 涓嬬Щ
+        if (node.nextSibling) {
+          this.$refs.tree.remove(node.data)
+          nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
+          // 鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫墠涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node
+          this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data)
+          window.sessionStorage.removeItem('menuNode')
+        } else {
+          this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓嬬骇')
+        }
+      }
+    },
 
 
     handleDragStart(node, ev) {
@@ -410,15 +444,23 @@
       if (std.length == 0 && checked == true) {
         this.setAddLayers(data)
       }
-
+      var layers_ol = window.map.getAllLayers();
+      for (var i in layers_ol) {
+        var layerOl = layers_ol[i];
+        if (layerOl.values_.name == data.label) {
+          layerOl.setVisible(checked); //鏄剧ず鍥惧眰
+        }
+      }
     },
     setAddLayers(res) {
 
       if (res.layerType == 'WMS') {
+
         var url = geoServerURl;
         if (res.url != null && res.url != undefined) {
           url = res.url
         }
+        var imageryLayers = window.Viewer.scene.imageryLayers;
         let layerWMS = new Cesium.WebMapServiceImageryProvider({
           url: url,
           layers: res.resource,
@@ -428,7 +470,29 @@
           },
         });
         layerWMS.name = res.label;
-        window.Viewer.imageryLayers.addImageryProvider(layerWMS);
+        //閫忔槑搴�
+        var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS);
+        if (res.opacity) {
+          tdtAnnoLayer.alpha = parseInt(res.opacity) / 100;
+        }
+        var layer2 = new Image({
+          name: res.label,
+          source: new ImageWMS({
+            crossOrigin: 'anonymous',
+            url: url,
+
+            params: {
+              FORMAT: 'image/png',
+              VERSION: '1.1.1',
+              LAYERS: res.resource,
+            },
+          }),
+        });
+        if (res.opacity) {
+          layer2.setOpacity(parseInt(res.opacity) / 100);
+        }
+        window.map.addLayer(layer2);
+
       } else if (res.layerType == 'WFS') {
 
         var url = res.url + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + res.resource + "&outputFormat=application%2Fjson"
@@ -439,7 +503,8 @@
           success: function (data) {
             var datasource = Cesium.GeoJsonDataSource.load(data, {
               stroke: Cesium.Color.YELLOW,
-              fill: Cesium.Color.YELLOW.withAlpha(0.5),
+              fill: Cesium.Color.YELLOW.withAlpha(0.1),
+              alpha: 0.1,
               strokeWidth: 8,
               clampToGround: true //鏄惁璐村湴
             });
@@ -453,10 +518,17 @@
             console.log("error");
           }
         });
+
+        var vectorLayer = new VectorLayer({
+          name: res.label,
+          source: new VectorSource({
+            url: url,
+            format: new GeoJSON(),
+          }),
+
+        });
+        window.map.addLayer(vectorLayer);
       }
-
-
-
     },
     async layersStart() {
       const data = await perms_selectLayers();
@@ -581,17 +653,21 @@
   watch: {
     filterText(val) {
       this.$refs.tree.filter(val);
+
     },
   },
   mounted() {
-
+    this.$bus.$on("treeDataCopy", (res) => {
+      this.$store.state.treeData = this.treeData;
+      this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys()
+    });
 
     if (this.$store.state.showAllLayers == true) {
       this.layersStart();
       this.$store.state.showAllLayers = false;
     } else {
-      this.treelayersStart();
-
+      this.treeData = this.$store.state.treeData;
+      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
     }
 
   },

--
Gitblit v1.9.3