/** * Created by Tony on 2017/4/27. */ var pageOprObj = { rationLibName : null, rationLibId : null, initPage : function() { var me = this, rationLibId = getQueryString("repository"),//获取定额库参数 rationLibName = storageUtil.getSessionCache("RationGrp","repositoryID_" + rationLibId); if (rationLibName) { var html = $("#rationname")[0].outerHTML; html = html.replace("XXX定额库", rationLibName); $("#rationname")[0].outerHTML = html; me.rationLibName = rationLibName; me.rationLibId = rationLibId; zTreeOprObj.getRationTree(rationLibId); } } } var zTreeOprObj = { treeObj: null, getRationTree: function(rationLibId){ var me = this; $.ajax({ type:"POST", url:"api/getRationTree", data:{"rationLibId": rationLibId}, dataType:"json", cache:false, timeout:20000, success:function(result,textStatus,status){ if(status.status == 200) { if (result.data.length > 0) { storageUtil.setSessionCache("RationGrp","repositoryID",result.data[0].rationRepId); } zTreeHelper.createTree(result.data, setting, "rationChapterTree", me); } }, error:function(err){ alert(err.responseJSON.error); } }) }, addRootNode: function() { $('#addRootA').css("opacity", "0.2"); $('#addRootA').addClass("disabled"); var me = zTreeOprObj, rawNode = {ParentID: -1, NextSiblingID: -1, name: "新增节点"}, lastNodeId = -1; if (me.treeObj) { var rootNodes = me.treeObj.getNodes(); if (rootNodes.length > 0) { lastNodeId = rootNodes[rootNodes.length - 1].ID; } } me.addNewNode(rawNode, lastNodeId, function(err, rst){ if (!(err)) { if(rootNodes.length > 0){ rootNodes[rootNodes.length - 1].NextSiblingID = rst.data.ID; } var newNodes = [], isSilent = false; newNodes.push({ rationRepId: rst.data.rationRepId, Previous_ID: lastNodeId, ID: rst.data.ID, ParentID:-1, NextSiblingID:-1, name:"新增节点",isParent:false, items:[]}); if (me.treeObj) { me.treeObj.addNodes(null, -1, newNodes, isSilent); } else { me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes); } $('#addRootA').css("opacity", ""); $('#addRootA').removeClass("disabled"); } }); }, addNewNode : function(rawNode, lastNodeId, callback){ $.ajax({ type:"POST", url:"api/createNewNode", data:{"rationLibId":pageOprObj.rationLibId,"lastNodeId": lastNodeId, "lastOpr": userAccount, "rawNodeData": JSON.stringify(rawNode)}, dataType:"json", cache:false, timeout:1000, success: function(result,textStatus,status){ callback(false, result); }, error:function(err){ callback(err); } }) }, beforeRename: function(treeId, treeNode, newName, isCancel) { if (newName.length == 0) { return false; } return true; }, onRename : function(e, treeId, treeNode, isCancel) { var nodes = []; nodes.push(treeNode); zTreeOprObj.updateNodes(nodes); }, onBeforeRemove: function(treeId, treeNode){ var nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1; if (preNode) { preNodeId = preNode.ID; } private_fetchAllSubItems = function(pItem){ nodeIds.push(pItem.ID); if (pItem.items && pItem.items.length > 0) { for (var i = 0; i < pItem.items.length; i++) { private_fetchAllSubItems(pItem.items[i]); } } }; nodeIds.push(treeNode.ID); for (var i = 0; i < treeNode.items.length; i++) { private_fetchAllSubItems(treeNode.items[i]); } $.ajax({ type:"POST", url:"api/deleteNodes", data:{"repId": pageOprObj.rationLibId, "lastOpr": userAccount, "nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID}, dataType:"json", cache:false, timeout:5000, success:function(result,textStatus,status){ var pNode = treeNode.getParentNode(); if (pNode && pNode.items && pNode.items.length == 1) { pNode.isParent = false; } }, error:function(){ } }); return true; }, onRemove: function(e, treeId, treeNode){ var me = zTreeOprObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId); if (pNode && pNode.items && pNode.items.length == 0) { pNode.isParent = false; me.treeObj.refresh(); //me.treeObj.updateNode(pNode, false); //这方法有后遗症,多次操作后会造成节点新增子节点时,父节点icon显示不正确 } }, beforeDrop: function (treeId, treeNodes, targetNode, moveType) { let me = zTreeOprObj; if(moveType){ me.treeObj.setting.edit.enable = false; let treeNode = treeNodes[0], updateNodes = []; //升级 if(treeNode.level !== targetNode.level && moveType === 'prev'){ if(treeNode.Previous_ID !== -1){ treeNode.getPreNode().NextSiblingID = treeNode.NextSiblingID; updateNodes.push(treeNode.getPreNode()); } if(treeNode.NextSiblingID !== -1){ treeNode.getNextNode().Previous_ID = treeNode.Previous_ID; } if(targetNode.Previous_ID !== -1){ targetNode.getPreNode().NextSiblingID = treeNode.ID; updateNodes.push(targetNode.getPreNode()); } treeNode.ParentID = targetNode.getParentNode() ? targetNode.getParentNode().ID : -1; treeNode.NextSiblingID = targetNode.ID; treeNode.Previous_ID = targetNode.Previous_ID; targetNode.Previous_ID = treeNode.ID; updateNodes.push(treeNode); //updateNodes.push(targetNode); } //升级 else if(treeNode.level !== targetNode.level && moveType === 'next'){ if(treeNode.Previous_ID !== -1){ treeNode.getPreNode().NextSiblingID = treeNode.NextSiblingID; updateNodes.push(treeNode.getPreNode()); } if(treeNode.NextSiblingID !== -1){ treeNode.getNextNode().Previous_ID = treeNode.Previous_ID; } if(targetNode.NextSiblingID !== -1){ targetNode.getNextNode().Previous_ID = treeNode.ID; } treeNode.NextSiblingID = targetNode.NextSiblingID; treeNode.Previous_ID = targetNode.ID; treeNode.ParentID = targetNode.getParentNode() ? targetNode.getParentNode().ID : -1; targetNode.NextSiblingID = treeNode.ID; updateNodes.push(treeNode); updateNodes.push(targetNode); } //上移 else if(treeNode.level === targetNode.level && moveType === 'prev'){ console.log(1); if(targetNode.Previous_ID !== -1){ let targetPrev = me.treeObj.getNodeByParam('ID', targetNode.Previous_ID, null); targetPrev.NextSiblingID = treeNode.ID; updateNodes.push(targetPrev); } targetNode.NextSiblingID = treeNode.NextSiblingID; treeNode.NextSiblingID = targetNode.ID; treeNode.Previous_ID = targetNode.Previous_ID; targetNode.Previous_ID = treeNode.ID; updateNodes.push(treeNode); updateNodes.push(targetNode); } //下移 else if(treeNode.level === targetNode.level && moveType === 'next'){ if(treeNode.Previous_ID !== -1){ let treeNodePrev = me.treeObj.getNodeByParam('ID', treeNode.Previous_ID, null); treeNodePrev.NextSiblingID = targetNode.ID; updateNodes.push(treeNodePrev); } treeNode.Previous_ID = targetNode.ID; treeNode.NextSiblingID = targetNode.NextSiblingID; targetNode.Previous_ID = treeNode.Previous_ID; targetNode.NextSiblingID = treeNode.ID; updateNodes.push(treeNode); updateNodes.push(targetNode); } // else if(moveType === 'inner'){ if( treeNode.Previous_ID !== -1){ treeNode.getPreNode().NextSiblingID = treeNode.NextSiblingID; updateNodes.push(treeNode.getPreNode()); } if(treeNode.NextSiblingID !== -1){ treeNode.getNextNode().Previous_ID = treeNode.Previous_ID; } if(targetNode.items.length > 0){ targetNode.items[targetNode.items.length -1].NextSiblingID = treeNode.ID; treeNode.Previous_ID = targetNode.items[targetNode.items.length -1].ID; updateNodes.push(targetNode.items[targetNode.items.length -1]); } else{ treeNode.Previous_ID = -1; } treeNode.ParentID = targetNode.ID; treeNode.NextSiblingID = -1; updateNodes.push(treeNode); } if(updateNodes.length > 0){ me.updateNodes(updateNodes, function () { me.treeObj.setting.edit.enable= true; }); } } }, onDrop: function (event, treeId, treeNodes, targetNode, moveType) { }, updateNodes: function(nodes, callback){ if (nodes && nodes.length > 0) { var reqData = [] for (var i = 0; i < nodes.length; i++) { var node = {}; node.rationRepId = nodes[i].rationRepId; node.ID = nodes[i].ID; node.ParentID = nodes[i].ParentID; node.NextSiblingID = nodes[i].NextSiblingID; node.name = nodes[i].name; if (nodes[i].__v != null) node.__v = nodes[i].__v + 1 else node.__v = 0; reqData.push(node); } console.log(reqData); $.ajax({ type:"POST", url:"api/updateNodes", data:{"repId": pageOprObj.rationLibId,"lastOpr": userAccount, "nodes": JSON.stringify(reqData)}, dataType:"json", cache:false, timeout:5000, success:function(result,textStatus,status){ if(callback){ callback(); } console.log(status + ' : ' + result); }, error:function(){ } }) } }, addHoverDom: function(treeId, treeNode) { if(typeof treeNode.doing !== 'undefined' && treeNode.doing){ return false; } hoverOpr(); function hoverOpr(){ var me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span"); if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return; var addStr = ""; sObj.after(addStr); var btn = $("#addBtn_"+treeNode.tId); if (btn) btn.bind("click", function(){ treeNode.doing = true; var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, name: "新增子节点"}, lastNodeId = -1, lastNode = null; if (treeNode.items.length > 0) { lastNodeId = treeNode.items[treeNode.items.length - 1].ID; lastNode = treeNode.items[treeNode.items.length - 1]; } zTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){ if (!(err)) { var newNodes = [], isSilent = false; if (lastNode) { lastNode.NextSiblingID = rst.ID; } newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, Previous_ID: lastNodeId, ParentID: rst.data.ParentID, NextSiblingID:-1, name:"新增子节点",isParent:false, items:[]}); treeNode.isParent = true; console.log(newNodes); if (me.treeObj) { me.treeObj.addNodes(treeNode, -1, newNodes, isSilent); } else { me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes); } } treeNode.doing = false; hoverOpr(); }); }); } }, removeHoverDom: function(treeId, treeNode) { $("#addBtn_"+treeNode.tId).unbind().remove(); }, onClick: function(event,treeId,treeNode) { console.log(`treeNode`); console.log(treeNode); var sectionID = treeNode.ID; if (!(treeNode.items) || treeNode.items.length == 0) { rationOprObj.getRationItems(sectionID); } else { sheetCommonObj.cleanSheet(rationOprObj.workBook.getSheet(0), rationOprObj.setting, -1); sheetCommonObj.shieldAllCells(rationOprObj.workBook.getSheet(0)); } sheetCommonObj.cleanSheet(rationGLJOprObj.sheet, rationGLJOprObj.setting, -1); sheetCommonObj.shieldAllCells(rationGLJOprObj.sheet); } };