TonyKang 7 سال پیش
والد
کامیت
4fa5a3e4dd
2فایلهای تغییر یافته به همراه25 افزوده شده و 8 حذف شده
  1. 17 1
      modules/reports/util/rpt_construct_data_util.js
  2. 8 7
      public/web/treeDataHelper.js

+ 17 - 1
modules/reports/util/rpt_construct_data_util.js

@@ -255,6 +255,7 @@ class Rpt_Data_Extractor {
 
 }
 
+//小数位数依据单位来调整(如吨、公斤的精度要求就不同)
 function getUnitDecimal(unitDecimalArr) {
     let rst = {"default_decimal": 2};
     if (unitDecimalArr) {
@@ -681,7 +682,8 @@ function sortData(sourceData, sortCfg, prjData) {
     }
     switch (sortType) {
         case "tree":
-            rst = treeUtil.buildTreeNodeDirectly(tempRstArr);
+            let addLevel = true;
+            rst = treeUtil.buildTreeNodeDirectly(tempRstArr, addLevel);
             let newTopArr = [];
             if (sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES] && sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0) {
                 for (let topItem of rst) {
@@ -772,6 +774,7 @@ function setupFunc(obj, prop, ownRawObj) {
     obj[prop].getPropertyByForeignId = ext_getPropertyByForeignId;
     obj[prop].getArrayItemByKey = ext_getArrayItemByKey;
     obj[prop].getPropertyByFlag = ext_getPropertyByFlag;
+    obj[prop].getBlank = ext_getBlank;
     if (prop === projectConst.CALC_PROGRAM) obj[prop].getCalcProperty = ext_getCalcProperty;
     if (prop === projectConst.FEERATE) obj[prop].getFeeRate = ext_getFeeRate;
 }
@@ -1048,6 +1051,19 @@ function ext_getArrayItemByKey(arrayKey, itemKey, itemKeyValue, itemRstKey){
     }
 }
 
+function ext_getBlank(dftVal) {
+    let rst = [], parentObj = this;
+    let dtObj = parentObj["myOwnRawDataObj"];
+    if (dtObj) {
+        for (let i = 0; i < dtObj.data.length; i++) {
+            if (dftVal !== null && dftVal !== undefined) {
+                rst.push(dftVal)
+            } else rst.push('');
+        }
+    }
+    return rst;
+}
+
 function ext_getPropertyByFlag(flagVal, rstKey, dftValIfEmpty) {
     let rst = [], parentObj = this;
     let dtObj = parentObj["myOwnRawDataObj"];

+ 8 - 7
public/web/treeDataHelper.js

@@ -1,12 +1,12 @@
 /**
  * Created by Tony on 2017/1/23.
  */
-const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID="Previous_ID", CHILDREN_NODE = "items", SUB_ID = "sub_ids", EMPTY_ID_VAL = -1;
+const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID="Previous_ID", CHILDREN_NODE = "items", SUB_ID = "sub_ids", EMPTY_ID_VAL = -1, TREE_LEVEL = 'treeLevel';
 
 let tree_Data_Helper = {
-    buildTreeNodeDirectly: function(data) {
+    buildTreeNodeDirectly: function(data, addLevel) {
         let topArr = [], rst = [], tmpNodes = {}, prefix = "id_";
-        let private_getTopNode = function (idArr) {
+        let private_getStartNode = function (idArr) {
             let tmpNodeRst = null;
             for (let i = 0; i < idArr.length; i++) {
                 if (parseInt(tmpNodes[prefix + idArr[i]][ADHOC_PRE_ID]) === EMPTY_ID_VAL) {
@@ -16,8 +16,8 @@ let tree_Data_Helper = {
             }
             return tmpNodeRst;
         };
-        let private_buildNodeData = function(parentItem, idArr) {
-            let iter = [], nextNode = private_getTopNode(idArr);
+        let private_buildNodeData = function(parentItem, idArr, treeLevel) {
+            let iter = [], nextNode = private_getStartNode(idArr);
             while (nextNode !== null && nextNode !== undefined ) {
                 if (parentItem) {
                     parentItem[CHILDREN_NODE].push(nextNode);
@@ -25,10 +25,11 @@ let tree_Data_Helper = {
                     rst.push(nextNode);
                 }
                 iter.push(nextNode);
+                if (addLevel) nextNode[TREE_LEVEL] = treeLevel;
                 nextNode = tmpNodes[prefix + nextNode[NEXT_ID]];
             }
             for (let i = 0; i < iter.length; i++) {
-                private_buildNodeData(iter[i], iter[i][SUB_ID]);
+                private_buildNodeData(iter[i], iter[i][SUB_ID], (treeLevel + 1));
             }
         };
 
@@ -51,7 +52,7 @@ let tree_Data_Helper = {
                 tmpNodes[prefix + data[i][P_ID]][SUB_ID].push(data[i][NODE_ID]);
             }
         }
-        private_buildNodeData(null, topArr);
+        private_buildNodeData(null, topArr, 0);
         //try to release and return
         tmpNodes = null;
         topArr.length = 0;