From d690c11330cff652773685b552376289b8574668 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 23 五月 2023 14:35:42 +0800
Subject: [PATCH] 1

---
 src/views/Tools/LayerTree.vue |  226 ++++++++++++++++++++++++-------------------------------
 1 files changed, 99 insertions(+), 127 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index f6c62b0..d5352c9 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -253,7 +253,7 @@
     },
     // 瀹氫綅
     async positioning () {
-      this.menuVisible = false;
+      this.rmListener();
       if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) {
         for (var i in Viewer.scene.primitives._primitives) {
           if (Viewer.scene.primitives._primitives[i].id == this.currentData.cnName) {
@@ -264,7 +264,7 @@
         return;
       }
 
-      if (["TMS", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) {
+      if (["TMS", "DOM", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) {
         var data = await comprehensive_selectPubById({ id: this.currentData.pubid });
         if (data.result && data.result.geom) {
           var wkt = this.$wkt.parse(data.result.geom);
@@ -282,7 +282,7 @@
     },
     // 閽诲瓟鏌辩姸鍥�
     async histogram () {
-      this.menuVisible = false
+      this.rmListener();
       var layer = this.currentData.enName.replaceAll("_", "");
       this.$store.state.mapSpaceQueryLayer = layer;
       this.$store.state.mapPopBoxFlag = "2";
@@ -305,110 +305,115 @@
 
       return this.levelArray[this.levelArray.length - 1];
     },
-    handleCheckChange (data, checked, indeterminate) {
-      if (data.type == 1) {
-        this.childOption = [];
-        this.getchilds(data);
-        var listWMS = [];
-        var listWFS = [];
-        var listTileset = [];
-        var listTMS = [];
-        var listMpt = [];
-        for (var i in this.childOption) {
-          switch (this.childOption[i].serveType) {
-            case 'WMS':
-              listWMS.push(this.childOption[i])
-              break;
-            case 'WFS':
-              listWFS.push(this.childOption[i])
-              break;
-            case '3DML':
-              listTileset.push(this.childOption[i])
-              break;
-            case 'Tileset':
-              listTileset.push(this.childOption[i])
-              break;
-            case 'Mpt':
-              listMpt.push(this.childOption[i])
-              break;
-            case 'TMS':
-              listTMS.push(this.childOption[i])
-              break;
-          }
-        }
-        this.setChangeWMS(listWMS, checked);
-        this.setChangeWFS(listWFS, checked);
-        this.setChangeTileset(listTileset, checked);
-        this.setChangeTMS(listTMS, checked);
-        this.setChangeMpt(listMpt, checked);
-      } else if (data.type == 2) {
-        if (data.serveType == "WMS") {
-          this.setChangeWMS([data], checked);
-        } else if (data.serveType == "Tileset" || data.serveType == "3DML") {
-          this.setChangeTileset([data], checked);
-        } else if (data.serveType == "TMS") {
-          this.setChangeTMS([data], checked);
-        } else if (data.serveType == "Mpt") {
-          this.setChangeMpt([data], checked);
+    // 鍥惧眰閫変腑浜嬩欢
+    handleCheckChange (data, checked) {
+      let nodes = [];
+      this.getNodes(data, nodes);
+
+      let obj = { WMS: [], Tileset: [], TMS: [], Mpt: [], DEM: [] };
+      for (let i = 0, c = nodes.length; i < c; i++) {
+        let node = nodes[i];
+        switch (node.serveType) {
+          case "WMS":
+            obj.WMS.push(node);
+            break;
+          case "3DML":
+          case "Tileset":
+            obj.Tileset.push(node);
+            break;
+          case "TMS":
+            obj.TMS.push(node);
+            break;
+          case "Mpt":
+            obj.Mpt.push(node);
+            break;
+          case "DEM":
+            obj.DEM.push(node);
+            break;
         }
       }
+
+      if (obj.WMS.length) this.setChangeWMS(obj.WMS, checked);
+      if (obj.Tileset.length) this.setChangeTileset(obj.Tileset, checked);
+      if (obj.TMS.length) this.setChangeTMS(obj.TMS, checked);
+      if (obj.Mpt.length) this.setChangeMpt(obj.Mpt, checked);
+      if (obj.DEM.length) this.setChangeDEM(obj.DEM, checked);
     },
-    setChangeWMS (result, checked) {
+    // 鑾峰彇瀛愯妭鐐�
+    getNodes (data, arr) {
+      if (data.children) {
+        for (let i = 0, c = data.children.length; i < c; i++) {
+          var node = data.children[i];
+          if (node.children) {
+            this.getNodes(node, arr)
+          } else {
+            arr.push(node);
+          }
+        }
+      } else {
+        arr.push(data);
+      }
+    },
+    // 鍒囨崲WMS鏈嶅姟
+    setChangeWMS (layers, checked) {
       var value = this.$refs.tree.getCheckedNodes();
       this.$bus.$emit("showMenuLayer", value);
     },
-    setChangeWFS (result, checked) {
-      var value = this.$refs.tree.getCheckedNodes();
-      var std = [];
-      for (var i in value) {
-        std.push(value[i].id)
-      }
-      for (var i in result) {
-        var tile = result[i]
-        if (std.indexOf(tile.id) != -1) {
-          this.setAddLayers(tile)
-        } else {
-          for (var i in window.Viewer.dataSources._dataSources) {
-            if (window.Viewer.dataSources._dataSources[i].name == tile.cnName) {
-              window.Viewer.dataSources.remove(window.Viewer.dataSources._dataSources[i]);
-            }
-          }
+    // 鍒囨崲Tileset
+    setChangeTileset (layers, checked) {
+      let ids = this.getCheckNodesIds();
+      for (var i in layers) {
+        var layer = layers[i];
+        if (ids.indexOf(layer.id) != -1) {
+          this.setAddLayers(layer);
+          continue;
+        }
 
-          var layers_ol = window.map.getAllLayers();
-          for (var i in layers_ol) {
-            var layerOl = layers_ol[i];
-            if (layerOl.values_.name == tile.cnName) {
-              window.map.removeLayer(layerOl)
-            }
+        for (var j in Viewer.scene.primitives._primitives) {
+          if (Viewer.scene.primitives._primitives[j].id == layer.cnName) {
+            Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]);
+            break;
+          }
+        }
+
+        var list = this.$store.state.setAlphaList;
+        for (var i = 0; i < list.length; i++) {
+          if (list[i].name == layer.cnName) {
+            list.splice(i, 1);
           }
         }
       }
     },
-    setChangeTileset (result, checked) {
-      var value = this.$refs.tree.getCheckedNodes();
-      var std = [];
-      for (var i in value) {
-        std.push(value[i].id)
+    // 鑾峰彇鑺傜偣ID
+    getCheckNodesIds () {
+      var nodes = this.$refs.tree.getCheckedNodes();
+
+      var ids = [];
+      for (var i in nodes) {
+        ids.push(nodes[i].id);
       }
-      for (var i in result) {
-        var tile = result[i]
-        if (std.indexOf(tile.id) != -1) {
-          this.setAddLayers(tile)
-        } else {
-          for (var j in Viewer.scene.primitives._primitives) {
-            if (Viewer.scene.primitives._primitives[j].id == tile.cnName) {
-              Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j])
-            }
-          }
-          var list = this.$store.state.setAlphaList;
-          for (var i = 0; i < list.length; i++) {
-            if (list[i].name == tile.cnName) {
-              list.splice(i, 1)
-            }
+
+      return ids;
+    },
+    // 鍒囨崲TMS
+    setChangeTMS (layers, checked) {
+      let ids = this.getCheckNodesIds();
+      for (var i in layers) {
+        var layer = layers[i];
+        if (ids.indexOf(layer.id) != -1) {
+          this.setAddLayers(layer);
+          continue;
+        }
+
+        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
+          if (window.Viewer.imageryLayers._layers[i].name == layer.cnName) {
+            window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]);
+            break;
           }
         }
       }
     },
+    // 鍒囨崲Mpt
     setChangeMpt (result, checked) {
       var value = this.$refs.tree.getCheckedNodes();
       var std = [];
@@ -430,42 +435,9 @@
         }
       }
     },
-    setChangeTMS (result, checked) {
-      var value = this.$refs.tree.getCheckedNodes();
-      var std = [];
-      for (var i in value) {
-        std.push(value[i].id)
-      }
-      for (var i in result) {
-        var tile = result[i]
-        if (std.indexOf(tile.id) != -1) {
-          this.setAddLayers(tile)
-
-        } else {
-          for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
-            var val_id = window.Viewer.imageryLayers._layers[i].name;
-            if (val_id == tile.cnName) {
-              window.Viewer.imageryLayers.remove(
-                window.Viewer.imageryLayers._layers[i]
-              );
-            }
-          }
-        }
-      }
-    },
-    getchilds (source) {
-      if (source.children) {
-        var child = source.children
-        for (var i in child) {
-          if (child[i].children) {
-            this.getchilds(child[i])
-          } else {
-            this.childOption.push(child[i])
-          }
-        }
-      } else {
-        this.childOption.push(source)
-      }
+    // 鍒囨崲DEM
+    setChangeDEM () {
+      //
     },
     async setAddLayers (res) {
       if (res.serveType == "WMS") {

--
Gitblit v1.9.3