From beb1187ff71753ed7af06a53d94ac4f8ac5cd2f7 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 22 五月 2023 10:50:55 +0800
Subject: [PATCH] 1

---
 src/views/Tools/LayerTree.vue |  409 +++++++++++++---------------------------------------------
 1 files changed, 93 insertions(+), 316 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index b1d5d9d..99ec7cd 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -47,8 +47,8 @@
                     autofocus
                     v-model="data.label"
                     :ref="'slotTreeInput' + data.id"
-                    @blur.stop="NodeBlur(node, data)"
-                    @keydown.native.enter="NodeBlur(node, data)"></el-input>
+                    @blur.stop="nodeBlur(node, data)"
+                    @keydown.native.enter="nodeBlur(node, data)"></el-input>
         </span>
       </span>
     </el-tree>
@@ -78,47 +78,6 @@
         <i class="el-icon-tickets"></i>&nbsp;&nbsp;閽诲瓟鏌辩姸鍥�
       </div>
     </el-card>
-    <el-dialog :title="appendNodetitle"
-               :visible.sync="dialogVisible"
-               width="30%"
-               top="20vh"
-               :modal="false"
-               :before-close="handleClose">
-      <el-form ref="form"
-               :model="addFormServer"
-               label-width="100px">
-        <el-form-item label="鏈嶅姟绫诲瀷">
-          <el-select style="width: 100%"
-                     :popper-append-to-body="false"
-                     v-model="addFormServer.serveType"
-                     placeholder="璇烽�夋嫨">
-            <el-option v-for="item in options"
-                       :key="item.value"
-                       :label="item.label"
-                       :value="item.value">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鍥惧眰鍚嶇О">
-          <el-input v-model="addFormServer.cnName"></el-input>
-        </el-form-item>
-        <el-form-item label="鏈嶅姟鍚嶇О">
-          <el-input v-model="addFormServer.url"></el-input>
-        </el-form-item>
-
-        <el-form-item label="鏈嶅姟鍦板潃">
-          <el-input v-model="addFormServer.resource"></el-input>
-        </el-form-item>
-        <el-form-item label="閫忔槑搴�">
-          <el-slider v-model="addFormServer.opacity"></el-slider>
-        </el-form-item>
-      </el-form>
-      <span slot="footer"
-            class="dialog-footer">
-        <el-button type="primary"
-                   @click="setAddServer">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
   </div>
 </template>
 
@@ -130,6 +89,7 @@
 import { Vector as VectorSource } from "ol/source";
 import { Vector as VectorLayer } from "ol/layer";
 import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll, project_selectByDirid, } from "../../api/api.js";
+
 export default {
   name: "tree",
   components: { queryinfo },
@@ -166,15 +126,13 @@
         children: "children",
         label: "cnName",
       },
-      options: [
-        {
-          value: "WMS",
-          label: "WMS",
-        },
-        {
-          value: "WFS",
-          label: "WFS",
-        },
+      options: [{
+        value: "WMS",
+        label: "WMS",
+      }, {
+        value: "WFS",
+        label: "WFS",
+      },
       ],
       childOption: [],
       mptLayer: [],
@@ -182,7 +140,84 @@
       proValue: null,
     };
   },
+  watch: {
+    filterText (val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  mounted () {
+    this.getMenus()
+    this.$bus.$on("treeDataCopy", (res) => {
+      this.$store.state.treeData = this.treeData;
+      this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys();
+    });
+    if (this.$store.state.showAllLayers) {
+      this.layersStart();
+      this.$store.state.showAllLayers = false;
+    } else {
+      this.treeData = this.$store.state.treeData;
+      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
+    }
+  },
   methods: {
+    // 鑾峰彇鑿滃崟
+    async getMenus () {
+      let data = await project_selectDirAll();
+      if (data && data.code == 200) this.optionts = data.result;
+    },
+    // 鍒濆鍖栧浘灞�
+    async layersStart () {
+      let data = await perms_selectLayers();
+      if (data.code != 200) {
+        return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触");
+      }
+
+      let checkKey = [], checkedLayers = [];
+      var layers = data.result.filter((lyr) => {
+        if (lyr.url && lyr.type == 2 && lyr.isShow == 1) {
+          checkKey.push(lyr.id);
+          if (lyr.serveType == "WMS") checkedLayers.push(lyr);
+        }
+        return lyr;
+      });
+      // 瀛樺偍閫変腑鍥惧眰
+      this.treeData = this.setTreeData(layers);
+      this.$refs.tree.setCheckedKeys(checkKey);
+      sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers));
+    },
+    // 璁剧疆鏍戞暟鎹�
+    setTreeData (source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+        branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛岄偅涔� a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛�
+        // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    // 鑺傜偣鑾峰緱鐒︾偣浜嬩欢
+    nodeBlur (node, data) {
+      if (!data.label.length) return this.$message.error("鑿滃崟鍚嶄笉鍙负绌猴紒");
+      if (data.isEdit) this.$set(data, "isEdit", false);
+      this.$nextTick(() => {
+        this.$refs["slotTreeInput" + data.id].$refs.input.focus();
+      });
+    },
+    // 榧犳爣宸﹀嚮浜嬩欢
+    handleLeftclick (data, node) {
+      this.rmListener();
+    },
+    // 鍙栨秷榧犳爣鐩戝惉浜嬩欢
+    rmListener () {
+      this.menuVisible = false;
+      //  瑕佸強鏃跺叧鎺夌洃鍚紝涓嶅叧鎺夌殑鏄竴涓潙锛屼笉淇′綘璇曡瘯锛岃櫧鐒跺墠鍙版樉绀虹殑鏃跺�欐病鏈夊暐姣涚梾锛屽姞涓�涓猘lert浣犲氨鐭ラ亾浜�
+      document.removeEventListener("click", this.rmListener);
+    },
+
+
+
     //杞瓟鏌辩姸鍥�
     async histogram () {
       this.menuVisible = false
@@ -190,34 +225,6 @@
       this.$store.state.mapSpaceQueryLayer = layer;
       this.$store.state.mapPopBoxFlag = "2";
       this.$store.state.showPopBoxFlag = true;
-    },
-    modelAttach () {
-      this.menuVisible = false;
-      this.$store.state.attachinfo = this.currentData;
-      this.$store.state.attachModel = true;
-    },
-    NodeBlur (Node, data) {
-      if (data.label.length === 0) {
-        this.$message.error("鑿滃崟鍚嶄笉鍙负绌猴紒");
-        return false;
-      } else {
-        if (data.isEdit) {
-          this.$set(data, "isEdit", false);
-        }
-        this.$nextTick(() => {
-          this.$refs["slotTreeInput" + data.id].$refs.input.focus();
-        });
-      }
-    },
-    allowDrop (draggingNode, dropNode, type) {
-      if (dropNode.data.label === "浜岀骇 3-1") {
-        return type !== "inner";
-      } else {
-        return true;
-      }
-    },
-    allowDrag (draggingNode) {
-      return draggingNode.data.label.indexOf("涓夌骇 3-2-2") === -1;
     },
     // 榧犳爣鍙冲嚮浜嬩欢
     rightClick (event, object, Node, element) {
@@ -254,112 +261,9 @@
       this.$refs.card.$el.style.left = event.pageX + 20 + "px";
       this.$refs.card.$el.style.top = event.pageY + "px";
     },
-    // 榧犳爣宸﹀嚮浜嬩欢
-    handleLeftclick (data, node) {
-      this.foo();
-      if (node.checked == true) {
-        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
-          var val_id =
-            window.Viewer.imageryLayers._layers[i].imageryProvider.name;
-          if (val_id == data.label) {
-            const img_layer = window.Viewer.imageryLayers._layers[i];
-          }
-        }
-      }
-    },
-    //  鍙栨秷榧犳爣鐩戝惉浜嬩欢 鑿滃崟鏍�
-    foo () {
-      this.menuVisible = false;
-      //  瑕佸強鏃跺叧鎺夌洃鍚紝涓嶅叧鎺夌殑鏄竴涓潙锛屼笉淇′綘璇曡瘯锛岃櫧鐒跺墠鍙版樉绀虹殑鏃跺�欐病鏈夊暐姣涚梾锛屽姞涓�涓猘lert浣犲氨鐭ラ亾浜�
-      document.removeEventListener("click", this.foo);
-    },
-    // 澧炲姞鍚岀骇鑺傜偣浜嬩欢
-    addSameLevelNode () {
-      this.menuVisible = false
-      this.foo();
-      if (this.currentNode.level == 2) {
-        this.appendNodetitle = this.currentData.label;
-        this.dialogVisible = true;
-      } else {
-        let id = Math.ceil(Math.random() * 100);
-        var data = { id: id, label: "鏂板鑺傜偣" };
-        this.$refs.tree.append(data, this.currentNode.parent);
-      }
-    },
-    // 澧炲姞瀛愮骇鑺傜偣浜嬩欢
-    addChildNode () {
-      this.foo();
-      this.menuVisible = false
-      // if (this.currentNode.level >= 2) {
-      //   this.$message.error("鏈�澶氬彧鏀袱绾э紒");
-      //   return false;
-      // }
-      this.appendNodetitle = this.currentData.label;
-      this.dialogVisible = true;
-    },
-    handleClose () {
-      this.dialogVisible = false;
-      this.addFormServer = {
-        opacity: 100,
-        serveType: "WMS",
-        type: 2,
-      };
-    },
-    setAddServer () {
-      var val = this.currentNode;
-      if (this.currentNode.level == 2) {
-        val = this.currentNode.parent;
-      }
-      var data = this.addFormServer;
-      data.id = Math.ceil(Math.random() * 100);
-      this.$refs.tree.append(data, val);
-      this.handleClose();
-    },
-    // 鍒犻櫎鑺傜偣
-    deleteNode () {
-      this.foo();
-      this.menuVisible = false
-      var label = this.currentNode.data.cnName;
-      if (this.currentNode.data.serveType == "WMS") {
-        var value = this.$refs.tree.getCheckedNodes();
-        this.$bus.$emit("showMenuLayer", value);
-      } else if (this.currentNode.data.serveType == "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]
-            );
-          }
-        }
-      } else if (this.currentNode.data.serveType == "Tileset") {
-        for (var i in Viewer.scene.primitives._primitives) {
-          // Viewer.scene.primitives._primitives[i].show = checked;
-          if (Viewer.scene.primitives._primitives[i].id == label) {
-            Viewer.scene.primitives.remove(
-              Viewer.scene.primitives._primitives[i]
-            );
-          }
-        }
-        var list = this.$store.state.setAlphaList;
-        for (var i = 0; i < list.length; i++) {
-          if (list[i].name == label) {
-            list.splice(i, 1)
-          }
-        }
-
-      }
-      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);
-    },
-    //灞炴�ф樉绀�
+    // 灞炴�ф樉绀�
     showLayerAttribute (data) {
-      this.foo();
+      this.rmListener();
       this.menuVisible = false
       this.currentData = data ? data : this.currentData;
       var layer = this.currentData.enName.replaceAll("_", "");
@@ -367,9 +271,9 @@
       this.$store.state.showPopBoxFlag = true;
       this.$store.state.mapPopBoxFlag = "2";
     },
-    //妯″瀷璁剧疆閫忔槑搴�
+    // 妯″瀷璁剧疆閫忔槑搴�
     pellucidity () {
-      this.foo();
+      this.rmListener();
       this.menuVisible = false
       var tile = this.currentData
       for (var j in Viewer.scene.primitives._primitives) {
@@ -380,7 +284,7 @@
         }
       }
     },
-    //妯″瀷瀹氫綅
+    // 妯″瀷瀹氫綅
     positioning () {
       this.menuVisible = false
       for (var i in Viewer.scene.primitives._primitives) {
@@ -393,7 +297,7 @@
     },
     // 缂栬緫鑺傜偣
     editNode (data) {
-      this.foo();
+      this.rmListener();
       this.menuVisible = false
       this.currentData = data ? data : this.currentData;
       if (!this.currentData.isEdit) {
@@ -864,106 +768,6 @@
       tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
       // Viewer.flyTo(tileset);
     },
-    setTreeData (source) {
-      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
-      return cloneData.filter((father) => {
-        // 寰幆鎵�鏈夐」
-        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
-        branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
-        // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛�
-        // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋�
-        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
-      });
-    },
-    async layersStart () {
-      const data = await perms_selectLayers();
-      if (data.code != 200) {
-        return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触");
-      }
-      var std = data.result;
-      var that = this;
-      var checkKey = [];
-      let checkedLayers = [];
-      var val = std.filter((str) => {
-        if (str.type == 1) {
-          return str;
-        }
-        if (str.url != null && str.type == 2) {
-          if (str.isShow == 1) {
-            checkKey.push(str.id);
-            // that.setAddLayers(str);
-            if (str.serveType == "WMS" && str.url) {
-              checkedLayers.push(str);
-            }
-          }
-          return str;
-        }
-      });
-      //瀛樺偍閫変腑鍥惧眰
-      sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers));
-      var res = this.setTreeData(val);
-      this.treeData = res;
-      this.$refs.tree.setCheckedKeys(checkKey);
-    },
-    async treelayersStart () {
-      const data = await perms_selectLayers();
-      if (data.code != 200) {
-        return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触");
-      }
-      var std = [];
-      var layer_list = [];
-      var layer_groups = [];
-      for (var i in data.result) {
-        if (data.result[i].type == 1) {
-          layer_groups.push({
-            id: data.result[i].id,
-            label: data.result[i].cnName,
-            type: data.result[i].type,
-            isEdit: false,
-            children: [],
-          });
-        } else if (data.result[i].type == 2) {
-          if (data.result[i].url != null) {
-            var layer_entity = {
-              id: data.result[i].id,
-              pid: data.result[i].pid,
-              label: data.result[i].cnName,
-              resource: data.result[i].url,
-              type: data.result[i].type,
-              isEdit: false,
-            };
-            layer_list.push(layer_entity);
-          }
-        }
-      }
-      for (var i in layer_list) {
-        for (var j in layer_groups) {
-          if (layer_list[i].pid === layer_groups[j].id) {
-            layer_groups[j].children.push(layer_list[i]);
-          }
-        }
-      }
-      layer_groups = layer_groups.filter((res) => {
-        if (res.children && res.children.length != 0) {
-          return res;
-        }
-      });
-      this.treeData = layer_groups;
-
-      for (var i in data.result) {
-        if (data.result[i].type == 2 && data.result[i].url != null) {
-          for (var j = 0; j < window.Viewer.imageryLayers._layers.length; j++) {
-            var val_id = window.Viewer.imageryLayers._layers[j];
-            if (val_id.show == true) {
-              if (val_id.imageryProvider.name == data.result[i].cnName) {
-                std.push(data.result[i].id);
-              }
-            }
-          }
-        }
-      }
-      this.$refs.tree.setCheckedKeys(std);
-    },
     // 鏌ヨ
     filterNode (value, data) {
 
@@ -1155,33 +959,6 @@
         this.$bus.$emit("showMenuLayer", value);
       }
     },
-    async getMenuProject () {
-      const data = await project_selectDirAll();
-      if (data.code != 200) {
-        return
-      }
-      this.optionts = data.result;
-    },
-  },
-  watch: {
-    filterText (val) {
-      this.$refs.tree.filter(val);
-    },
-  },
-  mounted () {
-    this.getMenuProject()
-    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.treeData = this.$store.state.treeData;
-      this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
-    }
   },
 };
 </script>

--
Gitblit v1.9.3