月球大数据地理空间分析展示平台-【前端】-月球2期前端
WX
2023-08-11 bc9c0c1b52cd955644bc1f4ce7ecc0d0ee4e2b18
src/views/layer/layerManage.vue
@@ -23,6 +23,7 @@
        @check="handleCheckChange"
        ref="estreeRef"
        v-if="treeData.length"
        :default-checked-keys="DefaultId"
      >
        <template #default="{ node, data }">
          <span class="custom-tree-node">
@@ -33,7 +34,7 @@
                Delete
              </a>
            </span> -->
            <span class="button" v-if="data.type == 2">
            <span class="button" v-if="data.isLayer == 1">
              <el-dropdown trigger="click">
                <span class="el-dropdown-link">
                  <el-icon class="el-icon--right">
@@ -58,7 +59,7 @@
    </div>
  </div>
  <layer-set
    v-show="layerSetIsshow"
    v-if="layerSetIsshow"
    @SETstate="SETstate"
    :layerTree="treeData"
    @addlayer="addlayer"
@@ -84,41 +85,23 @@
  reactive,
  defineProps,
  defineEmits,
  nextTick,
} from "vue";
import layerSet from "./layerSet";
import attributeList from "./attributeList";
import layerDetail from "./layerDetail";
import { useStore } from "vuex"; // 引入useStore 方法
import { layer_selectAll } from "@/api/api";
import { perms_selectLayers } from "@/api/api";
import server from "@/assets/js/Map/server";
import { ElMessage } from "element-plus";
const store = useStore(); // 该方法用于返回store 实例
const stretchValue = ref("");
let estreeRef = ref();
const stretchOptions = [
  {
    value: "Option1",
    label: "Option1",
  },
  {
    value: "Option2",
    label: "Option2",
  },
  {
    value: "Option3",
    label: "Option3",
  },
  {
    value: "Option4",
    label: "Option4",
  },
  {
    value: "Option5",
    label: "Option5",
  },
];
const transparence = ref(0);
var treeData = ref([]);
var layerListData = ref([]);
let menuOption = reactive([
  {
    id: 1,
@@ -174,7 +157,8 @@
// 当前选中的节点 id
const selectedNodeId = ref(null as any); //做类型断言处理
const emits = defineEmits(["setCloseLayer"]);
//默认选中id
const DefaultId = ref([15]);
//图层设置弹框
const layerSetBox = () => {
  layerSetIsshow.value = !layerSetIsshow.value;
@@ -188,6 +172,9 @@
};
//选择图层
const handleCheckChange = (data, checked) => {
  layerAttributeIsshow.value = false;
  layerDetailIsshow.value = false;
  let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
  // this.setVisiable(data, isCheck);
@@ -195,12 +182,7 @@
  store.commit("SET_CHECKLAYER", son);
  setVisiable(data, isCheck);
  let layerArr = [];
  son.forEach((e) => {
    if (e.type == 2) {
      layerArr.push(e);
    }
  });
  // server.addLayer(layerArr, isCheck);
};
const setVisiable = (treeNode, checked) => {
@@ -215,78 +197,26 @@
      setVisiable(item, treeNode.checked);
    });
    return;
  } else if (treeNode._children) {
    if (treeNode.thisView === "ewzj") {
      treeNode._children[0].checked = treeNode.checked;
      if (treeNode._children[0].children) {
        treeNode._children[0].children.forEach((item) => {
          item.checked = treeNode.checked;
          server.addTreeData(item);
        });
      } else {
        server.addTreeData(treeNode._children[0]);
      }
    } else if (treeNode.thisView === "swzj") {
      for (let i = 1; i < treeNode._children.length; i++) {
        treeNode._children[i].checked = treeNode.checked;
      }
      treeNode._children.forEach((item, index) => {
        index !== 0 && server.addTreeData(item);
      });
    } else if (!treeNode.thisView) {
      treeNode._children.forEach((item, index) => {
        item.checked = treeNode.checked;
        if (item.children) {
          item.children.forEach((_item) => {
            _item.checked = item.checked;
            server.addTreeData(_item);
          });
        } else {
          server.addTreeData(item);
        }
      });
    }
    return;
  }
  if (!treeNode.isAdd) {
    server.addTreeData(treeNode);
    return;
  }
  // let data = _getTreeData(treeNode.id);
  // if (data) {
  //   data.item &&
  //     data.item.setVisibility &&
  //     data.item.setVisibility(treeNode.checked);
  //   data.item && data.item.setVisible && data.item.setVisible(treeNode.checked);
  //   data.item &&
  //     data.item.show !== undefined &&
  //     (data.item.show = treeNode.checked);
  //   if (data.datatype === "particle") {
  //     data.item.forEach((item) => {
  //       item.show = treeNode.checked;
  //     });
  //   }
  // } else {
  //   if (treeNode.id && treeNode.id.indexOf && treeNode.id.indexOf("---") > -1) {
  //     var ids = id.split("---");
  //     ids.forEach((item) => {
  //       sgworld.ProjectTree.setVisibility(item, treeNode.checked);
  //     });
  //   } else {
  //     sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked);
  //     var dd = Viewer.dataSources._dataSources.filter((item) => {
  //       return item.name == treeNode.id;
  //     });
  //     if (dd && dd.length > 0) {
  //       dd[0].show = treeNode.checked;
  //     }
  //   }
  // }
};
const defaultLayer = (val) => {
  val.forEach((e) => {
    DefaultId.value.forEach((v) => {
      if (e.id == v) {
        setVisiable(e, true);
      } else {
        if (e.children) {
          defaultLayer(e.children);
        }
      }
    });
  });
};
const clickdropdown = (res, e) => {
  layerAttributeIsshow.value = false;
  layerDetailIsshow.value = false;
@@ -294,6 +224,9 @@
  if (res == 2) {
    layerAttributeIsshow.value = true;
  } else {
    if (!e.checked) {
      return ElMessage.error("请先勾选图层");
    }
    layerDetailIsshow.value = true;
  }
};
@@ -305,28 +238,65 @@
};
//编辑图层树
const addlayer = (res) => {
  menuOption.push(res);
  // treeData.value = handleTree(menuOption, "id", "pid", "children");
  let node;
  layerListData.value.forEach((e) => {
    if (e.id == res.id) {
      node = estreeRef.value.getNode(e);
    }
  });
  // 将变动之前的node备份
  let copyNode = { ...node };
  copyNode.previousSibling = { ...node.previousSibling };
  copyNode.nextSibling = { ...node.nextSibling };
  if (res.type === 1) {
    // 上移
    if (node.previousSibling) {
      // 删除原先的node
      estreeRef.value.remove(node.data);
      // 拿到copy的node
      // nodeData = CircularJSON.parse(window.sessionStorage.getItem("menuNode"));
      // 复制该node到指定位置(参数:1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node)
      estreeRef.value.insertBefore(
        copyNode.data,
        copyNode.previousSibling.data
      );
      // window.sessionStorage.removeItem("menuNode");
    }
  } else {
    // 下移
    if (node.nextSibling) {
      estreeRef.value.remove(node.data);
      estreeRef.value.insertAfter(copyNode.data, copyNode.nextSibling.data);
    }
  }
};
//删除图层树
const delLayer = (res) => {
  menuOption = menuOption.filter((item) => {
    return item.id != res;
  });
  console.log(res);
  console.log(menuOption);
  // menuOption = menuOption.filter((item) => {
  //   return item.id != res;
  // });
  // console.log(res);
  // console.log(menuOption);
  // treeData = handleTree(menuOption, "id", "pid", "children");
};
const getLayer = async () => {
  const dt = await layer_selectAll();
  const dt = await perms_selectLayers();
  if (dt.code == 200) {
    treeData.value = setTreeData(dt.result);
    treeData.value = setTreeData(dt.result).sort(function (a, b) {
      return a.sort - b.sort;
    });
    console.log(treeData.value);
    //添加默认选中图层
    layerListData.value = dt.result;
    defaultLayer(treeData.value);
    nextTick(() => {
      let son = estreeRef.value.getCheckedNodes();
      store.commit("SET_CHECKLAYER", son);
    });
  }
  // treeData.value = JSON.parse(JSON.stringify(treeData.value));
  // console.log(treeData.value);
};
//构造树
@@ -337,7 +307,7 @@
    let branchArr = cloneData.filter((child) => father.id == child.pid);
    if (branchArr.length > 0) {
      branchArr.sort(function (a, b) {
        return a.orderNum - b.orderNum;
        return a.sort - b.sort;
      });
    }
@@ -347,9 +317,8 @@
    return father.pid == 0; // 返回一级菜单
  });
}
onMounted(() => {
  getLayer();
});
getLayer();
onMounted(() => {});
</script>
<style lang="less" scoped>