From ecf3ad202a851caa39660ddfaa16e1bf16565b2e Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期一, 30 十月 2023 13:51:38 +0800
Subject: [PATCH] 图层管理修改

---
 src/views/layer/layerManage.vue |  177 +++++++++++++++++++++++++++++------------------------------
 1 files changed, 87 insertions(+), 90 deletions(-)

diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue
index 478ba9d..651d215 100644
--- a/src/views/layer/layerManage.vue
+++ b/src/views/layer/layerManage.vue
@@ -190,38 +190,29 @@
     // 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);
-    }
 
-    // nextTick(() => {
-    // var str = JSON.parse(std)
-    // console.log(str)
-    // 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);
-    // });
+    var std = [];
+    for (var i in keys) {
+      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]);
+      }
+    }
+    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) {
@@ -234,63 +225,58 @@
 const handleCheckChange = (data, checked) => {
   layerAttributeIsshow.value = false;
   layerDetailIsshow.value = false;
-  let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
-  nextTick(() => {
-    let son = estreeRef.value.getCheckedNodes();
-    store.commit("SET_CHECKLAYER", son);
-  });
-  if (isCheck) {
-    if (data.isLayer == 0) {
-      let son = estreeRef.value.getCheckedNodes().reverse();
-      for (var i in son) {
-        var layerArr = son[i];
-        layerArr.checked = true;
-        if (layerArr.shpType && layerArr.shpType == "temporaryLayer") {
-          //涓存椂鍥惧眰娣诲姞
-          temporaryTool.addTemporaryTool(layerArr);
+  // 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) {
+    const layerData = server.layerList[i];
+    if (layerData.layerData && layerData.id != server.wmsLayerId) {
+      alphaGroup.push(layerData.layerData.alpha);
+      idGroup.push(layerData.layerData.id);
+    }
+  }
+  server.delLayerAll();
+
+  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.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.addTreeData(layerArr);
         }
       }
-    } else {
-      if (data.shpType && data.shpType == "temporaryLayer") {
-        //涓存椂鍥惧眰娣诲姞
-        temporaryTool.addTemporaryTool(data);
-      } else {
-        let son = estreeRef.value.getCheckedNodes().reverse();
-        for (var i in son) {
-          var layerArr = son[i];
-          layerArr.checked = true;
-          if (layerArr.shpType && layerArr.shpType == "temporaryLayer") {
-            //涓存椂鍥惧眰娣诲姞
-          } else {
-            server.addTreeData(layerArr);
-          }
-        }
-      }
-    }
-  } else {
-    if (data.isLayer == 0) {
-      var layers = getCheckedLayerChildren(data);
-
-      // var layers = data.children;
-      for (var i in layers) {
-        if (layers[i].shpType && layers[i].shpType == "temporaryLayer") {
-          //涓存椂鍥惧眰娣诲姞
-          temporaryTool.removeTemporaryLayer(layers[i]);
-        } else {
-          server.delLayer(layers[i].id);
-        }
-      }
-    } else {
-      if (data.shpType && data.shpType == "temporaryLayer") {
-        //涓存椂鍥惧眰娣诲姞
-        temporaryTool.removeTemporaryLayer(data);
-      } else {
-        server.delLayer(data.id);
-      }
     }
   }
+  if (setGeoWms.length > 0) {
+    server.addGeoServerMmsLayers(setGeoWms, geoUrl);
+  }
+
   menuTool.setImageLayerChange();
 };
 const setVisiable = (treeNode, checked) => {
@@ -363,13 +349,13 @@
           forFn(item);
         } else {
           if (ids.indexOf(item.id) > -1) {
-            temp.push(item.id);
+            temp.push(item);
           }
         }
       });
     } else {
       if (ids.indexOf(data.id) > -1) {
-        temp.push(data.id);
+        temp.push(data);
       }
     }
   };
@@ -448,24 +434,29 @@
   // });
   // treeData = handleTree(menuOption, "id", "pid", "children");
 };
+
 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") {
-        // setGeoWms.push(layerArr.tab);
-        // url = layerArr.url;
-        server.addTreeData(layerArr);
+        setGeoWms.push(layerArr.tab);
+        geoUrl = layerArr.url;
+        // server.addTreeData(layerArr);
       }
     } else {
       server.addTreeData(layerArr);
     }
   }
-  // if (setGeoWms.length > 0) {
-  //   server.addGeoServerMmsLayers(setGeoWms, url);
-  // }
+  if (setGeoWms.length > 0) {
+    server.addGeoServerMmsLayers(setGeoWms, geoUrl);
+  }
   store.commit("SET_CHECKLAYER", son);
 };
 const getLayer = async () => {
@@ -561,20 +552,26 @@
     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);
   });
 };

--
Gitblit v1.9.3