ソースを参照

定制模板-前期准备

TonyKang 7 年 前
コミット
fb91be9ef1

+ 4 - 0
lib/ztree/css/zTreeStyle.css

@@ -70,12 +70,16 @@ website:	http://code.google.com/p/jquerytree/
 .ztree li span.button.bottom_docu{background-position:-56px -36px}
 .ztree li span.button.noline_docu{ background:none;}
 
+.ztree li span.button.star {margin-right:2px; background-position:-126px -64px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.blue_core {margin-right:2px; background-position:-126px -16px; vertical-align:top; *vertical-align:middle}
+
 .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
 .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
 .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
 .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
 .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
 
+
 .ztree li span.button.ico_loading{margin-right:2px; background:url(img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
 
 ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}

+ 13 - 5
modules/reports/controllers/rpt_tpl_controller.js

@@ -95,13 +95,21 @@ let mExport = {
         let params = JSON.parse(req.body.params),
             compilationId = params.compilationId,
             userId = params.userId,
+            sessionUserId = null,
             engineerId = params.engineerId;
-        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
-        let userIds = [];
-        userIds.push(userId);
-        if (userId != "-100") {
-            userIds.push("-100");
+        let userIds = ["-100"];
+        if (req.session.sessionUser && req.session.sessionUser.id) sessionUserId = req.session.sessionUser.id;
+        if (userId !== null) {
+            if (typeof userId === "string") {
+                if (userIds.indexOf(userId) < 0) userIds.push(userId);
+            } else if (userId instanceof Array) {
+                for (let uid of userId) {
+                    userIds.push(uid);
+                }
+            }
+        } else {
         }
+        if (sessionUserId && userIds.indexOf(sessionUserId) < 0) userIds.push(sessionUserId);
         if (!compilationId) {
             compilationId = req.session.sessionCompilation._id;
         }

+ 212 - 227
web/maintain/report/js/rpt_tpl_main.js

@@ -10,6 +10,10 @@ const IDMark_Switch = "_switch",
     IDMark_Ul = "_ul",
     IDMark_A = "_a";
 
+const NODE_LEVEL_COMPILATION_OLD = 0,
+    NODE_LEVEL_COMPILATION_NEW = 1,
+    NODE_LEVEL_USER = 0;
+
 let rptTplObj = {
     iniPage: function() {
         zTreeOprObj.iniEngineerIdList();
@@ -20,9 +24,8 @@ let rptTplObj = {
         calculationTreeOprObj.buildRunType();
         calculationTreeOprObj.buildExprTemplates();
         preHandleObj.buildTypeData();
-        userListObj.bindEvent();
     }
-}
+};
 
 let zTreeOprObj = {
     treeObj: null,
@@ -49,7 +52,8 @@ let zTreeOprObj = {
     refreshNodes: function() {
         let me = this;
         let private_setupIsParent = function(node){
-            if (node.nodeType === RT.NodeType.NODE || node.level === 0) {
+            // if (node.nodeType === RT.NodeType.NODE || node.level === 0) {
+            if (node.nodeType === RT.NodeType.NODE || node.level <= NODE_LEVEL_COMPILATION_NEW) {
                 node.isParent = true;
             } else {
                 node.isParent = false;
@@ -132,9 +136,6 @@ let zTreeOprObj = {
             let isReleased = false;
             if (subNode.nodeType === RT.NodeType.TEMPLATE) {
                 isReleased = subNode.checked;
-                // if (subNode.hasOwnProperty("released")) {
-                //     isReleased = subNode.released;
-                // }
             }
             rst = {
                 nodeType: subNode.nodeType,
@@ -157,9 +158,6 @@ let zTreeOprObj = {
                     let isReleased = false;
                     if (item.nodeType === RT.NodeType.TEMPLATE) {
                         isReleased = item.checked;
-                        // if (item.hasOwnProperty("released")) {
-                        //     isReleased = item.released;
-                        // }
                     }
                     let ir = {};
                     ir.nodeType = item.nodeType;
@@ -178,87 +176,117 @@ let zTreeOprObj = {
     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 = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子目录' onfocus='this.blur();'></span>";
-        sObj.after(addStr);
-        let btn = $("#addBtn_"+treeNode.tId);
-        if (btn) btn.bind("click", function(){
-            me.getNewNodeID(1, function (newNodeID) {
-                let rawNode = me.createIniNode();
-                rawNode.nodeType = RT.NodeType.NODE;
-                rawNode.name = "新增子节点";
-                rawNode.ID = newNodeID;
-                let newNodes = [], isSilent = false;
-                newNodes.push(rawNode);
-                if (me.treeObj) {
-                    let insertIdx = -1;
-                    if (treeNode.items && treeNode.items.length > 0) {
-                        for (let i = treeNode.items.length - 1; i >= 0; i--) {
-                            if (treeNode.items[i].nodeType === RT.NodeType.NODE) {
-                                insertIdx = i + 1;
-                                break;
+        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 {
-                                insertIdx = i;
+                                me.treeObj.addNodes(treeNode, 0, newNodes, isSilent);
                             }
+                        } else {
+                            alert("后台创建失败,请确认是否有重复类型跟节点!")
                         }
-                    }
-                    me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent);
-                    let tn = me.getTopNodeByCurrentNode(treeNode);
-                    let newTopNode = me.buildRootNodeDoc(tn);
-                    me.updateTreeRootNode(newTopNode, true, function(rst){
-                        if (!(rst)) {
-                            alert("新增节点失败!");
-                        }
-                        me.refreshNodes();
                     }, null);
+                } else {
+                    alert("有重复编办及工程类型!");
                 }
             });
-        });
+        } else {
+            let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子目录' onfocus='this.blur();'></span>";
+            sObj.after(addStr);
+            let btn = $("#addBtn_"+treeNode.tId);
+            if (btn) btn.bind("click", function(){
+                me.getNewNodeID(1, function (newNodeID) {
+                    let rawNode = me.createIniNode();
+                    rawNode.nodeType = RT.NodeType.NODE;
+                    rawNode.name = "新增子节点";
+                    rawNode.ID = newNodeID;
+                    let newNodes = [], isSilent = false;
+                    newNodes.push(rawNode);
+                    if (me.treeObj) {
+                        let insertIdx = -1;
+                        if (treeNode.items && treeNode.items.length > 0) {
+                            for (let i = treeNode.items.length - 1; i >= 0; i--) {
+                                if (treeNode.items[i].nodeType === RT.NodeType.NODE) {
+                                    insertIdx = i + 1;
+                                    break;
+                                } else {
+                                    insertIdx = i;
+                                }
+                            }
+                        }
+                        me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent);
+                        let tn = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW);
+                        let newTopNode = me.buildRootNodeDoc(tn);
+                        me.updateTreeRootNode(newTopNode, true, function(rst){
+                            if (!(rst)) {
+                                alert("新增节点失败!");
+                            }
+                            me.refreshNodes();
+                        }, null);
+                    }
+                });
+            });
+            addStr = "<span class='button blue_core' id='addBtn2_" + treeNode.tId + "' title='新增报表模板' onfocus='this.blur();'></span>";
+            sObj.after(addStr);
+            btn = $("#addBtn2_"+treeNode.tId + "");
+            if (btn) btn.bind("click", function(){
+                // let me = zTreeOprObj;
+                if (treeNode.nodeType === RT.NodeType.NODE || treeNode.level === NODE_LEVEL_COMPILATION_NEW) {
+                    me.getNewNodeID(1, function (newNodeID) {
+                        let rawNode = me.createIniNode();
+                        rawNode.nodeType = RT.NodeType.TEMPLATE;
+                        rawNode.name = "新增报表模板";
+                        rawNode.ID = newNodeID;
+                        rawNode.released = false;
+                        let newNodes = [], isSilent = false;
+                        newNodes.push(rawNode);
+                        me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
+                        let tn = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW);
+                        let topNode = me.buildRootNodeDoc(tn);
+                        me.updateTreeRootNode(topNode, true, function(rst){
+                            if (!(rst)) {
+                                alert("新增空白模板失败!");
+                            }
+                            me.refreshNodes();
+                        }, null);
+                    });
+                }
+            });
+        }
     },
     removeHoverDom: function(treeId, treeNode) {
         $("#addBtn_"+treeNode.tId).unbind().remove();
+        $("#addBtn2_"+treeNode.tId).unbind().remove();
     },
     addNewNodeEx: function(rawNode, callback, failCallback) {
         let params = {};
         params.doc = rawNode;
         CommonAjax.postEx("report_tpl_api/createTreeRootNode", params, 5000, true, callback, failCallback, null);
     },
-    moveUpNode: function() {
-        let me = this;
-        if (me.currentNode && me.currentNode.getPreNode() && me.currentNode.level > 0) {
-            let preNode = me.currentNode.getPreNode();
-            if (preNode.nodeType === me.currentNode.nodeType) {
-                me.treeObj.moveNode(preNode, me.currentNode, "prev", true);
-                //then update the db
-                let topPNode = me.getTopNodeByCurrentNode(preNode);
-                let newTopNode = me.buildRootNodeDoc(topPNode);
-                me.updateTreeRootNode(newTopNode, true, function(rst){
-                    if (!(rst)) {
-                        alert("移动请求失败!");
-                    }
-                });
-            }
-        }
-    },
-    moveDownNode: function() {
-        let me = this;
-        if (me.currentNode && me.currentNode.getNextNode() && me.currentNode.level > 0) {
-            let nextNode = me.currentNode.getNextNode();
-            if (nextNode.nodeType === me.currentNode.nodeType) {
-                me.treeObj.moveNode(nextNode, me.currentNode, "next", true);
-                //then update the db
-                let topPNode = me.getTopNodeByCurrentNode(nextNode);
-                let newTopNode = me.buildRootNodeDoc(topPNode);
-                me.updateTreeRootNode(newTopNode, true, function(rst){
-                    if (!(rst)) {
-                        alert("移动请求失败!");
-                    }
-                });
-            }
-        }
-    },
     oncheck: function (event, treeId, treeNode) {
         let me = zTreeOprObj;
-        let topPNode = me.getTopNodeByCurrentNode(treeNode);
+        let topPNode = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW);
         let newTopNode = me.buildRootNodeDoc(topPNode);
         me.updateTreeRootNode(newTopNode, true, function(rst){
             if (!(rst)) {
@@ -279,8 +307,8 @@ let zTreeOprObj = {
     onBeforeDrop: function (treeId, treeNodes, targetNode, moveType, isCopy) {
         let me = zTreeOprObj, rst = true;
         let srcNode = treeNodes[0];
-        let sourceTopNode = me.getTopNodeByCurrentNode(srcNode);
-        let targetTopNode = me.getTopNodeByCurrentNode(targetNode);
+        let sourceTopNode = me.getParentNodeByNodeLevel(srcNode, NODE_LEVEL_COMPILATION_NEW);
+        let targetTopNode = me.getParentNodeByNodeLevel(targetNode, NODE_LEVEL_COMPILATION_NEW);
         me.moveSrcTopNode = null;
         if (moveType === 'inner') {
             if (targetNode.nodeType === RT.NodeType.TEMPLATE) {
@@ -320,7 +348,7 @@ let zTreeOprObj = {
     },
     onDrop: function (event, treeId, treeNodes, targetNode, moveType, isCopy) {
         let me = zTreeOprObj;
-        let targetTopNode = me.getTopNodeByCurrentNode(targetNode);
+        let targetTopNode = me.getParentNodeByNodeLevel(targetNode, NODE_LEVEL_COMPILATION_NEW);
         let newTopNode = null;
         let canContinue = false;
         if (isCopy) {
@@ -338,9 +366,11 @@ let zTreeOprObj = {
                         me.currentNode = treeNodes[0];
                     }, function(badRst){
                         displayMessage("更新模板节点失败!", "red", 2000);
+                        console.log(badRst.toString());
                     });
                 }, function(badResult){
                     displayMessage("Copy请求失败!", "red", 2000);
+                    console.log(badResult.toString());
                 });
             });
             if (canContinue) me.chkAndRreshRefTpl();
@@ -351,6 +381,7 @@ let zTreeOprObj = {
                 me.currentNode = treeNodes[0];
             }, function(badResult){
                 displayMessage("移动请求失败!", "red", 2000);
+                console.log(badResult.toString());
                 canContinue = false;
             });
             if (canContinue && !isCopy && me.moveSrcTopNode) {
@@ -365,21 +396,16 @@ let zTreeOprObj = {
             me.moveSrcTopNode = null;
         }
     },
-    changeUser: function (dom) {
-        if (dom.checked) {
-            //用户定制打开
-            $("#rpt_user_input")[0].disabled = false;
-            $("#rpt_user_find_btn")[0].disabled = false;
-        } else {
-            //公用
-            $("#rpt_user_input")[0].disabled = true;
-            $("#rpt_user_find_btn")[0].disabled = true;
-        }
-    },
     getReportTemplateTree: function(compilationSelect) {
         let me = zTreeOprObj, params = {};
         params.compilationId = compilationSelect.value;
-        params.userId = (userAccount ===  'admin')?("-100"):userID;
+        // params.userId = (userAccount ===  'admin')?("-100"):userID;
+        params.userId = ["-100"];
+        if (userListObj.foundedUserList.length > 0) {
+            for (let user of userListObj.foundedUserList) {
+                params.userId.push(user.userId);
+            }
+        }
         let allEngIds = [];
         for (let item of engineeringList) {
             allEngIds.push(item.value);
@@ -388,23 +414,46 @@ let zTreeOprObj = {
         CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
             result.sort(function(item1, item2){
                 let rst = 0;
-                if (item1.userId < item2.userId) {
-                    rst = 1
-                } else if (item1.userId > item2.userId) {
-                    rst = -1;
-                } else {
+                if (item1.userId === item2.userId) {
                     rst = (item1.engineerId > item2.engineerId)?1:((item1.engineerId < item2.engineerId)?-1:0);
+                } else {
+                    if (item1.userId === "-100") {
+                        rst = 1
+                    } else if (item2.userId === "-100") {
+                        rst = -1
+                    } else {
+                        let idx1 = -1, idx2 = -1;
+                        for (let uidx = 0; uidx < userListObj.foundedUserList.length; uidx++) {
+                            if (userListObj.foundedUserList[uidx].userId === item1.userId) idx1 = uidx;
+                            if (userListObj.foundedUserList[uidx].userId === item2.userId) idx2 = uidx;
+                            if (idx1 >= 0 && idx2 >= 0) {
+                                break;
+                            }
+                            rst = (idx1 > idx2)?1:((idx1 < idx2)?-1:0);
+                        }
+                    }
                 }
                 return rst;
             });
-            zTreeHelper.createTreeDirectly(result, setting, "rptTplTree", me);
+            let allTopUserIdNodes = ["-100"];
+            let allTopTplNodes = [{userId: "-100", name: "公共模板", items:[], isParent: true}];
+            for (let user of userListObj.foundedUserList) {
+                allTopUserIdNodes.push(user.userId);
+                allTopTplNodes.push({userId: user.userId, name: user.username, items: [], isParent: true});
+            }
+            for (let item of result) {
+                let uidx = allTopUserIdNodes.indexOf(item.userId);
+                item.isParent = true;
+                allTopTplNodes[uidx].items.push(item);
+            }
+            // zTreeHelper.createTreeDirectly(result, setting, "rptTplTree", me);
+            zTreeHelper.createTreeDirectly(allTopTplNodes, setting, "rptTplTree", me);
             me.refreshNodes();
             let 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.setChkDisabled(itemNode, !(itemNode.released));
-                    me.treeObj.checkNode(itemNode, (itemNode.released)?true:false);
+                    me.treeObj.checkNode(itemNode, !!(itemNode.released));
                 }
                 if (itemNode.items && itemNode.items.length > 0) {
                     for (let subItem of itemNode.items) {
@@ -418,75 +467,22 @@ let zTreeOprObj = {
                 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);
                     }
                 }
             }
         }, null, null);
     },
-    addTplNode: function (){
-        let me = this;
-        if (me.currentNode && me.currentNode.nodeType === RT.NodeType.NODE || me.currentNode.level === 0) {
-            me.getNewNodeID(1, function (newNodeID) {
-                let rawNode = me.createIniNode();
-                rawNode.nodeType = RT.NodeType.TEMPLATE;
-                rawNode.name = "新增报表模板";
-                rawNode.ID = newNodeID;
-                rawNode.released = false;
-                let newNodes = [], isSilent = false;
-                newNodes.push(rawNode);
-                me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent);
-                let topNode = me.buildRootNodeDoc(me.currentNode);
-                me.updateTreeRootNode(topNode, true, function(rst){
-                    if (!(rst)) {
-                        alert("新增空白模板失败!");
-                    }
-                    me.refreshNodes();
-                }, null);
-            });
-        }
-    },
     getNewNodeID: function (scope, callback) {
         let params = {};
         params.scope = scope;
         CommonAjax.postEx("report_tpl_api/getNewNodeID", params, 5000, true, callback, null, null);
     },
-    addRootNode: function() {
-        let me = this, rawNode = me.createIniRootNode();
-        if (!me.chkIfDupRootNode(rawNode)) {
-            me.addNewNodeEx(rawNode, function(rst){
-                if (rst) {
-                    let newNodes = [], isSilent = false;
-                    rawNode.isParent = true;
-                    newNodes.push(rawNode);
-                    if (me.treeObj) {
-                        let insertIdx = -1;
-                        let nodes = me.treeObj.getNodes();
-                        for (let i = 0; i < nodes.length; i++) {
-                            if (nodes[i].compilationId === rawNode.compilationId) {
-                                if (nodes[i].engineerId > rawNode.engineerId) {
-                                    insertIdx = i;
-                                    break;
-                                }
-                            }
-                        }
-                        me.treeObj.addNodes(null, insertIdx, newNodes, isSilent);
-                    } else {
-                        me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
-                    }
-                } else {
-                    alert("创建失败,请确认是否有重复类型跟节点!")
-                }
-            }, null);
-        } else {
-            alert("有重复编办及工程类型!");
-        }
-    },
-    chkIfDupRootNode: function (rawNode) {
-        let me = this, rst = false;
-        if (me.treeObj) {
-            let nodes = me.treeObj.getNodes();
-            for (let node of nodes) {
+    chkIfDupCompilationNode: function (rawNode, parentUserNode) {
+        let rst = false;
+        if (parentUserNode.items && parentUserNode.items.length > 0) {
+            for (let node of parentUserNode.items) {
                 if (node.compilationId === rawNode.compilationId && node.engineerId === rawNode.engineerId && node.userId === rawNode.userId) {
                     rst = true;
                     break;
@@ -495,7 +491,7 @@ let zTreeOprObj = {
         }
         return rst;
     },
-    createIniRootNode: function() {
+    createIniComilationNode: function() {
         let rst = {
             compilationId: $("#compilations").get(0).selectedOptions[0].value,
             engineerId: parseInt($("#engineerIds").get(0).selectedOptions[0].value),
@@ -510,47 +506,59 @@ let zTreeOprObj = {
     },
     onBeforeRemove: function(treeId, treeNode){
         let canRemove = false;
-        if (!(treeNode.items) || treeNode.items.length < 1) {
-            canRemove = confirm("请再确认您要删除!");
+        if (treeNode.level > NODE_LEVEL_USER) {
+            if (!(treeNode.items) || treeNode.items.length < 1) {
+                canRemove = confirm("请再确认您要删除!");
+            } else {
+                alert("含有子项,不能删除!");
+            }
         } else {
-            alert("含有子项,不能删除!");
+            alert("不能删除用户级别模板!");
         }
         return canRemove;
     },
     onRemove: function(e, treeId, treeNode){
-        let me = zTreeOprObj, topPNode = me.getTopNodeByCurrentNode(treeNode);
-        let rawNode = me.buildRootNodeDoc(topPNode, treeNode);
-        if (treeNode.level === 0) {
-            me.removeTreeRootNode(rawNode, true, function(rst){
-                if (!(rst)) {
-                    alert("删除请求失败!");
-                }
-            });
-        } else {
-            me.updateTreeRootNode(rawNode, true, function(rst){
-                if (!(rst)) {
-                    alert("删除请求失败!");
-                }
-            });
-        }
-        me.refreshNodes();
-    },
-    beforeEditName: function (treeId, treeNode) {
-        setTimeout(function(){
-            let ip = $("#" + treeNode.tId + IDMark_Input);
-            if (ip.length > 0) {
-                ip[0].className = "individualRename";
+        if (treeNode.level > NODE_LEVEL_USER) {
+            let me = zTreeOprObj,
+                topPNode = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW);
+            let rawNode = me.buildRootNodeDoc(topPNode, treeNode);
+            if (treeNode.level === NODE_LEVEL_COMPILATION_NEW) {
+                me.removeTreeRootNode(rawNode, true, function(rst){
+                    if (!(rst)) {
+                        alert("删除请求失败!");
+                    }
+                });
             } else {
-                setTimeout(function(){
-                    let ip = $("#" + treeNode.tId + IDMark_Input);
-                    if (ip.length > 0) {
-                        ip[0].className = "individualRename";
-                    } else {
-                        console.log("sorry!");
+                me.updateTreeRootNode(rawNode, true, function(rst){
+                    if (!(rst)) {
+                        alert("删除请求失败!");
                     }
-                }, 50);
+                });
             }
-        }, 50);
+            me.refreshNodes();
+        }
+    },
+    beforeEditName: function (treeId, treeNode) {
+        if (treeNode.level > NODE_LEVEL_COMPILATION_NEW) {
+            setTimeout(function(){
+                let ip = $("#" + treeNode.tId + IDMark_Input);
+                if (ip.length > 0) {
+                    ip[0].className = "individualRename";
+                } else {
+                    setTimeout(function(){
+                        let ip = $("#" + treeNode.tId + IDMark_Input);
+                        if (ip.length > 0) {
+                            ip[0].className = "individualRename";
+                        } else {
+                            console.log("sorry!");
+                        }
+                    }, 50);
+                }
+            }, 50);
+            return true;
+        } else {
+            return false;
+        }
     },
     beforeRename: function(treeId, treeNode, newName, isCancel) {
         if (newName.length === 0) {
@@ -568,7 +576,7 @@ let zTreeOprObj = {
                     }
                 }, null);
             } else {
-                let subTopNode = me.getSubTopNodeByCurrentNode(treeNode);
+                let subTopNode = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW + 1);
                 let topPNode = subTopNode.getParentNode();
                 let rawNode = me.buildSubRootNodeDoc(subTopNode);
                 me.updateSubNode(topPNode, rawNode, true, function(rst){
@@ -591,8 +599,8 @@ let zTreeOprObj = {
             params.rptName = me.currentNode.name;
             params.grpKey = me.getFolderText(me.currentNode, "_");
             me.currentNode.refId = me.currentNode.ID;
-            let subTopNode = me.getSubTopNodeByCurrentNode(me.currentNode);
-            let topPNode = me.getTopNodeByCurrentNode(subTopNode);
+            let subTopNode = me.getParentNodeByNodeLevel(me.currentNode, NODE_LEVEL_COMPILATION_NEW + 1);
+            let topPNode = me.getParentNodeByNodeLevel(subTopNode, NODE_LEVEL_COMPILATION_NEW);
             let rawNode = me.buildSubRootNodeDoc(subTopNode);
             params.compilationId = topPNode.compilationId;
             params.engineerId = topPNode.engineerId;
@@ -682,49 +690,26 @@ let zTreeOprObj = {
         if (rptTpl[JV.NODE_FLOW_INFO]) {
             rptTpl[JV.NODE_FLOW_INFO][JV.PROP_MULTI_COLUMN] = parseInt($("#rptTplMultiCols")[0].value);
         }
-        // rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_LEFT] = $("#rptTplMarginLeft")[0].value;
-        // rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_RIGHT] = $("#rptTplMarginRight")[0].value;
-        // rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_TOP] = $("#rptTplMarginTop")[0].value;
-        // rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM] = $("#rptTplMarginBottom")[0].value;
-    },
-    getTopNodeByCurrentNode: function (currentNode) {
-        let topPNode = currentNode, pNode = currentNode.getParentNode();
-        while (pNode !== null) {
-            topPNode = pNode;
-            pNode = pNode.getParentNode();
-        }
-        return topPNode;
-    },
-    getSubTopNodeByCurrentNode: function (currentNode) {
-        let startNode = currentNode, resultPNode = null, pNode = startNode.getParentNode();
-        while (pNode !== null) {
-            resultPNode = startNode;
-            startNode = pNode;
-            pNode = startNode.getParentNode();
+        //考虑到页边距必然跟用户设置走,所以这里没必要特意去设置了,全部下架
+    },
+    getParentNodeByNodeLevel: function (currentNode, level) {
+        let rst = currentNode;
+        while (rst !== null) {
+            if (rst.level <= level) {
+                break;
+            } else {
+                rst = rst.getParentNode();
+            }
         }
-        return resultPNode;
+        return rst;
     }
 };
 
 let userListObj = {
-    bindEvent: function () {
-        // let me = userListObj;
-        // $("#rpt_user_input").change(me.onChange);
-    },
-    onSelect: function (dom) {
-        alert("on selection!");
-    },
-    onChange: function (dom) {
-        alert("on change!");
-    },
-    onKeyPress: function (dom) {
-        if (dom.value && dom.value.length >= 2) {
-            alert(dom.value);
-        }
-    },
+    foundedUserList: [],
     findUser: function () {
         let params = {};
-        CommonAjax.postEx("user/getRptTplTree", params, 20000, true, function(result){
+        CommonAjax.postEx("user/XYZ", params, 20000, true, function(result){
             //
         }, null, null);
     }

+ 2 - 3
web/maintain/report/rpt_tpl_tree.html

@@ -1,12 +1,11 @@
 <div class="tab-bar">
+    <!--
     <a onclick="zTreeOprObj.addRootNode()" class="btn btn-secondary btn-sm fa fa-plus-square">项目类型</a>
     <a onclick="zTreeOprObj.addTplNode()" class="btn btn-secondary btn-sm fa fa-plus-square">报表模板</a>
     <a onclick="zTreeOprObj.moveDownNode()" class="btn btn-sm" id="downMove"><i class="fa fa-arrow-down" aria-hidden="true"></i>下移</a>
     <a onclick="zTreeOprObj.moveUpNode()" class="btn btn-sm" id="upMove"><i class="fa fa-arrow-up" aria-hidden="true"></i>上移</a>
+    -->
 </div>
 <div class="tab-content" id="rptTplTreeDiv">
     <ul id="rptTplTree" class="ztree"></ul>
 </div>
-<div class="tab-content" id="customizedRptTplTreeDiv" style="display: none">
-    <ul id="customizedRptTplTree" class="ztree"></ul>
-</div>