const associationOprObj = { treeObj: null, iniAssociateNodes: function(allTopTplNodes) { // 同类表初始化 const me = associationOprObj; zTreeHelper.createTreeDirectly( allTopTplNodes, associationSetting, "tpl_data_info_association", associationOprObj ); me.treeObj.expandAll(true); const topNodes = me.treeObj.getNodes(); const private_setup_checked = function (itemNode) { if (itemNode.nodeType === RT.NodeType.NODE) { me.treeObj.setChkDisabled(itemNode, true); } else if (itemNode.nodeType === RT.NodeType.TEMPLATE) { me.treeObj.checkNode(itemNode, false); // 在初始化时,默认是不选;只有用户选择了具体的某一个表时,才会更新选择 } if (itemNode.items && itemNode.items.length > 0) { for (let subItem of itemNode.items) { private_setup_checked(subItem); } } }; for (let node of topNodes) { me.treeObj.setChkDisabled(node, true); if (node.items && node.items.length > 0) { for (let item of node.items) { me.treeObj.setChkDisabled(item, true); private_setup_checked(item); } } } }, refreshNodes: function (refNode) { const me = this; // 不管三七二十一,先把所有节点的check给清除 const setUnCheck = (itemNode) => { me.treeObj.checkNode(itemNode, false); if (itemNode.items && itemNode.items.length > 0) { for (let subItem of itemNode.items) { setUnCheck(subItem); } } }; const topNodes = me.treeObj.getNodes(); topNodes.forEach(node => { setUnCheck(node); }); const checkRefTpl = (itemNodes, associateRefIds) => { for (const itemNode of itemNodes) { if (itemNode.nodeType === RT.NodeType.TEMPLATE) { if (associateRefIds.includes(itemNode.refId)) { me.treeObj.checkNode(itemNode, true); } } else { if (itemNode.items && itemNode.items.length > 0) { checkRefTpl(itemNode.items, associateRefIds); } } } }; $("#hasAssociationChk").get(0).checked = false; if (refNode && refNode.nodeType === RT.NodeType.TEMPLATE) { if (refNode.associateRefIds && refNode.associateRefIds.length > 0) { $("#hasAssociationChk").get(0).checked = true; checkRefTpl(topNodes, refNode.associateRefIds); } } }, getCheckedRefIds: function() { const me = associationOprObj; const rst = []; const getCheckedId = (itemNodes) => { for (const itemNode of itemNodes) { if (itemNode.nodeType === RT.NodeType.TEMPLATE && itemNode.checked) { rst.push(itemNode.refId); } if (itemNode.items && itemNode.items.length > 0) { getCheckedId(itemNode.items); } } }; if (me.treeObj) { const topNodes = me.treeObj.getNodes(); getCheckedId(topNodes); } return rst; }, onCheck: function(event, treeId, treeNode) { const me = associationOprObj; if (zTreeOprObj.currentNode) { // 不考虑细节交互了,直接从头到尾扫一遍,重新整理associateRefIds信息,最后更新 zTreeOprObj.currentNode.associateRefIds = me.getCheckedRefIds(); if (zTreeOprObj.currentNode.associateRefIds.length > 0) { $("#hasAssociationChk").get(0).checked = true; } else { $("#hasAssociationChk").get(0).checked = false; } const topPNode = zTreeOprObj.getParentNodeByNodeLevel(zTreeOprObj.currentNode, NODE_LEVEL_COMPILATION_NEW); const newTopNode = zTreeOprObj.buildRootNodeDoc(topPNode); zTreeOprObj.updateTreeRootNode(newTopNode, true, function (rst) { if (!rst) { alert("修改同类表请求失败!"); } }); } }, };