Browse Source

排序(according to parent),过滤支持子项,更精细操作

TonyKang 7 years ago
parent
commit
333f2cee1c
2 changed files with 22 additions and 4 deletions
  1. 21 4
      modules/reports/util/rpt_construct_data_util.js
  2. 1 0
      public/web/rpt_value_define.js

+ 21 - 4
modules/reports/util/rpt_construct_data_util.js

@@ -416,12 +416,12 @@ function filterData(sourceData, handleCfg, prjData) {
         }
         return rst;
     };
-    let compareObj = {};
-    for (let item of tempRstArr) {
+    let private_filter_compare = function (item, filterCfg) {
+        let compareObj = {};
         let compRst = true;
         let curComparePrjData = null;
         let startIdx = 0;
-        for (let cfg of handleCfg[JV.PROP_FILTER_KEYS]) {
+        for (let cfg of filterCfg[JV.PROP_FILTER_KEYS]) {
             if (cfg[JV.PROP_FILTER_COMPARE_VAL]) {
                 //比较key值
                 let keys = cfg.key.split(".");
@@ -472,10 +472,27 @@ function filterData(sourceData, handleCfg, prjData) {
             }
             startIdx++;
         }
-        if (compRst) {
+        return compRst;
+    };
+    for (let item of tempRstArr) {
+        if (private_filter_compare(item, handleCfg)) {
             rstArr.push(item);
         }
     }
+    if (handleCfg[JV.PROP_OTHER_SUB_FILTER] && handleCfg[JV.PROP_OTHER_SUB_FILTER].length > 0) {
+        let newRstArr = [];
+        for (let dtlItem of rstArr) {
+            let cmpRst = false;
+            for (let dtlCfg of handleCfg[JV.PROP_OTHER_SUB_FILTER]) {
+                cmpRst = private_filter_compare(dtlItem, dtlCfg);
+                if (cmpRst) {
+                    newRstArr.push(dtlItem);
+                    break;
+                }
+            }
+        }
+        rstArr = newRstArr;
+    }
     delete sourceData.data;
     sourceData.data = rstArr;
     // fsUtil.writeObjToFile(sourceData.data, "D:/GitHome/ConstructionCost/tmp/filteredRst.js");

+ 1 - 0
public/web/rpt_value_define.js

@@ -52,6 +52,7 @@ const JV = {
     PROP_PARENT_SORT_KEYS: "父排序键值集",
     PROP_CHILD_SORT_KEYS: "子排序键值集",
     PROP_OTHER_SUB_SORT: "其他子排序",
+    PROP_OTHER_SUB_FILTER: "其他子过滤",
     PROP_HANDLE_TYPE: "预处理类型",
     PROP_FILTER_KEYS: "过滤键值集",
     PROP_FILTER_TOP_BILLS_NODES: "清单顶节点集",