From 1ce1b525e7470ebaaeb0d5cd1e59bd905c1a7114 Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期二, 05 三月 2024 18:07:32 +0800
Subject: [PATCH] 代码更新

---
 src/views/Tools/LayerTree.vue |  233 ++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 147 insertions(+), 86 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index 12f271b..b276a57 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -20,76 +20,38 @@
         </el-select> -->
       </el-form-item>
       <el-form-item>
-        <el-input
-          placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
-          v-model="filterText"
-          class="search"
-        >
+        <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" v-model="filterText" class="search">
         </el-input>
       </el-form-item>
     </el-form>
-    <el-tree
-      ref="tree"
-      :data="treeData"
-      node-key="id"
-      show-checkbox
-      :props="defaultProps"
-      @node-click="handleLeftclick"
-      @node-contextmenu="rightClick"
-      @check="handleCheckChange"
-      :default-checked-keys="handleTreeCheck"
-      :expand-on-click-node="false"
-      :filter-node-method="filterNode"
-    >
-      <span
-        class="slot-t-node"
-        slot-scope="{ node, data }"
-      >
+    <el-tree ref="tree" :data="treeData" node-key="id" show-checkbox :props="defaultProps" @node-click="handleLeftclick"
+      @node-contextmenu="rightClick" @check="handleCheckChange" :default-checked-keys="handleTreeCheck"
+      :expand-on-click-node="false" :filter-node-method="filterNode">
+      <span class="slot-t-node" slot-scope="{ node, data }">
         <span v-show="!data.isEdit">
           <span :class="[data.id >= 99 ? 'slot-t-node--label' : '']">{{
-                              node.label
-                            }}</span>
+            node.label
+          }}</span>
         </span>
         <span v-show="data.isEdit">
-          <el-input
-            class="slot-t-input"
-            size="mini"
-            autofocus
-            v-model="data.label"
-            :ref="'slotTreeInput' + data.id"
-            @blur.stop="nodeBlur(node, data)"
-            @keydown.native.enter="nodeBlur(node, data)"
-          ></el-input>
+          <el-input class="slot-t-input" size="mini" autofocus v-model="data.label" :ref="'slotTreeInput' + data.id"
+            @blur.stop="nodeBlur(node, data)" @keydown.native.enter="nodeBlur(node, data)"></el-input>
         </span>
       </span>
     </el-tree>
-    <el-card
-      class="box-card"
-      ref="card"
-      :style="{ ...rightClickMenuStyle }"
-      v-show="menuVisible"
-    >
-      <div
-        class="edit"
-        @click="showLayerAttribute()"
-        v-if="showProp && !shwoHistogram"
-      >
+    <el-card class="box-card" ref="card" :style="{ ...rightClickMenuStyle }" v-show="menuVisible">
+      <div class="edit" @click="showLayerAttribute()">
         <i class="el-icon-tickets"></i>&nbsp;&nbsp;灞炴��
       </div>
-      <div
-        class="edit"
-        @click="positioning()"
-        v-if="showLocal"
-      >
+      <div class="edit" @click="showLayerCount()">
+        <i class="el-icon-tickets"></i>&nbsp;&nbsp;缁熻
+      </div>
+      <!-- <div class="edit" @click="positioning()" v-if="showLocal">
         <i class="el-icon-tickets"></i>&nbsp;&nbsp;瀹氫綅
       </div>
-      <div
-        class="edit"
-        @click="pellucidity()"
-        v-if="showOpacity"
-      >
+      <div class="edit" @click="pellucidity()" v-if="showOpacity">
         <i class="el-icon-tickets"></i>&nbsp;&nbsp;閫忔槑搴�
-      </div>
+      </div> -->
       <!-- <div
         class="edit"
         @click="histogram()"
@@ -104,11 +66,7 @@
       >
         <i class="el-icon-download"></i>&nbsp;&nbsp;鐡︾墖涓嬭浇
       </div> -->
-      <div
-        class="edit"
-        v-show="shwoAnnex"
-        @click="annexDownload()"
-      >
+      <div class="edit" v-show="shwoAnnex" @click="annexDownload()">
         <i class="el-icon-tickets"></i>&nbsp;&nbsp;闄勪欢
       </div>
     </el-card>
@@ -116,11 +74,16 @@
 </template>
 
 <script>
+import pwTool from './js/pwTool.js'
 import GeoJSON from "ol/format/GeoJSON.js";
 import queryinfo from "./queryinfo.vue";
 import { Vector as VectorSource } from "ol/source";
 import { Vector as VectorLayer } from "ol/layer";
-import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll } from "../../api/api.js";
+import { perms_selectLayers, comprehensive_selectPubById, project_selectDirAll, zhangzitou_selectAll } from "../../api/api.js";
+import { conditions } from '../Archive/Archive';
+import { init } from "echarts";
+import { data_type } from "../datamanage/js/layerManage";
+
 
 export default {
   name: "tree",
@@ -274,8 +237,9 @@
     },
     // 榧犳爣鍙冲嚮浜嬩欢
     rightClick(event, object, node, element) {
-      if (object.type == 1 || node.data.children != null) return;
 
+      if (object.type == 1 || node.data.children != null) return;
+      if (object.serveType != 'GEOJSON') return
       this.currentNode = node;
       this.currentData = object;
       this.$store.state.propertiesName = object;
@@ -285,19 +249,33 @@
       this.showLocal = ["Tileset", "3DML", "Mpt", "TMS", "DOM", "DEM"].indexOf(object.serveType) > -1; // 瀹氫綅
       this.showOpacity = ["Tileset", "3DML"].indexOf(object.serveType) > -1; // 涓嶉�忔槑搴�
       this.shwoTileDown = ["TMS", "DOM"].indexOf(object.serveType) > -1 && object.pubid; // 鐡︾墖涓嬭浇
-      this.menuVisible = this.showProp || this.shwoHistogram || this.showLocal || this.showOpacity || this.shwoTileDown; // 鑿滃崟
+      // this.menuVisible = this.showProp || this.shwoHistogram || this.showLocal || this.showOpacity || this.shwoTileDown; // 鑿滃崟
+      this.menuVisible = true; // 鑿滃崟
       this.shwoAnnex = ['DEM', 'TMS'].indexOf(object.serveType) > -1;//闄勪欢
       this.$refs.card.$el.style.left = event.pageX + 20 + "px";
       this.$refs.card.$el.style.top = event.pageY + "px";
     },
     // 灞炴�ф樉绀�
     showLayerAttribute(data) {
+      if (!this.currentData && this.currentData.serveType != 'GEOJSON') {
+        return
+      }
+      this.menuVisible = false; // 鑿滃崟
       this.rmListener();
       this.currentData = data ? data : this.currentData;
-      let layer = this.currentData.enName.replaceAll("_", "");
-      this.$store.state.mapSpaceQueryLayer = layer;
+      // let layer = this.currentData.enName.replaceAll("_", "");
+      // this.$store.state.mapSpaceQueryLayer = layer;
+
       this.$store.state.showPopBoxFlag = true;
       this.$store.state.mapPopBoxFlag = "2";
+    },
+
+    showLayerCount(data) {
+      if (!this.currentData && this.currentData.serveType != 'GEOJSON') {
+        return
+      }
+      this.menuVisible = false; // 鑿滃崟
+      this.$store.state.showEchartCount = true;
     },
     // 瀹氫綅
     async positioning() {
@@ -399,11 +377,12 @@
     },
     // 鍥惧眰閫変腑浜嬩欢
     handleCheckChange(data, checked) {
+
       if (this.isBusy) return;
 
       let nodes = [];
       this.getNodes(data, nodes);
-      let obj = { WMS: [], Tileset: [], TMS: [], Mpt: [], DEM: [] };
+      let obj = { WMS: [], Tileset: [], TMS: [], Mpt: [], DEM: [], WFS: [], GEO: [] };
 
       for (let i = 0, c = nodes.length; i < c; i++) {
         let node = nodes[i];
@@ -424,6 +403,9 @@
           case "DEM":
             obj.DEM.push(node);
             break;
+          case 'GEOJSON':
+            obj.WFS.push(node);
+            break;
         }
       }
 
@@ -432,6 +414,7 @@
       if (obj.Mpt.length) this.setChangeMpt(obj.Mpt, checked);
       if (obj.Tileset.length) this.setChangeTileset(obj.Tileset, checked);
       if (obj.WMS.length) this.setChangeWMS(obj.WMS, checked);
+      if (obj.WFS.length) this.setChangeWFS(obj.WFS, checked);
     },
     // 鑾峰彇瀛愯妭鐐�
     getNodes(data, arr) {
@@ -490,8 +473,68 @@
 
       if (arr.length) this.addTilesetLayers(arr);
     },
+
+    setChangeWFS(layers, checked) {
+
+      let ids = this.getCheckNodesIds(), arr = [];
+
+      for (let k in layers) {
+        let layer = layers[k];
+        if (ids.indexOf(layer.id) > -1) {
+          arr.push(layer);
+          continue;
+        }
+        this.getGeoJson(2)
+      }
+
+      if (arr.length) {
+        this.addWFSLayers(arr);
+      }
+
+    },
+    addWFSLayers(res) {
+
+
+      this.getGeoJson(1)
+      // console.log(feature)
+      // if(feature.length>0){
+      //   pwTool.initGlb(feature, type);
+      // }
+
+      // Cesium.GeoJsonDataSource.load(feature).then((dataSource) => {
+      //  console.log(3123,dataSource)
+      // })
+    },
+    async getGeoJson(type) {
+      const data = await zhangzitou_selectAll({
+        limit: 1000000,
+        page: 1
+      });
+      if (data.code == 200) {
+        if (type == 1) {
+          pwTool.initGlb(data.result);
+        } else if (type == 2) {
+          pwTool.removeGlb(data.result.pois);
+        }
+
+      }
+      // var url = geoserverWFS_1 + res.url + geoserverWFS_2 + 'type=%27' + type + '%27';
+      // var data = $.parseJSON($.ajax({
+      //   url: url,//json鏂囦欢浣嶇疆锛屾枃浠跺悕
+      //   dataType: "json", //杩斿洖鏁版嵁鏍煎紡涓簀son
+      //   async: false
+      // }).responseText);
+      // if (data.features.length <= 0) return;
+      // return {
+      //   "type": "FeatureCollection",
+      //   "name": "wangge",
+      //   "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
+      //   "features": data.features,
+      // }
+    },
     // 娣诲姞Tileset鍥惧眰
     addTilesetLayers(layers) {
+
       for (let i in layers) {
         let res = layers[i];
         let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url;
@@ -667,13 +710,31 @@
     },
     // 璁剧疆Tileset鍙傛暟
     async setTilesetArgs(tileset, res) {
+
       if (res.serveType == '3DML' || !res.pubid) {
-        this.setTilesetHeigth(tileset, parseFloat(res.elev));
+        if (res.elev > 0) {
+          this.setTilesetHeigth(tileset, parseFloat(res.elev));
+        } else {
+          console.log("456", res.bak)
+          if (res.bak) {
+            var val = JSON.parse(res.bak)
+            if (val.height) {
+              this.setTilesetHeigth(tileset, parseFloat(val.height));
+            }
+          }
+        }
+
         return;
       }
 
       const data = await comprehensive_selectPubById({ id: res.pubid })
-      if (data.code == 200 && data.result.json) this.setTilesetCoord(tileset, data.result.json);
+
+      if (data.code == 200 && data.result.json) {
+
+        this.setTilesetCoord(tileset, data.result.json);
+      } else {
+
+      }
     },
     // 璁剧疆Tileset楂樺害
     setTilesetHeigth(tileset, height) {
@@ -876,7 +937,7 @@
       }
     },
     // 娣诲姞WFS鍥惧眰 *
-    addWFSLayers(res) {
+    addWFSLayers_old(res) {
       let url =
         res.resource +
         "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
@@ -917,7 +978,7 @@
 </script>
 <style scoped lang="less">
 /* 鐐瑰嚮鑺傜偣鏃剁殑閫変腑棰滆壊 */
-.tree-container /deep/.el-tree-node.is-current > .el-tree-node__content {
+.tree-container /deep/.el-tree-node.is-current>.el-tree-node__content {
   color: #409eff !important;
 }
 
@@ -949,19 +1010,19 @@
   padding-left: 16px;
 }
 
-.tree-container /deep/ .el-tree > .el-tree-node:before {
+.tree-container /deep/ .el-tree>.el-tree-node:before {
   border-left: none;
 }
 
-.tree-container /deep/ .el-tree > .el-tree-node:after {
+.tree-container /deep/ .el-tree>.el-tree-node:after {
   border-top: none;
 }
 
-.tree-container /deep/ .el-tree > .el-tree-node:before {
+.tree-container /deep/ .el-tree>.el-tree-node:before {
   border-left: none;
 }
 
-.tree-container /deep/ .el-tree > .el-tree-node:after {
+.tree-container /deep/ .el-tree>.el-tree-node:after {
   border-top: none;
 }
 
@@ -1024,11 +1085,7 @@
   z-index: 8;
 }
 
-.tree-container
-  /deep/
-  .el-tree-node
-  .el-tree-node__children
-  .el-tree-node__content::before {
+.tree-container /deep/ .el-tree-node .el-tree-node__children .el-tree-node__content::before {
   border-left: 0px dashed #ccc;
   height: 100%;
   top: 0;
@@ -1048,7 +1105,7 @@
 }
 
 .tree-container /deep/ .el-tree-node {
-  .is-leaf + .el-checkbox .el-checkbox__inner {
+  .is-leaf+.el-checkbox .el-checkbox__inner {
     display: inline-block;
   }
 
@@ -1057,11 +1114,7 @@
   }
 }
 
-.tree-container
-  /deep/
-  .el-tree-node
-  .el-tree-node__children
-  .el-tree-node__content::after {
+.tree-container /deep/ .el-tree-node .el-tree-node__children .el-tree-node__content::after {
   border-top: 0px dashed #ccc;
 }
 
@@ -1079,7 +1132,7 @@
 /deep/.el-card__body {
   padding: 10px !important;
 
-  > div {
+  >div {
     padding-bottom: 10px;
     border-bottom: 1px solid #ccc;
 
@@ -1142,4 +1195,12 @@
   border-radius: 4px;
   box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 }
+
+/deep/.el-input__inner {
+  border: 1px solid #DCDFE6 !important
+}
+
+/deep/.el-form-item__content {
+  line-height: 0vw !important;
+}
 </style>

--
Gitblit v1.9.3