Browse Source

引用模板标记

TonyKang 6 years ago
parent
commit
5e89e5048c

+ 2 - 1
modules/users/controllers/user_controller.js

@@ -104,7 +104,8 @@ class UserController extends BaseController {
      * @return {string}
      */
     async getUserList(request, response) {
-        let userIds = request.body.userIds;
+        let params = JSON.parse(request.body.params),
+            userIds = params.userIds;
         let userModel = new UserModel();
         let responseData = {
             error: 0,

+ 1 - 0
web/maintain/report/js/cfg_const.js

@@ -34,6 +34,7 @@ let setting = {
         }
     },
     callback:{
+        beforeClick: zTreeOprObj.beforeClick,
         onClick: zTreeOprObj.onClick,
         beforeEditName: zTreeOprObj.beforeEditName,
         beforeRename: zTreeOprObj.beforeRename,

+ 112 - 31
web/maintain/report/js/rpt_tpl_main.js

@@ -33,6 +33,8 @@ let zTreeOprObj = {
     treeObj: null,
     currentNode: null,
     moveSrcTopNode: null,
+    dupTplIds: null,
+    hasRefreshedDupRefIds: false,
     iniEngineerIdList: function() {
         for (let item of engineeringList) {
             $("#engineerIds").append("<option value='" + item.value + "'>" + item.name + "</option>");
@@ -573,6 +575,56 @@ let zTreeOprObj = {
             }
         }, null, null);
     },
+    chkAndSetDupRefTplIds: function (tplNodes, selectedRefId) {
+        let me = zTreeOprObj, tmpRefIds = [];
+        me.dupTplIds = [];
+        let private_get_dup_ids = function (tplNode) {
+            if (tplNode.refId && tplNode.refId !== -1) {
+                let refId = tplNode.refId;
+                if (tmpRefIds.indexOf(refId) < 0) {
+                    tmpRefIds.push(refId);
+                } else {
+                    if (me.dupTplIds.indexOf(refId) < 0) {
+                        me.dupTplIds.push(refId);
+                    } else {
+                        //
+                    }
+                }
+            }
+            if (tplNode.items && tplNode.items.length > 0) {
+                for (let subTplNode of tplNode.items) {
+                    private_get_dup_ids(subTplNode);
+                }
+            }
+        };
+        let private_set_dup_icon = function (tplNode) {
+            if (me.dupTplIds.indexOf(tplNode.refId) >= 0) {
+                // tplNode.icon = "../../../../lib/ztree/css/img/diy/3.png"; //or below:
+                if (selectedRefId && selectedRefId === tplNode.refId) {
+                    tplNode.icon = "/lib/ztree/css/img/diy/5.png";
+                } else {
+                    tplNode.icon = "/lib/ztree/css/img/diy/3.png";
+                }
+                // tplNode.style = "background:url(/lib/ztree/css/img/diy/3.png) 0 0 no-repeat;"
+            }
+            if (tplNode.items && tplNode.items.length > 0) {
+                for (let subTplNode of tplNode.items) {
+                    private_set_dup_icon(subTplNode);
+                }
+            }
+        };
+        for (let tplNodeItem of tplNodes) {
+            private_get_dup_ids(tplNodeItem);
+        }
+        for (let tplNodeItem of tplNodes) {
+            private_set_dup_icon(tplNodeItem);
+        }
+        if (selectedRefId) {
+            me.hasRefreshedDupRefIds = true;
+        } else {
+            me.hasRefreshedDupRefIds = false;
+        }
+    },
     getReportTemplateTreeFirstTime: function (compilationSelect) {
         let me = zTreeOprObj, params = {};
         params.compilationId = compilationSelect.value;
@@ -586,7 +638,8 @@ let zTreeOprObj = {
                 }
                 return rst;
             });
-            let allTopUserIdNodes = ["-100"];
+            // me.chkAndSetDupRefTplIds(result);
+            // console.log(dupRefIds);
             let allTopTplNodes = [{userId: "-100", name: "公共模板", items:[], isParent: true}];
             allTopTplNodes[0].items.push(result[0]);
             let userIds = [];
@@ -594,39 +647,44 @@ let zTreeOprObj = {
                 let item = result[idx];
                 userIds.push(item.userId);
             }
-            userListObj.findUsersByIds(userIds, function () {
-                // for (let item of result) {
-                //     let uidx = allTopUserIdNodes.indexOf(item.userId);
-                //     item.isParent = true;
-                //     let topItem = {userId: item.userId, name: item.name, items: [], isParent: true};
-                //     allTopTplNodes[uidx].items.push(item);
-                // }
-            });
-            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.checkNode(itemNode, !!(itemNode.released));
-                }
-                if (itemNode.items && itemNode.items.length > 0) {
-                    for (let subItem of itemNode.items) {
-                        private_setup_checked(subItem);
+            userListObj.findUsersByIds(userIds, function (userObjs) {
+                for (let user of userObjs) {
+                    for (let itemIdx = 1; itemIdx < result.length; itemIdx++) {
+                        let item = result[itemIdx];
+                        if (item.userId === user._id) {
+                            allTopTplNodes.push({userId: user.userId, name: user.real_name, items: [], isParent: true});
+                            allTopTplNodes[allTopTplNodes.length - 1].items.push(result[itemIdx]);
+                            break;
+                        }
                     }
                 }
-            };
-            let topNodes = me.treeObj.getNodes();
-            me.treeObj.expandAll(true);
-            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);
+                zTreeHelper.createTreeDirectly(allTopTplNodes, setting, "rptTplTree", me);
+                let topNodes = me.treeObj.getNodes();
+                me.chkAndSetDupRefTplIds(topNodes, null);
+                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.checkNode(itemNode, !!(itemNode.released));
+                    }
+                    if (itemNode.items && itemNode.items.length > 0) {
+                        for (let subItem of itemNode.items) {
+                            private_setup_checked(subItem);
+                        }
+                    }
+                };
+                me.treeObj.expandAll(true);
+                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);
+                        }
                     }
                 }
-            }
+            });
         }, null, null);
     },
     getNewNodeID: function (scope, callback) {
@@ -798,6 +856,19 @@ let zTreeOprObj = {
             );
         }
     },
+    beforeClick: function (treeId, treeNode, clickFlag) {
+        let me = zTreeOprObj;
+        if (me.dupTplIds && me.dupTplIds.indexOf(treeNode.refId) >= 0) {
+            let topNodes = me.treeObj.getNodes();
+            me.chkAndSetDupRefTplIds(topNodes, treeNode.refId);
+            me.refreshNodes();
+        } else if (me.hasRefreshedDupRefIds) {
+            let topNodes = me.treeObj.getNodes();
+            me.chkAndSetDupRefTplIds(topNodes, null);
+            me.refreshNodes();
+        }
+        return true;
+    },
     onClick: function(event,treeId,treeNode) {
         let me = zTreeOprObj;
         me.currentNode = treeNode;
@@ -923,7 +994,17 @@ let userListObj = {
         });
     },
     findUsersByIds: function (userIds, cb) {
-        //
+        let params = {};
+        params.userIds = userIds;
+        CommonAjax.postEx("user/getUserList", params, 20000, true, function(result){
+                for (let user of result) {
+                    userListObj.pushUser(user, null);
+                }
+                if (cb) {
+                    cb(result);
+                }
+            }, null, null
+        );
     }
 };