| | |
| | | <template> |
| | | <div v-drag class="layerBox"> |
| | | <div |
| | | v-drag |
| | | class="layerBox" |
| | | > |
| | | <div class="layerTitle"> |
| | | <div class="tileLeft"> |
| | | <div @click="setCloseLayer" class="titleImg"> |
| | | <div |
| | | @click="setCloseLayer" |
| | | class="titleImg" |
| | | > |
| | | <ArrowLeft /> |
| | | </div> |
| | | <div class="titleLable">图层管理</div> |
| | | </div> |
| | | <div class="titleImg set" @click="layerSetBox"> |
| | | <div |
| | | class="titleImg set" |
| | | @click="layerSetBox" |
| | | > |
| | | <Setting /> |
| | | </div> |
| | | </div> |
| | |
| | | @check="handleCheckChange" |
| | | ref="estreeRef" |
| | | v-if="treeData.length" |
| | | :default-checked-keys="DefaultId" |
| | | > |
| | | <template #default="{ node, data }"> |
| | | <span class="custom-tree-node"> |
| | |
| | | Delete |
| | | </a> |
| | | </span> --> |
| | | <span class="button" v-if="data.type == 2 || data.type == 3"> |
| | | <span |
| | | class="button" |
| | | v-if="data.type == 2 || data.type == 3" |
| | | > |
| | | <el-dropdown trigger="click"> |
| | | <span class="el-dropdown-link"> |
| | | <el-icon class="el-icon--right"> |
| | |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item @click.native="clickdropdown(1, data)" |
| | | >详细</el-dropdown-item |
| | | > |
| | | <el-dropdown-item @click.native="clickdropdown(2, data)" |
| | | >属性</el-dropdown-item |
| | | > |
| | | <el-dropdown-item @click.native="clickdropdown(1, data)">详细</el-dropdown-item> |
| | | <el-dropdown-item @click.native="clickdropdown(2, data)">属性</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | |
| | | </div> |
| | | </div> |
| | | <layer-set |
| | | v-show="layerSetIsshow" |
| | | v-if="layerSetIsshow" |
| | | @SETstate="SETstate" |
| | | :layerTree="treeData" |
| | | @addlayer="addlayer" |
| | |
| | | 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([]); |
| | |
| | | // 当前选中的节点 id |
| | | const selectedNodeId = ref(null as any); //做类型断言处理 |
| | | const emits = defineEmits(["setCloseLayer"]); |
| | | |
| | | //默认选中id |
| | | const DefaultId = ref([15]); |
| | | //图层设置弹框 |
| | | const layerSetBox = () => { |
| | | layerSetIsshow.value = !layerSetIsshow.value; |
| | |
| | | }; |
| | | //选择图层 |
| | | const handleCheckChange = (data, checked) => { |
| | | layerAttributeIsshow.value = false; |
| | | layerDetailIsshow.value = false; |
| | | |
| | | let isCheck = checked.checkedKeys.indexOf(data.id) > -1; |
| | | // this.setVisiable(data, isCheck); |
| | | |
| | |
| | | |
| | | 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) => { |
| | |
| | | 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) => { |
| | | if (!e.checked) { |
| | | return ElMessage.error("请先勾选图层"); |
| | | } |
| | | layerAttributeIsshow.value = false; |
| | | layerDetailIsshow.value = false; |
| | | layerObjData.value = e; |
| | |
| | | }; |
| | | //编辑图层树 |
| | | const addlayer = (res) => { |
| | | console.log(res); |
| | | let node; |
| | | layerListData.value.forEach((e) => { |
| | | if (e.id == res.id) { |
| | |
| | | }; |
| | | |
| | | const getLayer = async () => { |
| | | const dt = await layer_selectAll(); |
| | | const dt = await perms_selectLayers(); |
| | | if (dt.code == 200) { |
| | | treeData.value = setTreeData(dt.result).sort(function (a, b) { |
| | | return a.sort - b.sort; |
| | | }); |
| | | |
| | | //添加默认选中图层 |
| | | 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); |
| | | }; |
| | | |
| | | //构造树 |
| | |
| | | return father.pid == 0; // 返回一级菜单 |
| | | }); |
| | | } |
| | | onMounted(() => { |
| | | getLayer(); |
| | | }); |
| | | getLayer(); |
| | | onMounted(() => {}); |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |