月球大数据地理空间分析展示平台-【前端】-月球2期前端
surprise
2023-10-18 4867ac0db2e48fac8e595ad78836cb2e92e3ca79
src/views/layer/layerManage.vue
@@ -74,10 +74,11 @@
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";
const store = useStore(); // 该方法用于返回store 实例
const stretchValue = ref("");
const emits = defineEmits(["setCloseLayer"]);
@@ -114,7 +115,7 @@
  emits("setCloseLayer", false);
};
const temporary = ref(new Date().getTime());
const clickdTemporary = (res, data) => {
const clickdTemporary = async (res, data) => {
  if (res == 1) {
    if (store.state.editTemporaryId) {
      var id = store.state.editTemporaryId;
@@ -128,6 +129,10 @@
    sgworld.Creator.SimpleGraphic.SimpleGraphicObj.push(data.id);
    sgworld.Creator.SimpleGraphic.edit(true, { editProp: 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);
    var keys = estreeRef.value.getCheckedKeys();
    const checkedKeys = [];
@@ -153,32 +158,84 @@
const handleCheckChange = (data, checked) => {
  layerAttributeIsshow.value = false;
  layerDetailIsshow.value = false;
  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) {
        if (layerArr.tab != "moon:geo_mappable_unit") {
          server.addTreeData(layerArr)
        }
      if (layerArr.shpType && layerArr.shpType == 'temporaryLayer') {//临时图层添加
        temporaryTool.addTemporaryTool(layerArr);
      } else {
        server.addTreeData(layerArr);
      }
    }
    store.commit("SET_CHECKLAYER", son);
  } else {
    server.delLayer(data.id)
    if (data.isLayer == 0) {
      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 (data.isLayer == 0) {//为父级
  //   let son = estreeRef.value.getCheckedNodes().reverse();
  //   for(var i in )
  // } else {//为子级
  // }
  //
  // if (data.shpType && data.shpType == 'temporaryLayer') {
  //   if (isCheck) {
  //     temporaryTool.addTemporaryTool(data);
  //   } else if(!isCheck) {
  //     temporaryTool.removeTemporaryLayer(data);
  //   }
  // } else {
  //   if (isCheck) {
  //     let son = estreeRef.value.getCheckedNodes().reverse();
  //     for (var i in son) {
  //       var layerArr = son[i];
  //       layerArr.checked = true;
  //       if (layerArr.category == 2 && layerArr.type == 3) {
  //         if (layerArr.tab != "moon:geo_mappable_unit") {
  //           server.addTreeData(layerArr)
  //         }
  //       } else {
  //         server.addTreeData(layerArr);
  //       }
  //     }
  //     store.commit("SET_CHECKLAYER", son);
  //   } else {
  //
  //   }
  // }
};
const setVisiable = (treeNode, checked) => {
  if (checked !== undefined) {
@@ -224,10 +281,6 @@
      if (layerId.length <= 0) {
        return ElMessage.error("请先勾选图层");
      }
      // layerDetailIsshow.value = true;
      // store.state.tab = e;
    } else {
      var val = estreeRef.value!.getCheckedKeys(false);
      if (val.indexOf(e.id) > -1) {
@@ -305,10 +358,6 @@
};
const setRestLayerData = () => {
  let son = estreeRef.value.getCheckedNodes().reverse();
  // server.delLayerAll();
  var setGeoWms = [];
  var url = null;
  for (var i in son) {
    var layerArr = son[i];
    layerArr.checked = true;
@@ -335,7 +384,19 @@
    treeData.value = setTreeData(dt.result).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 slayer = JSON.parse(comperLayer.result[i].wkt);
        slayer.sid = comperLayer.result[i].id;
        children.push(slayer)
      }
    }
    treeData.value.unshift({
      cnName: "临时图层",
      level: 1,
@@ -344,7 +405,7 @@
      type: 6,
      id: temporary.value,
      isTemporaryLayer: true,
      children: [],
      children: children,
    });
    var std = [];
@@ -414,8 +475,16 @@
    return father.pid == 0; // 返回一级菜单
  });
}
const addTemporaryLayer = (res) => {
const addTemporaryLayer = async (res) => {
  var obj = {
    id: res.id,
    name: res.cnName,
    wkt: JSON.stringify(res)
  }
  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;
@@ -437,7 +506,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,13 +514,33 @@
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) => {