From b7e62ad2625121586b1254dab69b3c3d38da71de Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期二, 31 十月 2023 17:31:10 +0800
Subject: [PATCH] 投影图层修改,在线制图修改

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

diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue
index b5be958..87ecbe6 100644
--- a/src/views/layer/layerManage.vue
+++ b/src/views/layer/layerManage.vue
@@ -23,7 +23,7 @@
               <a style="margin-left: 8px" @click="remove(node, data)">
                 Delete
               </a>
-            </span> -->
+            </span>-->
             <span class="button" v-if="!data.isTemporaryLayer">
               <el-dropdown trigger="click">
                 <span class="el-dropdown-link">
@@ -44,6 +44,8 @@
                       @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-menu>
                 </template>
               </el-dropdown>
@@ -53,8 +55,8 @@
       </el-tree>
     </div>
   </div>
-  <layer-set v-if="layerSetIsshow" @SETstate="SETstate" :layerTree="treeData" @addlayer="addlayer"
-    @delLayer="delLayer"></layer-set>
+  <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>
@@ -74,10 +76,18 @@
 import attributeList from "./attributeList";
 import layerDetail from "./layerDetail";
 import { useStore } from "vuex"; // 寮曞叆useStore 鏂规硶
-import { perms_selectLayers } from "@/api/api";
+import {
+  perms_selectLayers,
+  mark_selectByPageAndCount,
+  mark_insert,
+  mark_deletes,
+  mark_update,
+} 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";
 const store = useStore(); // 璇ユ柟娉曠敤浜庤繑鍥瀞tore 瀹炰緥
 const stretchValue = ref("");
 const emits = defineEmits(["setCloseLayer"]);
@@ -114,8 +124,12 @@
   emits("setCloseLayer", false);
 };
 const temporary = ref(new Date().getTime());
-const clickdTemporary = (res, data) => {
+const clickdTemporary = async (res, data) => {
   if (res == 1) {
+    let son = estreeRef.value.getCheckedKeys();
+    if (son.indexOf(data.id) < 0) {
+      return ElMessage(data.cnName + "鍥惧眰娌℃湁鍕鹃��,鏃犳硶杩涜缂栬緫");
+    }
     if (store.state.editTemporaryId) {
       var id = store.state.editTemporaryId;
       var edit_id = sgworld.Creator.SimpleGraphic.SimpleGraphicObj.indexOf(id);
@@ -126,59 +140,112 @@
     }
     store.state.editTemporaryId = data.id;
     sgworld.Creator.SimpleGraphic.SimpleGraphicObj.push(data.id);
-    sgworld.Creator.SimpleGraphic.edit(true, { editProp: false });
+    sgworld.Creator.SimpleGraphic.edit(true, {
+      editProp: false,
+      tipText: {
+        ActiveText: "鐐瑰嚮婵�娲荤紪杈�",
+      },
+      enableDelete: false,
+    });
   } else if (res == 2) {
+    var layerId = [];
+    layerId.push(data.sid);
+    const data1 = await mark_deletes({ ids: layerId.toString() });
+    if (data1.code != 200) return;
     temporaryTool.removeTemporaryLayer(data);
+
+    // estreeRef.value.setCheckedKeys(checkedKeys, true);
+    // for (var i in keys) {
+    //   checkedKeys.push(keys[i]);
+    // }
     var keys = estreeRef.value.getCheckedKeys();
-    const checkedKeys = [];
-    for (var i in keys) {
-      checkedKeys.push(keys[i])
-    }
     var val = treeData.value[0].children;
     for (var i = 0; i < val.length; i++) {
       if (val[i].id == data.id) {
         val.splice(i, 1);
       }
     }
-    if (checkedKeys.indexOf(data.id) > -1) {
-      checkedKeys.splice(checkedKeys.indexOf(data.id), 1)
+
+    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]);
+      }
     }
-    if (checkedKeys.indexOf(temporary.value) > -1) {
-      checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1)
+    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 + "鍥惧眰娌℃湁鍕鹃��,鏃犳硶杩涜瀹氫綅");
     }
-    estreeRef.value.setCheckedKeys(checkedKeys, true);
+    temporaryTool.locationTemporaryLayer(data);
   }
 };
 //閫夋嫨鍥惧眰
 const handleCheckChange = (data, checked) => {
   layerAttributeIsshow.value = false;
   layerDetailIsshow.value = false;
+  // let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
 
-  let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
-  if (isCheck) {
-    let son = estreeRef.value.getCheckedNodes().reverse();
-    var setGeoWms = [];
-    var url = null;
-    for (var i in son) {
-      var layerArr = son[i];
-      layerArr.checked = true;
-      if (layerArr.category == 2 && layerArr.type == 3) {
+  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();
 
-        if (layerArr.tab != "moon:geo_mappable_unit") {
-
-          server.addTreeData(layerArr)
+  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 {
-        server.addTreeData(layerArr);
       }
     }
-
-    store.commit("SET_CHECKLAYER", son);
-  } else {
-
-    server.delLayer(data.id)
+  }
+  if (setGeoWms.length > 0) {
+    server.addGeoServerMmsLayers(setGeoWms, geoUrl);
   }
 
+  menuTool.setImageLayerChange();
 };
 const setVisiable = (treeNode, checked) => {
   if (checked !== undefined) {
@@ -219,15 +286,16 @@
       layerAttributeIsshow.value = true;
       store.state.tab = e;
     } else if (res == 3) {
-      let son = estreeRef.value.getCheckedNodes()
-      var layerId = getCheckedLayerID(e, son);
+      let son = estreeRef.value.getCheckedKeys();
+      var layerId = getCheckedLayerPID(e, son);
       if (layerId.length <= 0) {
         return ElMessage.error("璇峰厛鍕鹃�夊浘灞�");
       }
-
-      // layerDetailIsshow.value = true;
-      // store.state.tab = e;
-
+      layerDetailIsshow.value = true;
+      store.state.layerGroups = {
+        id: e.id,
+        layerIds: layerId,
+      };
     } else {
       var val = estreeRef.value!.getCheckedKeys(false);
       if (val.indexOf(e.id) > -1) {
@@ -236,30 +304,61 @@
         return ElMessage.error("璇峰厛鍕鹃�夊浘灞�");
       }
     }
-  })
-
+  });
 };
-const getCheckedLayerID = (res, result) => {
+const getCheckedLayerPID = (res, result) => {
   var temp = [];
+  var ids = result;
+
   let forFn = (data) => {
-    data.children.forEach(item => {
-      if (item.children) {
-        forFn(item)
-      } else {
-        if (result.indexOf(item.id) > -1) {
-          temp.push(item.id)
+    if (data.children) {
+      data.children.forEach((item) => {
+        if (item.children) {
+          forFn(item);
+        } else {
+          if (ids.indexOf(item.id) > -1) {
+            temp.push(item);
+          }
         }
+      });
+    } else {
+      if (ids.indexOf(data.id) > -1) {
+        temp.push(data);
       }
-    })
-  }
+    }
+  };
+
   forFn(res);
   return temp;
 };
+
+const getCheckedLayerChildren = (res) => {
+  var temp2 = [];
+  let forFn = (data) => {
+    if (data.children) {
+      data.children.forEach((item) => {
+        if (item.children) {
+          forFn(item);
+        } else {
+          temp2.push(item);
+        }
+      });
+    } else {
+      temp2.push(data);
+    }
+  };
+  forFn(res);
+  return temp2;
+};
+
 const setSpatialClose = (res) => {
   layerAttributeIsshow.value = res;
 };
 const detailClose = (res) => {
-  layerDetailIsshow.value = res;
+  if (res.type == 0) {
+    estreeRef.value.getNode(store.state.layerGroups.id).data.alpha = res.val;
+  }
+  layerDetailIsshow.value = res.flag;
 };
 //缂栬緫鍥惧眰鏍�
 const addlayer = (res) => {
@@ -269,7 +368,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 };
@@ -295,6 +403,7 @@
       estreeRef.value.insertAfter(copyNode.data, copyNode.nextSibling.data);
     }
   }
+  estreeRef.value.setCheckedKeys(checkid, true);
 };
 //鍒犻櫎鍥惧眰鏍�
 const delLayer = (res) => {
@@ -303,28 +412,42 @@
   // });
   // 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();
-  // server.delLayerAll();
 
   var setGeoWms = [];
-  var url = null;
+  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 () => {
@@ -332,10 +455,34 @@
   // server.delLayerAll();
   const dt = await perms_selectLayers();
   if (dt.code == 200) {
-    treeData.value = setTreeData(dt.result).sort(function (a, b) {
+    var va_data = dt.result.filter((res) => {
+      if (res.isLayer == 0) {
+        res.alpha = 1;
+      }
+      return res;
+    });
+    treeData.value = setTreeData(va_data).sort(function (a, b) {
       return a.orderNum - b.orderNum;
     });
+    const comperLayer = await mark_selectByPageAndCount({
+      pageIndex: 1,
+      pageSize: 100000,
+      name: null,
+    });
+    var children = [];
+    if (comperLayer.code == 200 && comperLayer.result) {
+      for (var i in comperLayer.result) {
+        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: "涓存椂鍥惧眰",
       level: 1,
@@ -344,7 +491,7 @@
       type: 6,
       id: temporary.value,
       isTemporaryLayer: true,
-      children: [],
+      children: children,
     });
 
     var std = [];
@@ -369,28 +516,10 @@
     //娣诲姞榛樿閫変腑鍥惧眰
     layerListData.value = dt.result;
     defaultLayer(dt.result);
-    // var setGeoWms = [];
-    // var url = null;
 
-    // for (var i in adLayer) {
-    //   var layer = adLayer[i];
-    //   if (layer.category == 2 && layer.type == 3) {
-    //     if (layer.tab != "moon:geo_mappable_unit") {
-    //       // setGeoWms.push(layer.tab);
-    //       // url = layer.url;
-    //       server.addTreeData(layer);
-    //     }
-    //   } else {
-    //     server.addTreeData(layer);
-    //   }
-    // }
-    // if (setGeoWms.length > 0) {
-    //   server.addGeoServerMmsLayers(setGeoWms, url);
-    // }
-    //;
     nextTick(() => {
       let son = estreeRef.value.getCheckedNodes();
-      setRestLayerData()
+      setRestLayerData();
       store.commit("SET_CHECKLAYER", son);
     });
   }
@@ -414,18 +543,31 @@
     return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
   });
 }
-const addTemporaryLayer = (res) => {
+const addTemporaryLayer = async (res) => {
+  var obj = {
+    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);
   });
 };
@@ -437,7 +579,7 @@
   for (var i = 0; i < val.length; i++) {
     if (val[i].id == id) {
       val[i].cnName = res;
-      treeData.value = [...treeData.value];
+      setEditLayerChange(val[i]);
     }
   }
   defaultExpanded.value = [treeData.value[0].id];
@@ -445,17 +587,35 @@
 const editTemporaryBackById = (res) => {
   var obj = temporaryTool.getEntityObj(res);
   var val = treeData.value[0].children;
+  var checkedKeys = estreeRef.value.getCheckedKeys();
+  if (checkedKeys.indexOf(temporary.value) > -1) {
+    checkedKeys.splice(checkedKeys.indexOf(temporary.value), 1);
+  }
   for (var i = 0; i < val.length; i++) {
     if (val[i].id == res) {
+      obj.sid = val[i].sid;
       val[i] = obj;
-      treeData.value = [...treeData.value];
+      setEditLayerChange(obj);
     }
   }
+  nextTick(() => {
+    estreeRef.value.setCheckedKeys(checkedKeys, true);
+  });
+};
+const setEditLayerChange = async (res) => {
+  var obj = {
+    id: res.sid,
+    name: res.cnName,
+    wkt: JSON.stringify(res),
+  };
+  const data = await mark_update(obj);
+  if (data.code != 200) return;
 };
 watch(
   () => store.state.restLayer,
   (nVal, oVal) => {
     if (nVal) {
+
       setRestLayerData();
     }
   },
@@ -465,6 +625,7 @@
   () => store.state.temporaryLayer,
   (nVal, oVal) => {
     if (nVal) {
+
       addTemporaryLayer(nVal);
     }
   },
@@ -474,6 +635,7 @@
   () => store.state.editTemporarName,
   (nVal, oVal) => {
     if (nVal) {
+
       editTemporaryLayerName(nVal);
     }
   },
@@ -483,6 +645,7 @@
   () => store.state.editTemporaryback,
   (nVal, oVal) => {
     if (nVal) {
+
       editTemporaryBackById(nVal);
     }
   },

--
Gitblit v1.9.3