瀏覽代碼

TASK#3126 细化报表选择

TonyKang 5 年之前
父節點
當前提交
c366ccd384
共有 2 個文件被更改,包括 37 次插入14 次删除
  1. 25 5
      app/view/report/index.ejs
  2. 12 9
      app/view/report/rpt_all_popup.ejs

+ 25 - 5
app/view/report/index.ejs

@@ -270,6 +270,7 @@
     const ROLE_LIST = <%- role_list %>;
     let USED_LIST = <%- used_list %>;
     const STAGE_STATUS = <%- stg_status %>;
+    const FOLDER_SEPERATER = '->';
     let STAGE_AUDIT = [];
     let STAGE_AUDIT_ORG = [];
     let STAGE_FLOW = [];
@@ -345,6 +346,29 @@
         return SCREEN_DPI;
     }
 
+    function filterUnchkTplTreeNode(topNode) {
+        for (let rIdx = topNode.items.length - 1; rIdx >= 0; rIdx--) {
+            if (CUST_TREE_NODES.common.indexOf(topNode.items[rIdx].name) < 0) {
+                //topNode.items.splice(rIdx, 1);
+                //支持第二层判断
+                //备注:如果选择了父项,那不用再去判断子项
+                if (topNode.items[rIdx].items && topNode.items[rIdx].items.length > 0) {
+                    for (let rIdx2 = topNode.items[rIdx].items.length - 1; rIdx2 >= 0; rIdx2--) {
+                        let tName = topNode.items[rIdx].name + FOLDER_SEPERATER + topNode.items[rIdx].items[rIdx2].name;
+                        if (CUST_TREE_NODES.common.indexOf(tName) < 0) {
+                            topNode.items[rIdx].items.splice(rIdx2, 1);
+                        }
+                    }
+                } else {
+                    topNode.items.splice(rIdx, 1);
+                }
+            }
+            if (!topNode.items[rIdx].hasOwnProperty('items') || topNode.items[rIdx].items.length === 0) {
+                topNode.items.splice(rIdx, 1);
+            }
+        }
+    }
+
     function buildTplTree() {
         if (TOP_TREE_NODES.length > 0) {
             //1. 整理模板树 (原始状态的TOP_TREE_NODES包含了通用报表与定制表,需要分割)
@@ -358,11 +382,7 @@
                 }
             }
             // 1.1 移除未被选择的模板
-            for (let rIdx = TOP_TREE_NODES[0].items.length - 1; rIdx >= 0; rIdx--) {
-                if (CUST_TREE_NODES.common.indexOf(TOP_TREE_NODES[0].items[rIdx].name) < 0) {
-                    TOP_TREE_NODES[0].items.splice(rIdx, 1);
-                }
-            }
+            filterUnchkTplTreeNode(TOP_TREE_NODES[0]);
             TOP_TREE_NODES.unshift(individualNode); //定制在前
             //2. 原始的模板树(恢复用)
             const individualNodeOrg = {id: 99999, name: '定制报表', pid: -1, rpt_type: 0, items: [], isParent: true};

+ 12 - 9
app/view/report/rpt_all_popup.ejs

@@ -368,17 +368,24 @@
             }
             return rst;
         };
-        let _pushRptLine = function (rptItem, level) {
+        let _pushRptLine = function (parentItem, rptItem, level, needChk) {
             if (rptItem.nodeType === 1) {
                 let amt = _countAvailableTpls(rptItem);
                 let classStr = '';
                 if (level > 0) {
                     classStr = 'pl-' + (level + 3);
                 }
-                tbDom.append('<tr><td class="' + classStr + '">' + rptItem.name + '</td><td>' + amt + '</td><td></td></tr>');
+                if (needChk) {
+                    let chkName = parentItem.name + FOLDER_SEPERATER + rptItem.name;
+                    let checkedStr = (CUST_TREE_NODES.common.indexOf(chkName) >= 0) ? ' checked' : '';
+                    tbDom.append('<tr><td class="' + classStr + '">' + rptItem.name + '</td><td>' + amt + '</td><td><input onchange="changeFolder(this, true)" hiddenval="' + chkName + '" type="checkbox"' + checkedStr + '></td></tr>');
+                } else {
+                    tbDom.append('<tr><td class="' + classStr + '">' + rptItem.name + '</td><td>' + amt + '</td><td></td></tr>');
+                }
+                //tbDom.append('<tr><td class="' + classStr + '">' + rptItem.name + '</td><td>' + amt + '</td><td></td></tr>');
                 if (rptItem.items && rptItem.items.length > 0) {
                     for (const subItem of rptItem.items) {
-                        _pushRptLine(subItem, level + 1);
+                        _pushRptLine(rptItem, subItem, level + 1, false);
                     }
                 }
             }
@@ -391,7 +398,7 @@
             tbDom.append('<tr><td>' + topItem.name + '</td><td>' + TplAmts[TplAmts.length - 1] + '</td><td><input onchange="changeFolder(this, true)" hiddenval="' + topItem.name + '" type="checkbox"' + checkedStr + '></td></tr>');
             if (topItem.items && topItem.items.length > 0) {
                 for (const subItem of topItem.items) {
-                    _pushRptLine(subItem, 1);
+                    _pushRptLine(topItem, subItem, 1, true);
                 }
             }
         }
@@ -408,11 +415,7 @@
                     //刷新报表模板树
                     TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
                     // 移除未被选择的模板
-                    for (let rIdx = TOP_TREE_NODES[1].items.length - 1; rIdx >= 0; rIdx--) {
-                        if (CUST_TREE_NODES.common.indexOf(TOP_TREE_NODES[1].items[rIdx].name) < 0) {
-                            TOP_TREE_NODES[1].items.splice(rIdx, 1);
-                        }
-                    }
+                    filterUnchkTplTreeNode(TOP_TREE_NODES[1]);
                     zTreeOprObj.getReportTemplateTree();
                 } catch(err) {
                 }