|  | @@ -0,0 +1,110 @@
 | 
	
		
			
				|  |  | +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("修改同类表请求失败!");
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  };
 |