From 36fbd1e5a40e319e6ac5f43d11c99ba4b66e93a3 Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期三, 29 十一月 2023 16:50:16 +0800
Subject: [PATCH] 坡度分析下载修改

---
 src/views/layer/layerManage.vue |  265 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 160 insertions(+), 105 deletions(-)

diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue
index e8cef03..6b86e42 100644
--- a/src/views/layer/layerManage.vue
+++ b/src/views/layer/layerManage.vue
@@ -12,20 +12,9 @@
       </div>
     </div>
     <div class="layerContent">
-      <el-tree
-        node-key="id"
-        :props="props"
-        :highlight-current="false"
-        :current-node-key="selectedNodeId"
-        :data="treeData"
-        :default-expanded-keys="defaultExpanded"
-        :expand-on-click-node="false"
-        show-checkbox
-        @check="handleCheckChange"
-        ref="estreeRef"
-        v-if="treeData.length"
-        :default-checked-keys="DefaultId"
-      >
+      <el-tree node-key="id" :props="props" :highlight-current="false" :current-node-key="selectedNodeId" :data="treeData"
+        :default-expanded-keys="defaultExpanded" :expand-on-click-node="false" show-checkbox @check="handleCheckChange"
+        ref="estreeRef" v-if="treeData.length" :default-checked-keys="DefaultId">
         <template #default="{ node, data }">
           <span class="custom-tree-node">
             <span class="label">{{ node.label }}</span>
@@ -44,31 +33,21 @@
                 </span>
                 <template #dropdown>
                   <el-dropdown-menu>
-                    <el-dropdown-item
-                      v-if="data.type != 6 && data.isLayer == 1"
-                      @click.native="clickdropdown(1, data)"
-                    >璇︾粏</el-dropdown-item>
+                    <el-dropdown-item v-if="data.type != 6 && data.isLayer == 1"
+                      @click.native="clickdropdown(1, data)">璇︾粏</el-dropdown-item>
                     <el-dropdown-item v-if="data.type == 6 && data.isLayer == 1">鍒犻櫎</el-dropdown-item>
-                    <el-dropdown-item
-                      v-if="data.type == 3 && data.isLayer == 1"
-                      @click.native="clickdropdown(2, data)"
-                    >灞炴��</el-dropdown-item>
-                    <el-dropdown-item
-                      v-if="data.isLayer == 0"
-                      @click.native="clickdropdown(3, data)"
-                    >閫忔槑搴�</el-dropdown-item>
-                    <el-dropdown-item
-                      v-if="data.shpType == 'temporaryLayer'"
-                      @click.native="clickdTemporary(1, data)"
-                    >缂栬緫</el-dropdown-item>
-                    <el-dropdown-item
-                      v-if="data.shpType == 'temporaryLayer'"
-                      @click.native="clickdTemporary(2, data)"
-                    >鍒犻櫎</el-dropdown-item>
-                    <el-dropdown-item
-                      v-if="data.shpType == 'temporaryLayer'"
-                      @click.native="clickdTemporary(3, data)"
-                    >瀹氫綅</el-dropdown-item>
+                    <el-dropdown-item v-if="data.type == 3 && data.isLayer == 1"
+                      @click.native="clickdropdown(2, data)">灞炴��</el-dropdown-item>
+                    <el-dropdown-item v-if="data.isLayer == 0"
+                      @click.native="clickdropdown(3, data)">閫忔槑搴�</el-dropdown-item>
+                    <el-dropdown-item v-if="data.shpType == 'temporaryLayer'"
+                      @click.native="clickdTemporary(1, data)">缂栬緫</el-dropdown-item>
+                    <el-dropdown-item v-if="data.shpType == 'temporaryLayer'"
+                      @click.native="clickdTemporary(2, data)">鍒犻櫎</el-dropdown-item>
+                    <el-dropdown-item v-if="data.shpType == 'temporaryLayer'"
+                      @click.native="clickdTemporary(3, data)">瀹氫綅</el-dropdown-item>
+                    <el-dropdown-item v-if="data.shpType == 'temporaryLayer'" @click.native="clickdTemporary(4, data)">涓嬭浇
+                      [ Shp ]</el-dropdown-item>
                   </el-dropdown-menu>
                 </template>
               </el-dropdown>
@@ -78,18 +57,9 @@
       </el-tree>
     </div>
   </div>
-  <layer-set
-    v-if="layerSetIsshow"
-    @SETstate="SETstate"
-    :layerTree="treeData"
-    @addlayer="addlayer"
-    @delLayer="delLayer"
-  ></layer-set>
-  <attribute-list
-    v-if="layerAttributeIsshow"
-    :layerData="layerObjData"
-    @spatialClose="setSpatialClose"
-  ></attribute-list>
+  <layer-set v-if="layerSetIsshow" @SETstate="SETstate" :layerTree="treeData" @addlayer="addlayer" @delLayer="delLayer"
+    @onSubmit="editLayer"></layer-set>
+  <attribute-list v-if="layerAttributeIsshow" :layerData="layerObjData" @spatialClose="setSpatialClose"></attribute-list>
   <layer-detail :layerData="layerObjData" v-if="layerDetailIsshow" @detailClose="detailClose"></layer-detail>
 </template>
 
@@ -104,6 +74,7 @@
   nextTick,
   watch,
 } from "vue";
+import $ from "jquery";
 import layerSet from "./layerSet";
 import attributeList from "./attributeList";
 import layerDetail from "./layerDetail";
@@ -114,12 +85,14 @@
   mark_insert,
   mark_deletes,
   mark_update,
+  comprehensive_downloadShp,
 } from "@/api/api";
 import server from "@/assets/js/Map/server";
 import { ElMessage } from "element-plus";
 import temporaryTool from "@/assets/js/Map/temporaryTools";
 import json from "@/assets/js/colorValue";
 import menuTool from "@/assets/js/Map/menuTool";
+import { removeToken, getToken } from "@/utils/auth";
 const store = useStore(); // 璇ユ柟娉曠敤浜庤繑鍥瀞tore 瀹炰緥
 const stretchValue = ref("");
 const emits = defineEmits(["setCloseLayer"]);
@@ -190,52 +163,95 @@
     // for (var i in keys) {
     //   checkedKeys.push(keys[i]);
     // }
-
+    var keys = estreeRef.value.getCheckedKeys();
     var val = treeData.value[0].children;
     for (var i = 0; i < val.length; i++) {
       if (val[i].id == data.id) {
         val.splice(i, 1);
       }
     }
-    var keys = estreeRef.value.getCheckedKeys();
-    if (val.length <= 0 && keys.indexOf(data.id) > -1) {
-      keys.splice(keys.indexOf(data.id), 1);
-      estreeRef.value.setCheckedKeys(keys, true);
+
+    var std = [];
+    for (var i in keys) {
+      var layer_res = estreeRef.value.getNode(keys[i]).data;
+      if (layer_res.shpType && layer_res.shpType == 'temporaryLayer') {
+        std.push(keys[i]);
+      } else if (layer_res.isLayer == 1) {
+        std.push(keys[i]);
+      }
     }
-
-    // nextTick(() => {
-    // var str = JSON.parse(std)
-
-    // var layerIds = [];
-    // if (str.indexOf(data.id) > -1) {
-    //   str.splice(str.indexOf(data.id), 1);
-    // }
-    // if (str.indexOf(str.value) > -1) {
-    //   str.splice(str.indexOf(str.value), 1);
-    // }
-    // for (var i in str) {
-    //   var val = estreeRef.value.getNode(str[i]).data;
-    //   if (val.isLayer == 1) {
-    //     layerIds.push(str[i]);
-    //   }
-    // }
-    // estreeRef.value.setCheckedKeys(layerIds, true);
-    // });
+    estreeRef.value.setCheckedKeys([], true);
+    console.log(data.id);
+    nextTick(() => {
+      console.log(std);
+      estreeRef.value.setCheckedKeys(std, true);
+    });
   } else if (res == 3) {
     let son = estreeRef.value.getCheckedKeys();
     if (son.indexOf(data.id) < 0) {
       return ElMessage(data.cnName + "鍥惧眰娌℃湁鍕鹃��,鏃犳硶杩涜瀹氫綅");
     }
     temporaryTool.locationTemporaryLayer(data);
+  } else if (res == 4) {
+    var name = null;
+    if (res.type == 'label') {
+        name = data.text;
+      
+    } else {
+      name = data.cnName;
+    }
+    var obj = {
+      bak: null,
+      fillColor: data.material,
+      id: data.sid,
+      name: name,
+      opacity: data.materialAlpha,
+      type: data.type,
+      wkt: temporaryTool.getWKT(data),
+    }
+    downLoadShp(obj)
+
   }
 };
+const downLoadShp = (res) => {
+
+  $.ajax({
+    url: config.proxy + "/comprehensive/downloadShp?token=" + getToken(),
+    type: "POST",
+    data: JSON.stringify([res]),
+    dataType: "json", // html銆乯son銆乯sonp銆乻cript銆乼ext
+    contentType: "application/json", // "application/x-www-form-urlencoded"
+    success: (rs) => {
+      if (rs && rs.code == 200) {
+        var a = document.createElement("a"); // 鍒涘缓涓�涓猘鏍囩鍏冪礌
+        a.style.display = "none"; // 璁剧疆鍏冪礌涓嶅彲瑙�
+
+        a.href =
+          config.proxy +
+          "/comprehensive/downloadFile?token=" +
+          getToken() +
+          "&guid=" +
+          rs.result;
+
+        document.body.appendChild(a); // 鍔犲叆
+        a.click(); // 瑙﹀彂鐐瑰嚮,涓嬭浇
+        document.body.removeChild(a); // 閲婃斁
+      }
+    },
+    error: function (e) { },
+  });
+
+}
 //閫夋嫨鍥惧眰
 const handleCheckChange = (data, checked) => {
   layerAttributeIsshow.value = false;
   layerDetailIsshow.value = false;
   // let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
+
   let son = estreeRef.value.getCheckedNodes();
   store.commit("SET_CHECKLAYER", son);
+  temporaryTool.removeTemporaryLayerAll();
+  server.delLayerAll();
   var alphaGroup = [];
   var idGroup = [];
   for (var i in server.layerList) {
@@ -246,34 +262,35 @@
     }
   }
   server.delLayerAll();
-  temporaryTool.removeAll();
+
   var setGeoWms = [];
   var geoUrl = null;
   var layerTreeDate = estreeRef.value.getCheckedNodes().reverse();
   for (var i in layerTreeDate) {
     var layerArr = layerTreeDate[i];
-
     if (layerArr.shpType && layerArr.shpType == "temporaryLayer") {
       temporaryTool.addTemporaryTool(layerArr);
     } else {
-      if (layerArr.category == 2 && layerArr.type == 3) {
-        if (layerArr.tab != "moon:geo_mappable_unit") {
-          var id = layerArr.id;
-          if (idGroup.indexOf(id) > -1) {
-            var alpha = alphaGroup[idGroup.indexOf(id)];
-            if (alpha == 1) {
+      if (layerArr.isLayer == 1) {
+        if (layerArr.category == 2 && layerArr.type == 3) {
+          if (layerArr.tab != "moon:geo_mappable_unit") {
+            var id = layerArr.id;
+            if (idGroup.indexOf(id) > -1) {
+              var alpha = alphaGroup[idGroup.indexOf(id)];
+              if (alpha == 1) {
+                setGeoWms.push(layerArr.tab);
+                geoUrl = layerArr.url;
+              } else {
+                server.setAddGeoWmsLayer(layerArr, alpha);
+              }
+            } else {
               setGeoWms.push(layerArr.tab);
               geoUrl = layerArr.url;
-            } else {
-              server.setAddGeoWmsLayer(layerArr, alpha);
             }
-          } else {
-            setGeoWms.push(layerArr.tab);
-            geoUrl = layerArr.url;
           }
+        } else {
+          server.addTreeData(layerArr);
         }
-      } else {
-        server.addTreeData(layerArr);
       }
     }
   }
@@ -404,7 +421,16 @@
       node = estreeRef.value.getNode(e);
     }
   });
+
+  var checKey = estreeRef.value.getCheckedKeys();
+  let checkid = [];
+  for (var i in checKey) {
+    if (estreeRef.value.getNode(checKey[i]).data.isLayer == 1) {
+      checkid.push(checKey[i])
+    }
+  }
   // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤
+  estreeRef.value.setCheckedKeys([], true);
   let copyNode = { ...node };
   copyNode.previousSibling = { ...node.previousSibling };
   copyNode.nextSibling = { ...node.nextSibling };
@@ -430,6 +456,7 @@
       estreeRef.value.insertAfter(copyNode.data, copyNode.nextSibling.data);
     }
   }
+  estreeRef.value.setCheckedKeys(checkid, true);
 };
 //鍒犻櫎鍥惧眰鏍�
 const delLayer = (res) => {
@@ -438,13 +465,28 @@
   // });
   // treeData = handleTree(menuOption, "id", "pid", "children");
 };
+const editLayer = () => {
+  var layer = store.state.chekNowLayers;
+  var std = [];
+  for (var i in layer) {
+    if (layer[i].isLayer == 1) {
+      std.push(layer[i].id)
+    }
+  }
+  estreeRef.value.setCheckedKeys([], true);
+  nextTick(() => {
+    estreeRef.value.setCheckedKeys(std, true);
+  })
 
+}
 const setRestLayerData = () => {
   let son = estreeRef.value.getCheckedNodes().reverse();
+
   var setGeoWms = [];
   var geoUrl = null;
   for (var i in son) {
     var layerArr = son[i];
+    console.log(layerArr.isLayer);
     layerArr.checked = true;
     if (layerArr.category == 2 && layerArr.type == 3) {
       if (layerArr.tab != "moon:geo_mappable_unit") {
@@ -483,13 +525,20 @@
     var children = [];
     if (comperLayer.code == 200 && comperLayer.result) {
       for (var i in comperLayer.result) {
-        var slayer = JSON.parse(comperLayer.result[i].wkt);
-        slayer.sid = comperLayer.result[i].id;
-        children.push(slayer);
+        var layer = comperLayer.result[i]
+        if (layer.wkt && layer.wkt.indexOf("shpType") > -1 && layer.wkt.indexOf("shpType") > -1) {
+
+          var slayer = JSON.parse(comperLayer.result[i].wkt);
+
+          slayer.sid = comperLayer.result[i].id;
+          children.push(slayer);
+
+        }
       }
     }
+
     treeData.value.unshift({
-      cnName: "涓存椂鍥惧眰",
+      cnName: "鑷畾涔夊浘灞�",
       level: 1,
       pid: 0,
       isLayer: 0,
@@ -550,24 +599,29 @@
 }
 const addTemporaryLayer = async (res) => {
   var obj = {
-    id: res.id,
     name: res.cnName,
     wkt: JSON.stringify(res),
   };
+  var checkedKeys = estreeRef.value.getCheckedKeys();
   const data = await mark_insert(obj);
   if (data.code != 200 || !data.result) return;
   store.state.temporaryLayer = null;
   res.sid = data.result;
   treeData.value[0].children.push(res);
-  var id = res.id;
+
 
   nextTick(() => {
-    var checkedKeys = estreeRef.value.getCheckedKeys();
-    if (checkedKeys.indexOf(temporary.value) > -1) {
-      checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1);
+    var std = [res.id];
+    for (var i in checkedKeys) {
+      var layer_res = estreeRef.value.getNode(checkedKeys[i]).data;
+      if (layer_res.shpType && layer_res.shpType == 'temporaryLayer') {
+        std.push(checkedKeys[i]);
+      } else if (layer_res.isLayer == 1) {
+        std.push(checkedKeys[i]);
+      }
     }
-    checkedKeys.push(id);
-    estreeRef.value.setCheckedKeys(checkedKeys, true);
+    estreeRef.value.setCheckedKeys([], true);
+    estreeRef.value.setCheckedKeys(std, true);
     temporaryTool.addTemporaryTool(res);
   });
 };
@@ -615,6 +669,7 @@
   () => store.state.restLayer,
   (nVal, oVal) => {
     if (nVal) {
+
       setRestLayerData();
     }
   },
@@ -624,6 +679,7 @@
   () => store.state.temporaryLayer,
   (nVal, oVal) => {
     if (nVal) {
+
       addTemporaryLayer(nVal);
     }
   },
@@ -633,6 +689,7 @@
   () => store.state.editTemporarName,
   (nVal, oVal) => {
     if (nVal) {
+
       editTemporaryLayerName(nVal);
     }
   },
@@ -642,6 +699,7 @@
   () => store.state.editTemporaryback,
   (nVal, oVal) => {
     if (nVal) {
+
       editTemporaryBackById(nVal);
     }
   },
@@ -773,7 +831,7 @@
   padding: 8px;
 }
 
-/deep/ .el-tree-node:focus > .el-tree-node__content {
+/deep/ .el-tree-node:focus>.el-tree-node__content {
   background: transparent;
 }
 
@@ -791,10 +849,7 @@
   }
 }
 
-/deep/
-  .el-tree--highlight-current
-  .el-tree-node.is-current
-  > .el-tree-node__content {
+/deep/ .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
   background: rgba(104, 156, 255, 0.5) !important;
 }
 

--
Gitblit v1.9.3