| 
					
				 | 
			
			
				@@ -87,6 +87,22 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         params.doc = rawNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CommonAjax.postEx("report_tpl_api/updateTreeRootNode", params, 5000, isAsync, callback, failCallback, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    partialUpdateTreeNode: function (rawNode, pathArray, nodeArray, isAsync, callback, failCallback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 这个是局部刷新,原理是根据topNodeId找到后台的topNode,根据路径(有多个路径,可以实现多个子节点同时刷新)来替换(nodeArray里的)后台数据库的相关节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 这里需要一个调整,就是新增目录及模板需要加给后缀(new(Date)).getTime() ,以保证不重叠(真重叠了算倒霉) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // path描述:{ operation_type: '', // 操作类型:‘update’ ‘add’、‘delete’ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //            node_path: [],      // 节点路径:如:['02.广东', '03.增城北绕线项目定制报表'],表示Top节点的items下的那个‘02.广东’子节点(要full scan)的items下的 ‘03.增城北绕线项目定制报表’子节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // nodeArray: 与pathArray一一对应 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let params = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.compilationId = rawNode.compilationId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.engineerId = rawNode.engineerId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.userId = rawNode.userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.pathArray = pathArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.nodeArray = nodeArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CommonAjax.postEx("report_tpl_api/partialUpdateTreeNode", params, 5000, isAsync, callback, failCallback, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     updateTopNodeName: function (topNode, isAsync, callback, failCallback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let params = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         params.compilationId = topNode.compilationId; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -128,6 +144,21 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getNodePath: function(node, includeCurrentNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (includeCurrentNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rst.push(node.name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let parentNode = node.getParentNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while (parentNode && parentNode.level > 0) { //顶节点是dummy的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rst.unshift(parentNode.name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            parentNode = parentNode.getParentNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (parentNode === null || parentNode === undefined || parentNode.level === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst.splice(0,1); // 删除头节点(后台不需要) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     buildSubRootNodeDoc: function(subNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this, rst = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (subNode) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -181,40 +212,40 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType === RT.NodeType.TEMPLATE) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (treeNode.level === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let addStr = "<span class='button star' id='addBtn_" + treeNode.tId + "' title='新增编办类型' onfocus='this.blur();'></span>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sObj.after(addStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let btn = $("#addBtn_"+treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (btn) btn.bind("click", function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let rawNode = me.createIniComilationNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!me.chkIfDupCompilationNode(rawNode, treeNode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    rawNode.userId = treeNode.userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    me.addNewNodeEx(rawNode, function(rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (rst) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            let newNodes = [], isSilent = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            rawNode.isParent = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            newNodes.push(rawNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (treeNode.items && treeNode.items.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                let insertIdx = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                for (let i = 0; i < treeNode.items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if (treeNode.items[i].compilationId === rawNode.compilationId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        if (treeNode.items[i].engineerId > rawNode.engineerId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            insertIdx = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                me.treeObj.addNodes(treeNode, 0, newNodes, isSilent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            alert("后台创建失败,请确认是否有重复类型跟节点!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    alert("有重复编办!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // let addStr = "<span class='button star' id='addBtn_" + treeNode.tId + "' title='新增编办类型' onfocus='this.blur();'></span>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // sObj.after(addStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // let btn = $("#addBtn_"+treeNode.tId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // if (btn) btn.bind("click", function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     let rawNode = me.createIniComilationNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     if (!me.chkIfDupCompilationNode(rawNode, treeNode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         rawNode.userId = treeNode.userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         me.addNewNodeEx(rawNode, function(rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //             if (rst) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 let newNodes = [], isSilent = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 rawNode.isParent = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 newNodes.push(rawNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 if (treeNode.items && treeNode.items.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                     let insertIdx = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                     for (let i = 0; i < treeNode.items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                         if (treeNode.items[i].compilationId === rawNode.compilationId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                             if (treeNode.items[i].engineerId > rawNode.engineerId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                                 insertIdx = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                     me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                     me.treeObj.addNodes(treeNode, 0, newNodes, isSilent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //                 alert("后台创建失败,请确认是否有重复类型跟节点!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         }, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //         alert("有重复编办!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子目录' onfocus='this.blur();'></span>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sObj.after(addStr); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -223,7 +254,7 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 me.getNewNodeID(1, function (newNodeID) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let rawNode = me.createIniNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     rawNode.nodeType = RT.NodeType.NODE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    rawNode.name = "新增子节点"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rawNode.name = "新增子节点" + (new Date()).getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     rawNode.ID = newNodeID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let newNodes = [], isSilent = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     newNodes.push(rawNode); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -242,12 +273,28 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let tn = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let newTopNode = me.buildRootNodeDoc(tn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let pathArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let nodeArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let path = {operation_type: 'add', node_path: []}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        path.node_path = me.getNodePath(treeNode, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pathArr.push(path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        nodeArr.push(rawNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        me.partialUpdateTreeNode(newTopNode, pathArr, nodeArr, true, function(rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (!(rst)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                alert("新增节点失败!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            me.refreshNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        /*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         me.updateTreeRootNode(newTopNode, true, function(rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (!(rst)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 alert("新增节点失败!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             me.refreshNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         }, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -260,7 +307,7 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     me.getNewNodeID(1, function (newNodeID) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let rawNode = me.createIniNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         rawNode.nodeType = RT.NodeType.TEMPLATE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        rawNode.name = "新增报表模板"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        rawNode.name = "新增报表模板" + (new Date()).getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         rawNode.ID = newNodeID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         rawNode.released = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let newNodes = [], isSilent = false; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -268,12 +315,27 @@ let zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         me.treeObj.addNodes(treeNode, -1, newNodes, isSilent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let tn = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let topNode = me.buildRootNodeDoc(tn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let pathArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let nodeArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let path = {operation_type: 'add', node_path: []}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        path.node_path = me.getNodePath(treeNode, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pathArr.push(path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        nodeArr.push(rawNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        me.partialUpdateTreeNode(topNode, pathArr, nodeArr, true, function(rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (!(rst)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                alert("新增节点失败!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            me.refreshNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        /*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         me.updateTreeRootNode(topNode, true, function(rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (!(rst)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 alert("新增空白模板失败!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             me.refreshNodes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         }, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        //*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 |