创建新仓库
This commit is contained in:
693
src/renderer/components/Tree/treeSetting.js
Normal file
693
src/renderer/components/Tree/treeSetting.js
Normal file
@ -0,0 +1,693 @@
|
||||
import * as treeNodeOption from "./treeNode";
|
||||
import { hideSource, showSource } from "@/api/gisAPI";
|
||||
import { cusRenderNode, cusRenderNode2d } from "./treeNode";
|
||||
import { updatePid } from "../../api/gisAPI";
|
||||
import { cusUpdateNode } from "./treeNode";
|
||||
import { ipcRenderer, contextBridge } from "electron";
|
||||
import { set } from "nprogress";
|
||||
|
||||
let nodes = [];
|
||||
const tree = {
|
||||
data() {
|
||||
return {
|
||||
treeObj: null,
|
||||
setting: {
|
||||
edit: {
|
||||
enable: true,
|
||||
showRemoveBtn: false,
|
||||
showRenameBtn: false,
|
||||
drag: {
|
||||
isMove: true,
|
||||
isCopy: false,
|
||||
},
|
||||
},
|
||||
check: {
|
||||
enable: true,
|
||||
nocheckInherit: false,
|
||||
chkboxType: { Y: "ps", N: "s" },
|
||||
},
|
||||
view: {
|
||||
selectedMulti: true,
|
||||
// autoCancelSelected: true
|
||||
},
|
||||
data: {
|
||||
key: {
|
||||
//zdatas数据中表示节点name的属性key
|
||||
name: "source_name",
|
||||
checked: "is_show",
|
||||
},
|
||||
simpleData: {
|
||||
enable: true,
|
||||
idKey: "source_id",
|
||||
pIdKey: "p_id",
|
||||
nameKey: "source_name",
|
||||
},
|
||||
},
|
||||
callback: {
|
||||
onRightClick: this.onRightClick,
|
||||
beforeDrag: this.beforeDrag,
|
||||
onDrop: this.onDrop,
|
||||
beforeRemove: this.beforeRemove,
|
||||
beforeDrop: this.beforeDrop,
|
||||
// beforeCollapse: this.beforeCollapse,
|
||||
onRemove: this.onRemove,
|
||||
onMouseDown: this.onMouseDown,
|
||||
onClick: this.onClick,
|
||||
onDblClick: this.onDblClick,
|
||||
beforeClick: this.zTreeBeforeClick,
|
||||
onCheck: this.onCheck,
|
||||
onExpand: this.addChildNodes,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
addChildNodes(event, treeId, treeNode) {
|
||||
if (treeNode.children.length) return;
|
||||
var treeObj = $.fn.zTree.getZTreeObj(treeId);
|
||||
//加载shp gdb kml子级数据
|
||||
if (treeNode.source_type == "FeatureCollection") {
|
||||
var newnodes = window._entityMap.get(treeNode.fid).getAllNode();
|
||||
if (newnodes) {
|
||||
let arrt = treeNode.detail.hasOwnProperty("fieldName")
|
||||
? treeNode.detail.fieldName
|
||||
: treeNode.detail.defaultfieldName;
|
||||
newnodes.list.forEach((it) => {
|
||||
let zijiNodes = [];
|
||||
if (it.name == treeNode.source_name) {
|
||||
if (it.features && it.features.length) {
|
||||
it.features.forEach((item) => {
|
||||
let ziNode = {
|
||||
source_id: item.id,
|
||||
source_type: item.type,
|
||||
source_name: item.properties[arrt],
|
||||
detail: { ...item, info: { type: "richText" } },
|
||||
is_show: 1,
|
||||
fid: treeNode.fid,
|
||||
};
|
||||
zijiNodes.push(ziNode);
|
||||
});
|
||||
}
|
||||
}
|
||||
let childNode = treeObj.getNodeByParam(
|
||||
"source_id",
|
||||
treeNode.source_id,
|
||||
null
|
||||
);
|
||||
if (childNode) {
|
||||
treeObj.addNodes(childNode, zijiNodes, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
setOptions2d(node) {
|
||||
if (node.source_type !== "directory") {
|
||||
node.icon = treeNodeOption.cusNodeIcon(node.source_type);
|
||||
if (node.is_show) treeNodeOption.cusRenderNode2d(node);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 设置node节点的属性
|
||||
* @param node
|
||||
*/
|
||||
setOptions(node) {
|
||||
if (node.source_type !== "directory") {
|
||||
node.icon = treeNodeOption.cusNodeIcon(node);
|
||||
if (
|
||||
(node.is_show && node.source_type != "path") ||
|
||||
node.source_type == "path"
|
||||
) {
|
||||
if (!["pressModel", "terrainDig"].includes(node.source_type)) {
|
||||
treeNodeOption.cusRenderNode(node, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 对象数组按照key属性进行排序
|
||||
* @param key
|
||||
* @returns {function(*, *): *}
|
||||
*/
|
||||
keysort(key) {
|
||||
return function(a, b) {
|
||||
return a[key] - b[key];
|
||||
};
|
||||
},
|
||||
|
||||
zTreeBeforeClick(treeId, treeNode, clickFlag) {
|
||||
this.$changeComponentShow(".rightMenu", false);
|
||||
this.treeObj.cancelSelectedNode();
|
||||
},
|
||||
/**
|
||||
* 树形节点右键点击
|
||||
* @param event 事件对象
|
||||
* @param treeId 树形结构id
|
||||
* @param treeNode 鼠标右键点击时所在节点的 JSON 数据对象
|
||||
*/
|
||||
onRightClick(event, treeId, treeNode) {
|
||||
//没按ctrl的时候执行&& !treeNodeOption.getSelectedNodes(this.treeObj).length <2
|
||||
let selectNodes = treeNodeOption.getSelectedNodes(this.treeObj);
|
||||
let isnewSelect = true; //是否为新选中
|
||||
selectNodes.forEach((item) => {
|
||||
if (treeNode && item.source_id == treeNode.source_id)
|
||||
isnewSelect = false;
|
||||
});
|
||||
console.log("selectNodes1111111111111111111111", selectNodes);
|
||||
|
||||
if (!event.ctrlKey && (selectNodes.length < 2 || isnewSelect))
|
||||
treeNodeOption.cusSelectNode(this.treeObj, treeNode);
|
||||
let menus = treeNodeOption.showRightMenu(event, this.treeObj);
|
||||
console.log(menus);
|
||||
if (menus.length == 0) {
|
||||
return;
|
||||
}
|
||||
// this.$changeComponentShow(".rightMenu", true);
|
||||
// if (window.childNo) {
|
||||
let that = this;
|
||||
let menuBox = document.querySelector(".rightMenu");
|
||||
menuBox.style.display = "block";
|
||||
that.$nextTick(() => {
|
||||
$root_home_index.$refs.tree.$refs.rightMenu.initMenu(menus, treeNode);
|
||||
});
|
||||
// }
|
||||
},
|
||||
beforeDrag(treeId, treeNodes) {
|
||||
console.log("beforeDrag", treeId, treeNodes);
|
||||
|
||||
// if(treeNodes[0].isleaf == true){ //叶子节点
|
||||
// return false
|
||||
// }else{
|
||||
// return true
|
||||
// }
|
||||
},
|
||||
/**
|
||||
* 用于捕获节点拖拽操作结束的事件回调函数
|
||||
* @param event 事件对象
|
||||
* @param treeId 树形结构id
|
||||
* @param treeNodes 被拖拽的节点 JSON 数据集合
|
||||
* @param targetNode 成为 treeNodes 拖拽结束的目标节点 JSON 数据对象
|
||||
* @param moveType
|
||||
*/
|
||||
onDrop(event, treeId, treeNodes, targetNode, moveType) {
|
||||
console.log("用于捕获节点拖拽操作结束的事件回调函数");
|
||||
console.log("1111", treeId, treeNodes, moveType, targetNode);
|
||||
// 获取check的node下所有的节点,得到所有的id
|
||||
let nodes = this.treeObj.getSelectedNodes();
|
||||
let source_ids = [];
|
||||
nodes.forEach((item) => {
|
||||
source_ids.push(item.source_id);
|
||||
});
|
||||
let updateTree = (nodes, p_id) => {
|
||||
nodes.forEach((item) => {
|
||||
item.p_id = p_id;
|
||||
this.treeObj.updateNode(item);
|
||||
});
|
||||
};
|
||||
window.AllNodes = this.treeObj.getNodes();
|
||||
/* else {*/
|
||||
if (targetNode == null) {
|
||||
updatePid(
|
||||
{
|
||||
source_ids,
|
||||
p_id: "",
|
||||
trees: [
|
||||
{
|
||||
source_id: treeNodes[0].source_id,
|
||||
tree_index: treeNodes[0].getIndex(),
|
||||
},
|
||||
],
|
||||
},
|
||||
(res) => {
|
||||
// updateTree(nodes, -1);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
// let ParentNode = nodes[0].getParentNode();
|
||||
let Nodes = this.treeObj.getNodesByParam(
|
||||
"level",
|
||||
treeNodes[0].level,
|
||||
null
|
||||
);
|
||||
console.log("Nodes", Nodes, treeNodes);
|
||||
let trees = [];
|
||||
Nodes.forEach((item) => {
|
||||
trees.push({
|
||||
source_id: item.source_id,
|
||||
tree_index: item.getIndex(),
|
||||
});
|
||||
});
|
||||
let p_id = ["prev", "next"].includes(moveType)
|
||||
? targetNode.p_id
|
||||
: targetNode.source_id;
|
||||
if (p_id == "") {
|
||||
p_id = -1;
|
||||
}
|
||||
console.log("p_id", this.treeObj.getSelectedNodes());
|
||||
updatePid({ source_ids, p_id, trees }, (res) => {
|
||||
console.log(res);
|
||||
});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 用于捕获节点拖拽操作结束之前的事件<E4BA8B><E4BBB6>调函数,并且根据返回值确定是否允许此拖拽操作
|
||||
* @param treeId 树形结构id
|
||||
* @param treeNodes 被拖拽的节点 JSON 数据集合
|
||||
* @param targetNode treeNodes 被拖拽放开的目标节点 JSON 数据对象
|
||||
* @param moveType 指定移动到目标节点的相对位置《"inner":成为子节点,"prev":
|
||||
* 成为同级前一个节点,"next":成为同级后一个节点》
|
||||
* @returns {boolean} 返回 false,zTree 将恢复被拖拽的节点,也无法触发 onDrop 事件回调函数
|
||||
*/
|
||||
beforeDrop(treeId, treeNodes, targetNode, moveType) {
|
||||
if (
|
||||
["prev", "next", "inner"].includes(moveType) &&
|
||||
["pressModel", "terrainDig"].includes(treeNodes[0].source_type)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
if (["prev", "next"].includes(moveType)) {
|
||||
let parent = this.treeObj.getNodeByParam(
|
||||
"source_id",
|
||||
targetNode.p_id,
|
||||
null
|
||||
);
|
||||
if (
|
||||
parent &&
|
||||
!treeNodeOption.nodeType[parent.source_type].allowChildren
|
||||
)
|
||||
return false;
|
||||
}
|
||||
if (targetNode) {
|
||||
if (
|
||||
moveType == "inner" &&
|
||||
!treeNodeOption.nodeType[targetNode.source_type].allowChildren
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 用于捕获zTree上鼠标按键按下后的事件回调函数
|
||||
* @param event
|
||||
* @param treeId
|
||||
* @param treeNode
|
||||
*/
|
||||
onMouseDown(event, treeId, treeNode) {
|
||||
// console.log(treeNode);
|
||||
// window.treeNode = treeNode
|
||||
// treeNodeOption.cusSelectNode(this.treeObj, treeNode);
|
||||
/*this.$changeComponentShow(".rightMenu", false);
|
||||
this.treeObj.cancelSelectedNode()*/
|
||||
let isShift = event.shiftKey;
|
||||
let isCtrl = event.ctrlKey;
|
||||
if ((!isShift && !isCtrl) || !treeNode) {
|
||||
nodes = [];
|
||||
}
|
||||
if (treeNode) {
|
||||
nodes.push(treeNode);
|
||||
//根据编辑表单的回调,控制图层的勾选显示
|
||||
//判断是否是图层文件
|
||||
if (isCtrl) {
|
||||
let isSelected = this.treeObj
|
||||
.getSelectedNodes()
|
||||
.some((node) => node.source_id === treeNode.source_id);
|
||||
if (isSelected) {
|
||||
console.log("isSelected", isSelected, nodes);
|
||||
// 如果节点已选中,则取消选中
|
||||
nodes = nodes.filter(
|
||||
(node) => node.source_id !== treeNode.source_id
|
||||
);
|
||||
} else {
|
||||
// 如果节点未选中,则添加到选中列表
|
||||
nodes.push(treeNode);
|
||||
}
|
||||
}
|
||||
if (
|
||||
treeNode.source_type !== "directory" &&
|
||||
treeNode.source_type !== "layer"
|
||||
) {
|
||||
if (
|
||||
!(
|
||||
_entityMap.get(treeNode.source_id) &&
|
||||
_entityMap.get(treeNode.source_id).Dialog
|
||||
)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
_entityMap.get(treeNode.source_id).Dialog.showCallBack = () => {
|
||||
// 获取check的node下所有的节点,得到所有的id
|
||||
treeNode.is_show = !treeNode.is_show;
|
||||
let nodes = this.treeObj.transformToArray(treeNode);
|
||||
let source_ids = [];
|
||||
nodes.forEach((item) => {
|
||||
source_ids.push(item.source_id);
|
||||
});
|
||||
//根据source_id获取对应的资源更改其在地球上的显示状态
|
||||
let sourceStatus = (source_ids, status) => {
|
||||
source_ids.forEach((id) => {
|
||||
let source = window._entityMap.get(id);
|
||||
let node = this.treeObj.getNodeByParam("source_id", id, null);
|
||||
if (window.right_entityMap.get(treeNode.source_id))
|
||||
window.right_entityMap.get(treeNode.source_id).show = status;
|
||||
window._entityMap.get(treeNode.source_id).show = status;
|
||||
node.is_show = status;
|
||||
cusUpdateNode(node);
|
||||
});
|
||||
};
|
||||
// 调用接口更改数据库is_show的值
|
||||
if (treeNode.is_show)
|
||||
showSource({ source_ids }, (data) => {
|
||||
sourceStatus(source_ids, treeNode.is_show);
|
||||
});
|
||||
else
|
||||
hideSource({ source_ids }, (data) => {
|
||||
sourceStatus(source_ids, treeNode.is_show);
|
||||
});
|
||||
};
|
||||
}
|
||||
} else {
|
||||
this.treeObj.cancelSelectedNode();
|
||||
this.$changeComponentShow(".rightMenu", false);
|
||||
}
|
||||
},
|
||||
// onMouseDown(event, treeId, treeNode) {
|
||||
// let isShift = event.shiftKey;
|
||||
// let isCtrl = event.ctrlKey;
|
||||
|
||||
// // 如果点击的不是节点,清空选择并隐藏右键菜单
|
||||
// if (!treeNode) {
|
||||
// nodes = [];
|
||||
// this.treeObj.cancelSelectedNode();
|
||||
// this.$changeComponentShow(".rightMenu", false);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // 处理 Ctrl 键多选
|
||||
// if (isCtrl) {
|
||||
// let isSelected = this.treeObj
|
||||
// .getSelectedNodes()
|
||||
// .some((node) => node.source_id === treeNode.source_id);
|
||||
|
||||
// if (isSelected) {
|
||||
// console.log("isSelected");
|
||||
// // 如果节点已选中,则取消选中
|
||||
// this.treeObj.cancelSelectedNode(treeNode);
|
||||
// nodes = nodes.filter((node) => node.source_id !== treeNode.source_id);
|
||||
// } else {
|
||||
// console.log("如果节点未选中,则添加到选中列表");
|
||||
|
||||
// // 如果节点未选中,则添加到选中列表
|
||||
// this.treeObj.selectNode(treeNode, true);
|
||||
// nodes.push(treeNode);
|
||||
// }
|
||||
// /* nodes.forEach((item) => {
|
||||
// // this.treeObj.selectNode(item, true);
|
||||
// }); */
|
||||
// } else if (!isShift) {
|
||||
// // 如果没有按下Ctrl或Shift,则只选中当前节点
|
||||
// nodes = [treeNode];
|
||||
// this.treeObj.cancelSelectedNode();
|
||||
// this.treeObj.selectNode(treeNode, true);
|
||||
// } else {
|
||||
// // Shift 多选逻辑保持不变
|
||||
// nodes.push(treeNode);
|
||||
// }
|
||||
|
||||
// // 处理非目录和非图层类型的节点
|
||||
// if (
|
||||
// treeNode.source_type !== "directory" &&
|
||||
// treeNode.source_type !== "layer"
|
||||
// ) {
|
||||
// if (
|
||||
// !(
|
||||
// _entityMap.get(treeNode.source_id) &&
|
||||
// _entityMap.get(treeNode.source_id).Dialog
|
||||
// )
|
||||
// ) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// _entityMap.get(treeNode.source_id).Dialog.showCallBack = () => {
|
||||
// // 获取check的node下所有的节点,得到所有的id
|
||||
// treeNode.is_show = !treeNode.is_show;
|
||||
// let nodes = this.treeObj.transformToArray(treeNode);
|
||||
// let source_ids = [];
|
||||
// nodes.forEach((item) => {
|
||||
// source_ids.push(item.source_id);
|
||||
// });
|
||||
|
||||
// //根据source_id获取对应的资源更改其在地球上的显示状态
|
||||
// let sourceStatus = (source_ids, status) => {
|
||||
// source_ids.forEach((id) => {
|
||||
// let source = window._entityMap.get(id);
|
||||
// let node = this.treeObj.getNodeByParam("source_id", id, null);
|
||||
// if (window.right_entityMap.get(treeNode.source_id)) {
|
||||
// window.right_entityMap.get(treeNode.source_id).show = status;
|
||||
// }
|
||||
// window._entityMap.get(treeNode.source_id).show = status;
|
||||
// node.is_show = status;
|
||||
// cusUpdateNode(node);
|
||||
// });
|
||||
// };
|
||||
|
||||
// // 调用接口更改数据库is_show的值
|
||||
// if (treeNode.is_show) {
|
||||
// showSource({ source_ids }, (data) => {
|
||||
// sourceStatus(source_ids, treeNode.is_show);
|
||||
// });
|
||||
// } else {
|
||||
// hideSource({ source_ids }, (data) => {
|
||||
// sourceStatus(source_ids, treeNode.is_show);
|
||||
// });
|
||||
// }
|
||||
// };
|
||||
// } else {
|
||||
// this.treeObj.cancelSelectedNode();
|
||||
// this.$changeComponentShow(".rightMenu", false);
|
||||
// }
|
||||
// },
|
||||
onClick(e, treeId, treeNode, clickFlagNumber) {
|
||||
let isShift = e.shiftKey;
|
||||
let isCtrl = e.ctrlKey;
|
||||
// 点击文件夹,下面所有的source_id
|
||||
if (isShift) {
|
||||
if (nodes.length > 1) {
|
||||
//如果是按下shift键
|
||||
let pId = treeNode.p_id;
|
||||
let nodeIndexs = [];
|
||||
nodes.forEach((item) => {
|
||||
nodeIndexs.push(item.getIndex());
|
||||
});
|
||||
let Nodes = this.treeObj.getNodesByParam("p_id", pId, null);
|
||||
nodeIndexs.sort((x, y) => x - y);
|
||||
let minIndex = nodeIndexs[0];
|
||||
let maxIndex = nodeIndexs[nodeIndexs.length - 1];
|
||||
Nodes.forEach((item) => {
|
||||
let i = item.getIndex();
|
||||
if (i >= minIndex && i <= maxIndex) {
|
||||
this.treeObj.selectNode(item, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
if (isCtrl) {
|
||||
nodes.forEach((item) => {
|
||||
this.treeObj.selectNode(item, true);
|
||||
});
|
||||
}
|
||||
//物理沙盘-传输对方数据
|
||||
// if (nodes[0].source_type === 'point') {
|
||||
// ipcRenderer.send('setNodes', '110');
|
||||
// ipcRenderer.on("replayRenderer", (event, data) => {
|
||||
// this.$message.success(data)
|
||||
// });
|
||||
// }
|
||||
if (!isCtrl || !isShift) {
|
||||
let source_ids = [];
|
||||
console.log("treeNode", treeNode);
|
||||
// 判断是否是图层文件
|
||||
if (treeNode.source_type == "directory") {
|
||||
// 获取treeNode下面的所有souer_id
|
||||
if (treeNode.children) {
|
||||
treeNode.children.forEach((item) => {
|
||||
source_ids.push(item.source_id);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
source_ids.push(treeNode.source_id);
|
||||
}
|
||||
console.log("source_ids", source_ids);
|
||||
YJ.Global.splitScreen.setActiveId(source_ids);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 捕获 zTree 上鼠标双击之后的事件回调函数s
|
||||
* @param event
|
||||
* @param treeId
|
||||
* @param treeNode
|
||||
*/
|
||||
onDblClick(event, treeId, treeNode) {
|
||||
console.log("双击文件夹");
|
||||
let entity = window._entityMap.get(treeNode.source_id);
|
||||
//飞行漫游
|
||||
if (treeNode.source_type === "roam") {
|
||||
this.$message("单击鼠标右键可结束当前漫游");
|
||||
YJ.Global.FlyRoam.flyTo(window.Earth1, treeNode.detail.points);
|
||||
return;
|
||||
}
|
||||
// 轨迹运动
|
||||
if (treeNode.source_type === "path") {
|
||||
if (window.$PATH) {
|
||||
window.$PATH.viewFollow = false;
|
||||
}
|
||||
window.$PATH = entity;
|
||||
entity.viewFollow = true;
|
||||
return;
|
||||
} else {
|
||||
if (window.$PATH) {
|
||||
window.$PATH.viewFollow = false;
|
||||
}
|
||||
}
|
||||
if (treeNode.source_type === "Feature") {
|
||||
console.log("shon", treeNode);
|
||||
window._entityMap.get(treeNode.fid).flyTo(treeNode.source_id);
|
||||
return;
|
||||
}
|
||||
// "groundImage"
|
||||
if (treeNode.source_type === "groundImage") {
|
||||
window._entityMap.get(treeNode.source_id).load(() => {
|
||||
window._entityMap.get(treeNode.source_id).flyTo();
|
||||
});
|
||||
}
|
||||
if (
|
||||
treeNode.source_type === "node" ||
|
||||
treeNode.source_type === "element"
|
||||
) {
|
||||
let bim = window._entityMap
|
||||
.get(treeNode.fid)
|
||||
.featureFlyto(treeNode.source_id.split("_")[0]);
|
||||
|
||||
console.log("双击", bim, treeNode.source_id.split("_")[0]);
|
||||
return;
|
||||
}
|
||||
if (treeNode && entity) {
|
||||
window._entityMap.get(treeNode.source_id).flyTo();
|
||||
window.right_entityMap.get(treeNode.source_id) &&
|
||||
window.right_entityMap.get(treeNode.source_id).flyTo();
|
||||
// if (treeNode.source_type == "path") {
|
||||
// $root_home_index.$refs.editor.$refs.path.trajectoryObj[
|
||||
// treeNode.source_id + "obj"
|
||||
// ].cameraAttached = true;
|
||||
// window._entityMap.get(treeNode.source_id).playing = true;
|
||||
// } else {
|
||||
// if (treeNode.detail.hasOwnProperty("customView")) {
|
||||
// YJ.Global.flyTo(treeNode.detail.customView);
|
||||
// } else {
|
||||
// window._entityMap.get(treeNode.source_id).flyTo();
|
||||
// window.right_entityMap.get(treeNode.source_id) &&
|
||||
// window.right_entityMap.get(treeNode.source_id).flyTo();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 捕获 checkbox / radio 被勾选 或 取消勾选的事件回调函数
|
||||
* @param event
|
||||
* @param treeId
|
||||
* @param treeNode
|
||||
*/
|
||||
onCheck(event, treeId, treeNode) {
|
||||
console.log(treeNode);
|
||||
// 获取check的node下所有的节点,得到所有的id
|
||||
let nodes = this.treeObj.transformToArray(treeNode);
|
||||
let source_ids = [];
|
||||
nodes.forEach((item) => {
|
||||
if (item.isHidden == false) {
|
||||
source_ids.push(item.source_id);
|
||||
}
|
||||
});
|
||||
//根据source_id获取对应的资源更改其在地球上的显示状态
|
||||
let sourceStatus = (source_ids, status) => {
|
||||
source_ids.forEach((id) => {
|
||||
// let node1 = this.treeObj.getNodeByParam("source_id", id, null);
|
||||
// console.log("ddddddddddddddddddddddd", id, node1);
|
||||
// let source1 = window._entityMap.get(id);
|
||||
// console.log("source1", source1);
|
||||
// return;
|
||||
let source = window._entityMap.get(id);
|
||||
let node = this.treeObj.getNodeByParam("source_id", id, null);
|
||||
console.log("source", source, node);
|
||||
node.source_name = node.oldname || node.source_name;
|
||||
if (node.source_type == "Feature") {
|
||||
let shp = window._entityMap.get(node.fid);
|
||||
shp.setShow(status, id);
|
||||
return;
|
||||
}
|
||||
if (node.source_type == "FeatureCollection") {
|
||||
let shp = window._entityMap.get(node.fid);
|
||||
console.log("shp", shp);
|
||||
node.children.forEach((item) => {
|
||||
shp.setShow(status, item.source_id);
|
||||
console.log("item",status, item);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (["kml", "gdb", "shp"].includes(node.source_type)) {
|
||||
let entity = window._entityMap.get(node.source_id);
|
||||
if (entity) {
|
||||
entity.show = status;
|
||||
if (status) {
|
||||
return; // 如果是这些类型且status为true,直接返回,不执行后续逻辑
|
||||
}
|
||||
}
|
||||
}
|
||||
if (node.source_type == "node" || node.source_type == "element") {
|
||||
let bim = window._entityMap.get(node.fid);
|
||||
bim.featureShow(node.source_id.split("_")[0], status);
|
||||
}
|
||||
if (node.source_type == "roam") {
|
||||
let num;
|
||||
if (status) {
|
||||
num = Infinity;
|
||||
} else {
|
||||
num = 0;
|
||||
}
|
||||
node.detail.repeat = num;
|
||||
YJ.Global.FlyRoam.setRepeat(num);
|
||||
}
|
||||
if (window.right_entityMap.get(treeNode.source_id))
|
||||
window.right_entityMap.get(treeNode.source_id).show = status;
|
||||
if (node.source_type == "path") {
|
||||
let pathModel = window._entityMap.get(id);
|
||||
// console.log("pathModel+++++++++++++", pathModel, pathModel.modelShow);
|
||||
if (pathModel) {
|
||||
pathModel.show = status;
|
||||
// pathModel.modelShow = status;
|
||||
}
|
||||
} else {
|
||||
if (source) {
|
||||
source.show = status;
|
||||
} else {
|
||||
cusRenderNode(node);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
//调用接口更改数据库is_show的值
|
||||
if (treeNode.is_show) {
|
||||
showSource({ source_ids }, (data) => {
|
||||
console.log(data);
|
||||
sourceStatus(source_ids, treeNode.is_show);
|
||||
});
|
||||
} else {
|
||||
hideSource({ source_ids }, (data) => {
|
||||
console.log(data);
|
||||
sourceStatus(source_ids, treeNode.is_show);
|
||||
});
|
||||
}
|
||||
// YJ.Global.splitScreen.setActiveId([]);
|
||||
},
|
||||
},
|
||||
};
|
||||
export default tree;
|
Reference in New Issue
Block a user