'use strict' let rptTplObj = { iniPage: function() { let me = this zTreeOprObj.getReportTemplateTree(RT.GrpType.CONSTRUCT); } } let zTreeOprObj = { treeObj: null, currentNode: null, getReportTemplateTree: function(grpType) { let me = zTreeOprObj, params = {}; params.grpType = grpType; params.userId = userID; params.tplType = RT.TplType.ALL; CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){ zTreeHelper.createTree(result, setting, "rptTplTree", me); me.refreshNodes(); }, null, null ); }, refreshNodes: function() { let me = this; let private_setupIsParent = function(node){ if (node.nodeType == RT.NodeType.NODE) { node.isParent = true; } else { node.isParent = false; } if (node.items && node.items.length) { for (let i = 0; i < node.items.length; i++) { private_setupIsParent(node.items[i]); } } }; let topNodes = me.treeObj.getNodes(); for (let i = 0; i < topNodes.length; i++) { private_setupIsParent(topNodes[i]); } me.treeObj.refresh(); }, addRootNode: function() { let me = this, rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null; if (me.treeObj) { let rootNodes = me.treeObj.getNodes(); if (rootNodes.length > 0) { lastNodeId = rootNodes[rootNodes.length - 1].ID; lastNode = rootNodes[rootNodes.length - 1]; } me.addNewNode(rawNode, lastNodeId, function(rst){ let newNodes = [], isSilent = false; if (lastNode) { lastNode.NextSiblingID = rst.ID; } rawNode.ID = rst.ID; rawNode.isParent = true; rawNode.items = []; newNodes.push(rawNode); if (me.treeObj) { me.treeObj.addNodes(null, -1, newNodes, isSilent); } else { me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes); } }, null); } }, updateNodes: function(nodes){ if (nodes && nodes.length > 0) { let me = this; for (let i = 0; i < nodes.length; i++) { if (nodes[i].__v != null) node.__v = nodes[i].__v + 1 else nodes[i].__v = 0; } let params = {}; params.nodes = nodes; CommonAjax.postEx("report_tpl_api/updateTptTplNodes", params, 5000, true, null, null, null); } }, addTplNode: function (){ let me = this; if (me.currentNode) { let rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null; rawNode.nodeType = RT.NodeType.TEMPLATE; rawNode.ParentID = me.currentNode.ID; rawNode.name = "新增报表模板"; if (me.treeObj) { let nodes = me.currentNode.items; if (nodes.length > 0) { lastNodeId = nodes[nodes.length - 1].ID; lastNode = nodes[nodes.length - 1]; } me.addNewNode(rawNode, lastNodeId, function(rst){ let newNodes = [], isSilent = false; if (lastNode) { lastNode.NextSiblingID = rst.ID; } rawNode.ID = rst.ID; rawNode.isParent = false; rawNode.items = []; newNodes.push(rawNode); if (me.treeObj) { me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent); } else { me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes); } }, null); } } }, addNewNode: function(rawNode, lastNodeId, callback, failcallback) { let params = {}; params.lastNodeId = lastNodeId; params.rawNodeData = rawNode; CommonAjax.postEx("report_tpl_api/createTplTreeNode", params, 5000, true, callback, failcallback, null); }, createIniRootNode: function() { let rst = { ID: -1, ParentID: -1, NextSiblingID: -1, grpType: RT.GrpType.CONSTRUCT, nodeType: RT.NodeType.NODE, tplType: RT.TplType.ALL, userId: userID, refId: -1, name: '新增节点' }; return rst; }, createNodeFromZTreeNode: function(treeNode) { let rst = {}; rst.ID = treeNode.ID; rst.ParentID = treeNode.ParentID; rst.NextSiblingID = treeNode.NextSiblingID; rst.grpType = treeNode.grpType; rst.nodeType = treeNode.nodeType; rst.tplType = treeNode.tplType; rst.userId = treeNode.userId; rst.refId = treeNode.refId; rst.name = treeNode.name; return rst; }, addHoverDom: function(treeId, treeNode) { let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span"); if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType == RT.NodeType.TEMPLATE) return; let addStr = ""; sObj.after(addStr); let btn = $("#addBtn_"+treeNode.tId); if (btn) btn.bind("click", function(){ let rawNode = me.createIniRootNode(), lastNodeId = -1, insertIdx = -1, lastNode = null; rawNode.ParentID = treeNode.ID; rawNode.name = "新增子节点"; if (treeNode.items.length > 0) { for (let i = treeNode.items.length - 1; i >= 0; i--) { if (treeNode.items[i].nodeType == RT.NodeType.NODE) { lastNodeId = treeNode.items[i].ID; lastNode = treeNode.items[i]; rawNode.NextSiblingID = treeNode.items[i].NextSiblingID; insertIdx = i + 1; break; } else { rawNode.NextSiblingID = treeNode.items[i].ID; insertIdx = i; } } } zTreeOprObj.addNewNode(rawNode, lastNodeId, function(rst){ let newNodes = [], isSilent = false; if (lastNode) { lastNode.NextSiblingID = rst.ID; } rawNode.ID = rst.ID; rawNode.NextSiblingID = rst.NextSiblingID; rawNode.isParent = true; rawNode.items = []; newNodes.push(rawNode); treeNode.isParent = true; if (me.treeObj) { me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent); } else { me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes); } }, null); }); }, removeHoverDom: function(treeId, treeNode) { $("#addBtn_"+treeNode.tId).unbind().remove(); }, onBeforeRemove: function(treeId, treeNode){ let nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1, canRemove = false, params = {}; if (preNode) { preNodeId = preNode.ID; } let private_fetchAllSubItems = function(pItem){ nodeIds.push(pItem.ID); if (pItem.items && pItem.items.length > 0) { for (let i = 0; i < pItem.items.length; i++) { private_fetchAllSubItems(pItem.items[i]); } } }; nodeIds.push(treeNode.ID); for (let i = 0; i < treeNode.items.length; i++) { private_fetchAllSubItems(treeNode.items[i]); } params.nodeIds = nodeIds; params.preNodeId = preNodeId; params.preNodeNextId = treeNode.NextSiblingID; CommonAjax.postEx("report_tpl_api/deleteTptTplNodes", params, 5000, false, function(data){ canRemove = true; }, null, null); return canRemove; }, onRemove: function(e, treeId, treeNode){ let me = zTreeOprObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId); if (pNode && pNode.items && pNode.items.length == 0) { if (pNode.nodeType == RT.NodeType.NODE) pNode.isParent = true else pNode.isParent = false; me.treeObj.refresh(); } }, beforeRename: function(treeId, treeNode, newName, isCancel) { if (newName.length == 0) { return false; } return true; }, onRename : function(e, treeId, treeNode, isCancel) { let me = zTreeOprObj, nodes = []; nodes.push(me.createNodeFromZTreeNode(treeNode)); me.updateNodes(nodes); }, onClick: function(event,treeId,treeNode) { let me = zTreeOprObj; if (treeNode.nodeType == RT.NodeType.NODE) { me.currentNode = treeNode; } else if (treeNode.nodeType == RT.NodeType.TEMPLATE) { me.currentNode = null; } } }