Browse Source

在分项下右键插入工料机,也要算机上人工费。

chenshilong 7 years ago
parent
commit
e9cdaf6c17

+ 174 - 156
web/building_saas/main/js/models/calc_program.js

@@ -229,22 +229,6 @@ let nodeTools = {
             return treeNodeCalcType.ctRationCalcProgram;
         };
     },
-    // 界面显示的结点的工程量的数值。
-    uiQuantity: function (treeNode){
-        return parseFloatPlus(treeNode.data.quantity).toDecimal(decimalObj.decimal("quantity", treeNode));
-    },
-    // 界面显示的工料机价格,包括定额价、市场价等。参数 price 传入一个普通的价格数值即可。
-    uiGLJPrice: function (price){
-        if (price)
-            return parseFloat(price).toDecimal(decimalObj.glj.unitPrice)
-        else return 0;
-    },
-    // 界面显示的工料机数量。参数 quantity 传入一个普通的数量数值即可。
-    uiGLJQuantity: function (quantity){
-        if (quantity)
-            return parseFloat(quantity).toDecimal(decimalObj.glj.quantity)
-        else return 0;
-    },
 
     // 参数fieldName值: 'common.totalFee'、'equipment.unitFee'
     getFee: function (treeNode, fieldName) {
@@ -263,126 +247,55 @@ let nodeTools = {
     },
     getNodeByID: function (ID){
         return cbTools.getNodeByID(ID);
-    },
-    getRationBaseFee: function (treeNode, gljTypes, priceType){
-    if (!treeNode.data.gljList) return 0;
-    let result = 0;
-    let me = this;
-    for (let glj of treeNode.data.gljList) {
-        let price = 0, temp = 0;
-        if (gljTypes.indexOf(glj.type) >= 0) {
-            if (priceType == priceTypes.ptDiffPrice){
-                let aprice = me.uiGLJPrice(glj["adjustPrice"]);
-                let mprice = me.uiGLJPrice(glj["marketPrice"]);
-                temp = (me.uiGLJQuantity(glj["quantity"]) * mprice).toDecimal(decimalObj.ration.unitPrice) - (me.uiGLJQuantity(glj["quantity"]) * aprice).toDecimal(decimalObj.ration.unitPrice);
-                temp = temp.toDecimal(decimalObj.ration.unitPrice);
-            }
-            else {
-                if (priceType == priceTypes.ptBasePrice){ price = me.uiGLJPrice(glj["basePrice"]);}
-                else if (priceType == priceTypes.ptAdjustPrice){price = me.uiGLJPrice(glj["adjustPrice"]);}
-                else if (priceType == priceTypes.ptMarketPrice){price = me.uiGLJPrice(glj["marketPrice"]);}
-                temp = (me.uiGLJQuantity(glj["quantity"]) * price).toDecimal(decimalObj.ration.unitPrice);
-            };
-
-            result = (result + temp).toDecimal(decimalObj.ration.unitPrice);
-        };
-    };
-    return result;
-},
-    calcEstimateFee: function (treeNode, isBase = false){
-    let me = this, sumU = 0, sumT = 0;
-    // 父清单暂估费的汇总计算走计算程序逻辑,不在这里。
-    if (nodeTools.isTotalCostBill(treeNode)){
-        let nodes = projectObj.project.mainTree.roots;
-        for (let node of nodes){
-            if (nodeTools.isTotalCostBill(node)) break;
-            let eU = 0, eT = 0;
-            if (node.data.feesIndex && node.data.feesIndex.estimate){
-                eU = node.data.feesIndex.estimate.unitFee;
-                eT = node.data.feesIndex.estimate.totalFee;
-            }
-            else {
-                eU = 0, eT = 0;
-            };
-            sumU = (sumU + parseFloatPlus(eU)).toDecimal(decimalObj.process);
-            sumT = (sumT + parseFloatPlus(eT)).toDecimal(decimalObj.process);
-        };
-        sumU = (sumU).toDecimal(decimalObj.bills.unitPrice);
-        sumT = (sumT).toDecimal(decimalObj.bills.totalPrice);
     }
-    else{
-        if (!treeNode.data.gljList) return;
-        let GLJObjs = [];
-        for (let glj of treeNode.data.gljList) {
-            if (allMaterialTypes.indexOf(glj.type) >= 0) {
-                if (glj.isEstimate){
-                    GLJObjs.push({code: glj.code, name: glj.name, specs: glj.specs, unit: glj.unit, type: glj.type,
-                        quantity: glj.quantity, marketPrice: glj.marketPrice});
-                }
-                else{   // 组成物
-                    if (compositionTypes.indexOf(glj.type) >= 0){
-                        let mds = projectObj.project.composition.getCompositionByGLJ(glj);
-                        if (!mds) mds = [];
-                        for (let md of mds){
-                            if (md.isEstimate){
-                                let isExist = false;
-                                let mdQ = (me.uiGLJQuantity(glj.quantity) * me.uiGLJQuantity(md.consumption)).toDecimal(decimalObj.process);
-
-                                for (let obj of GLJObjs){
-                                    if (gljOprObj.getIndex(md, gljKeyArray) == gljOprObj.getIndex(obj, gljKeyArray)){
-                                        isExist = true;
-                                        obj.quantity = (me.uiGLJQuantity(obj.quantity) + mdQ).toDecimal(decimalObj.process);
-                                        break;
-                                    }
-                                };
-                                if (!isExist)
-                                    GLJObjs.push({code: md.code, name: md.name, specs: md.specs, unit: md.unit, type: md.type,
-                                        quantity: mdQ, marketPrice: md.marketPrice});
-                            }
-                        }
-                    }
-                }
-            };
-        };
-
-        for (let obj of GLJObjs){
-            sumU = sumU + (me.uiGLJQuantity(obj.quantity) * me.uiGLJPrice(obj.marketPrice)).toDecimal(decimalObj.process);
-            sumU = sumU.toDecimal(decimalObj.process);
-
-            let q = (me.uiGLJQuantity(obj.quantity) * me.uiQuantity(treeNode)).toDecimal(decimalObj.process);
-            sumT = sumT + (q * me.uiGLJPrice(obj.marketPrice)).toDecimal(decimalObj.process);
-            sumT = sumT.toDecimal(decimalObj.process);
-        };
-        sumU = sumU.toDecimal(decimalObj.bills.unitPrice);
-        if (projectObj.project.property.zanguCalcMode == zanguCalcType.common){
-            sumT = (nodeTools.uiQuantity(treeNode) * sumU).toDecimal(decimalObj.bills.totalPrice);
-        }
-        else if (projectObj.project.property.zanguCalcMode == zanguCalcType.gatherMaterial){
-            sumT = sumT.toDecimal(decimalObj.bills.totalPrice);
-        };
-    };
-
-    if (isBase)
-        return sumU
-    else
-        nodeTools.checkFeeField(treeNode, {'fieldName': 'estimate', 'unitFee': sumU, 'totalFee': sumT});
-}
 };
 
-const rationCalcBaser = {
-    '定额基价人工费': function (node) {
-        return nodeTools.getRationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice);
+let assistCalcer = {
+    // 界面显示的结点的工程量的数值。
+    uiQuantity: function (treeNode){
+        return parseFloatPlus(treeNode.data.quantity).toDecimal(decimalObj.decimal("quantity", treeNode));
     },
-    '定额基价材料费': function (node) {
-        return nodeTools.getRationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice);
+    // 界面显示的工料机价格,包括定额价、市场价等。参数 price 传入一个普通的价格数值即可。
+    uiGLJPrice: function (price){
+        if (price)
+            return parseFloat(price).toDecimal(decimalObj.glj.unitPrice)
+        else return 0;
     },
-    '定额基价机械费': function (node) {
-        return nodeTools.getRationBaseFee(node, [gljType.GENERAL_MACHINE], priceTypes.ptBasePrice);
+    // 界面显示的工料机数量。参数 quantity 传入一个普通的数量数值即可。
+    uiGLJQuantity: function (quantity){
+        if (quantity)
+            return parseFloat(quantity).toDecimal(decimalObj.glj.quantity)
+        else return 0;
     },
-    '定额基价机上人工费': function machineLabourFee(node) {
-        if (!node.data.gljList) return 0;
+    rationBaseFee: function (treeNode, gljTypes, priceType){
+        if (!treeNode.data.gljList) return 0;
+        let result = 0;
+        let me = this;
+        for (let glj of treeNode.data.gljList) {
+            let price = 0, temp = 0;
+            if (gljTypes.indexOf(glj.type) >= 0) {
+                if (priceType == priceTypes.ptDiffPrice){
+                    let aprice = me.uiGLJPrice(glj["adjustPrice"]);
+                    let mprice = me.uiGLJPrice(glj["marketPrice"]);
+                    temp = (me.uiGLJQuantity(glj["quantity"]) * mprice).toDecimal(decimalObj.ration.unitPrice) - (me.uiGLJQuantity(glj["quantity"]) * aprice).toDecimal(decimalObj.ration.unitPrice);
+                    temp = temp.toDecimal(decimalObj.ration.unitPrice);
+                }
+                else {
+                    if (priceType == priceTypes.ptBasePrice){ price = me.uiGLJPrice(glj["basePrice"]);}
+                    else if (priceType == priceTypes.ptAdjustPrice){price = me.uiGLJPrice(glj["adjustPrice"]);}
+                    else if (priceType == priceTypes.ptMarketPrice){price = me.uiGLJPrice(glj["marketPrice"]);}
+                    temp = (me.uiGLJQuantity(glj["quantity"]) * price).toDecimal(decimalObj.ration.unitPrice);
+                };
+
+                result = (result + temp).toDecimal(decimalObj.ration.unitPrice);
+            };
+        };
+        return result;
+    },
+    machineLabourFee: function (gljArr) {
+        if (!gljArr) return 0;
         let result = 0, mdSum = 0;
-        for (let glj of node.data.gljList) {
+        for (let glj of gljArr) {
             if (glj.type == gljType.GENERAL_MACHINE) {
                 // 获取机械组成物
                 let mds = projectObj.project.composition.getCompositionByGLJ(glj);
@@ -395,36 +308,126 @@ const rationCalcBaser = {
                         mdSum = (mdSum).toDecimal(decimalObj.process);
                     }
                 }
-                ;
                 result = result + (glj["quantity"] * mdSum).toDecimal(decimalObj.process);
                 result = (result).toDecimal(decimalObj.process);
             }
-            ;
         }
-        ;
         return result;
     },
+    estimateFee: function (treeNode, isBase = false){
+        let me = this, sumU = 0, sumT = 0;
+        // 父清单暂估费的汇总计算走计算程序逻辑,不在这里。
+        if (nodeTools.isTotalCostBill(treeNode)){
+            let nodes = projectObj.project.mainTree.roots;
+            for (let node of nodes){
+                if (nodeTools.isTotalCostBill(node)) break;
+                let eU = 0, eT = 0;
+                if (node.data.feesIndex && node.data.feesIndex.estimate){
+                    eU = node.data.feesIndex.estimate.unitFee;
+                    eT = node.data.feesIndex.estimate.totalFee;
+                }
+                else {
+                    eU = 0, eT = 0;
+                };
+                sumU = (sumU + parseFloatPlus(eU)).toDecimal(decimalObj.process);
+                sumT = (sumT + parseFloatPlus(eT)).toDecimal(decimalObj.process);
+            };
+            sumU = (sumU).toDecimal(decimalObj.bills.unitPrice);
+            sumT = (sumT).toDecimal(decimalObj.bills.totalPrice);
+        }
+        else{
+            if (!treeNode.data.gljList) return;
+            let GLJObjs = [];
+            for (let glj of treeNode.data.gljList) {
+                if (allMaterialTypes.indexOf(glj.type) >= 0) {
+                    if (glj.isEstimate){
+                        GLJObjs.push({code: glj.code, name: glj.name, specs: glj.specs, unit: glj.unit, type: glj.type,
+                            quantity: glj.quantity, marketPrice: glj.marketPrice});
+                    }
+                    else{   // 组成物
+                        if (compositionTypes.indexOf(glj.type) >= 0){
+                            let mds = projectObj.project.composition.getCompositionByGLJ(glj);
+                            if (!mds) mds = [];
+                            for (let md of mds){
+                                if (md.isEstimate){
+                                    let isExist = false;
+                                    let mdQ = (me.uiGLJQuantity(glj.quantity) * me.uiGLJQuantity(md.consumption)).toDecimal(decimalObj.process);
+
+                                    for (let obj of GLJObjs){
+                                        if (gljOprObj.getIndex(md, gljKeyArray) == gljOprObj.getIndex(obj, gljKeyArray)){
+                                            isExist = true;
+                                            obj.quantity = (me.uiGLJQuantity(obj.quantity) + mdQ).toDecimal(decimalObj.process);
+                                            break;
+                                        }
+                                    };
+                                    if (!isExist)
+                                        GLJObjs.push({code: md.code, name: md.name, specs: md.specs, unit: md.unit, type: md.type,
+                                            quantity: mdQ, marketPrice: md.marketPrice});
+                                }
+                            }
+                        }
+                    }
+                };
+            };
+
+            for (let obj of GLJObjs){
+                sumU = sumU + (me.uiGLJQuantity(obj.quantity) * me.uiGLJPrice(obj.marketPrice)).toDecimal(decimalObj.process);
+                sumU = sumU.toDecimal(decimalObj.process);
+
+                let q = (me.uiGLJQuantity(obj.quantity) * me.uiQuantity(treeNode)).toDecimal(decimalObj.process);
+                sumT = sumT + (q * me.uiGLJPrice(obj.marketPrice)).toDecimal(decimalObj.process);
+                sumT = sumT.toDecimal(decimalObj.process);
+            };
+            sumU = sumU.toDecimal(decimalObj.bills.unitPrice);
+            if (projectObj.project.property.zanguCalcMode == zanguCalcType.common){
+                sumT = (me.uiQuantity(treeNode) * sumU).toDecimal(decimalObj.bills.totalPrice);
+            }
+            else if (projectObj.project.property.zanguCalcMode == zanguCalcType.gatherMaterial){
+                sumT = sumT.toDecimal(decimalObj.bills.totalPrice);
+            };
+        };
+
+        if (isBase)
+            return sumU
+        else
+            nodeTools.checkFeeField(treeNode, {'fieldName': 'estimate', 'unitFee': sumU, 'totalFee': sumT});
+    }
+};
+
+const rationCalcBaser = {
+    '定额基价人工费': function (node) {
+        return assistCalcer.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice);
+    },
+    '定额基价材料费': function (node) {
+        return assistCalcer.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice);
+    },
+    '定额基价机械费': function (node) {
+        return assistCalcer.rationBaseFee(node, [gljType.GENERAL_MACHINE], priceTypes.ptBasePrice);
+    },
+    '定额基价机上人工费': function (node) {
+        return assistCalcer.machineLabourFee(node.data.gljList);
+    },
     '人工费价差': function (node) {
-        return nodeTools.getRationBaseFee(node, [gljType.LABOUR], priceTypes.ptDiffPrice);
+        return assistCalcer.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptDiffPrice);
     },
     '材料费价差': function (node) {
-        return nodeTools.getRationBaseFee(node, baseMaterialTypes, priceTypes.ptDiffPrice);
+        return assistCalcer.rationBaseFee(node, baseMaterialTypes, priceTypes.ptDiffPrice);
     },
     '机械费价差': function (node) {
-        return nodeTools.getRationBaseFee(node, [gljType.GENERAL_MACHINE], priceTypes.ptDiffPrice);
+        return assistCalcer.rationBaseFee(node, [gljType.GENERAL_MACHINE], priceTypes.ptDiffPrice);
     },
     '主材费': function (node) {
-        return nodeTools.getRationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice);
+        return assistCalcer.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice);
     },
     '设备费': function (node) {
-        return nodeTools.getRationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice);
+        return assistCalcer.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice);
     },
     '人工工日': function (node) {
         if (!node.data.gljList) return 0;
         let rst = 0;
         for (let glj of node.data.gljList) {
             if (glj.type == gljType.LABOUR) {
-                rst = rst + (me.uiGLJQuantity(glj["quantity"]) * me.uiQuantity(node)).toDecimal(decimalObj.process);
+                rst = rst + (assistCalcer.uiGLJQuantity(glj["quantity"]) * assistCalcer.uiQuantity(node)).toDecimal(decimalObj.process);
                 rst = rst.toDecimal(decimalObj.process);
             }
         };
@@ -451,7 +454,7 @@ const rationCalcBaser = {
     '甲定设备费': function (node) {
     },
     '暂估材料费': function (node) {
-        return nodeTools.calcEstimateFee(node, true);
+        return assistCalcer.estimateFee(node, true);
     },
     '分包定额基价人工费': function (node) {
     },
@@ -621,21 +624,36 @@ let executeObj = {
     },
     base: function(baseName) {
         let me = executeObj;
-        function marketPriceToBase(baseName) {
+        function marketPriceToBase(baseName, type) {
             let result = 0;
             if (
-                ( me.treeNode.data.subType === gljType.LABOUR && baseName === '定额基价人工费') ||
-                ( baseMaterialTypes.includes(me.treeNode.data.subType) && baseName === '定额基价材料费') ||
-                ( me.treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === '定额基价机械费') ||
-                ( me.treeNode.data.subType === gljType.MAIN_MATERIAL && baseName === '主材费') ||
-                ( me.treeNode.data.subType === gljType.EQUIPMENT && baseName === '设备费')
-            ) result = me.treeNode.data.marketUnitFee ? parseFloat(me.treeNode.data.marketUnitFee).toDecimal(decimalObj.ration.unitPrice) : 0;
+                (me.treeNode.data.subType === gljType.LABOUR && baseName === '定额基价人工费') ||
+                (baseMaterialTypes.includes(me.treeNode.data.subType) && baseName === '定额基价材料费') ||
+                (me.treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === '定额基价机械费') ||
+                (me.treeNode.data.subType === gljType.MAIN_MATERIAL && baseName === '主材费') ||
+                (me.treeNode.data.subType === gljType.EQUIPMENT && baseName === '设备费')) {
+                if (type == rationType.volumePrice)
+                    result = me.treeNode.data.marketUnitFee ? parseFloat(me.treeNode.data.marketUnitFee).toDecimal(decimalObj.ration.unitPrice) : 0
+                else if (type == rationType.gljRation)
+                    result = me.treeNode.data.basePrice ? parseFloat(me.treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
+            }
+            else if (me.treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === '定额基价机上人工费'){
+                let glj = {
+                    'code': me.treeNode.data.code,
+                    'name': me.treeNode.data.name,
+                    'specs': me.treeNode.data.specs,
+                    'unit': me.treeNode.data.unit,
+                    'quantity': 1,
+                    'type': me.treeNode.data.subType      // 注意:这里要取subType
+                };
+                result = assistCalcer.machineLabourFee([glj]);
+            }
             return result;
         };
 
         // 量价、工料机形式的定额, 要把自己的市场单价用于计算程序中的基数。
         if (me.treeNode.data.type == rationType.volumePrice || me.treeNode.data.type == rationType.gljRation)
-            return marketPriceToBase(baseName)
+            return marketPriceToBase(baseName, me.treeNode.data.type)
         else{
             if (!rationCalcBaser[baseName]){
                 alert('定额基数“' + baseName + '”末定义,计算错误。 (模板 ' + me.template.ID + ',规则 ' + me.tempCalcItem.ID +')');
@@ -648,7 +666,7 @@ let executeObj = {
     HJ: function () {
         let me = this;
         let p = me.treeNode.data.calcBaseValue ? me.treeNode.data.calcBaseValue : 0;
-        let q = nodeTools.uiQuantity(me.treeNode) ? nodeTools.uiQuantity(me.treeNode) : 1;
+        let q = assistCalcer.uiQuantity(me.treeNode) ? assistCalcer.uiQuantity(me.treeNode) : 1;
         let u = (p / q).toDecimal(decimalObj.decimal('unitPrice', me.treeNode));
         return u;
     }
@@ -970,9 +988,9 @@ class CalcProgram {
                 }
                 else if (treeNode.calcType == treeNodeCalcType.ctGatherRationsFees){     // 这里的算法要配合冷姐姐的神图才能看懂^_^
                     let sum_rtf = 0, sum_rttf = 0;
-                    let bq = nodeTools.uiQuantity(treeNode) ? nodeTools.uiQuantity(treeNode) : 1;
+                    let bq = assistCalcer.uiQuantity(treeNode) ? assistCalcer.uiQuantity(treeNode) : 1;
                     for (let node of nodes) {
-                        let rq = nodeTools.uiQuantity(node) ? nodeTools.uiQuantity(node) : 0;
+                        let rq = assistCalcer.uiQuantity(node) ? assistCalcer.uiQuantity(node) : 0;
                         let ruf = 0, rtuf = 0, rtf = 0, rttf = 0;
                         if (node.data.feesIndex && node.data.feesIndex[ft.type]) {
                             ruf = parseFloat(node.data.feesIndex[ft.type].unitFee);
@@ -1051,7 +1069,7 @@ class CalcProgram {
             }
 
             let f = treeNode.data.feeRate ? treeNode.data.feeRate : 100;
-            let q = nodeTools.uiQuantity(treeNode) ? nodeTools.uiQuantity(treeNode) : 1;
+            let q = assistCalcer.uiQuantity(treeNode) ? assistCalcer.uiQuantity(treeNode) : 1;
             let b = treeNode.data.calcBaseValue ? treeNode.data.calcBaseValue : 0;
             let uf = (b * f * q / 100).toDecimal(decimalObj.bills.unitPrice);
             let tuf = uf;
@@ -1063,7 +1081,7 @@ class CalcProgram {
             // 总造价清单还要做单项工程、建设项目的四大项金额汇总
             if (nodeTools.isTotalCostBill(treeNode)){
                 // 公式叶子清单没有暂估费,但总造价清单除外。
-                nodeTools.calcEstimateFee(treeNode);
+                assistCalcer.estimateFee(treeNode);
                 nodeTools.initSummaryFee(treeNode);
                 treeNode.data.summaryFees.totalFee = tf;
                 treeNode.data.summaryFees.estimateFee = nodeTools.getFee(treeNode, 'estimate.totalFee');
@@ -1080,7 +1098,7 @@ class CalcProgram {
                 if (treeNode.data.type == rationType.volumePrice){
                     delete treeNode.data.gljList;
                     let muf = treeNode.data.marketUnitFee ? treeNode.data.marketUnitFee : 0;
-                    let q = nodeTools.uiQuantity(treeNode) ? nodeTools.uiQuantity(treeNode) : 0;
+                    let q = assistCalcer.uiQuantity(treeNode) ? assistCalcer.uiQuantity(treeNode) : 0;
                     treeNode.data.marketTotalFee = (muf * q).toDecimal(decimalObj.ration.totalPrice);
                 }
                 else if (treeNode.data.type == rationType.gljRation){
@@ -1089,7 +1107,7 @@ class CalcProgram {
                 else{
                     treeNode.data.gljList = me.project.ration_glj.getGljArrByRation(treeNode.data.ID);
                     // 计算程序里没有暂估费的计算规则,会漏掉,所以这里要专门算。
-                    nodeTools.calcEstimateFee(treeNode);
+                    assistCalcer.estimateFee(treeNode);
                     fnArr.push('estimate');
                 };
 
@@ -1106,7 +1124,7 @@ class CalcProgram {
                 }
 
                 // 叶子清单自己的计算程序计算,其暂估费也要汇总算。
-                nodeTools.calcEstimateFee(treeNode);
+                assistCalcer.estimateFee(treeNode);
                 fnArr.push('estimate');
             };
 
@@ -1126,7 +1144,7 @@ class CalcProgram {
                     let feeRate = parseFloatPlus(calcItem.feeRate) ? parseFloatPlus(calcItem.feeRate).toDecimal(decimalObj.feeRate) : 100;  // 100%
                     calcItem.unitFee = (eval(calcItem.compiledExpr) * feeRate * 0.01).toDecimal(decimalObj.decimal('unitPrice', treeNode));   // 如果eval()对清单树有影响,就换成小麦的Expression对象再试
 
-                    let q = nodeTools.uiQuantity(treeNode) ? nodeTools.uiQuantity(treeNode) : 0;
+                    let q = assistCalcer.uiQuantity(treeNode) ? assistCalcer.uiQuantity(treeNode) : 0;
                     calcItem.totalFee = (calcItem.unitFee * q).toDecimal(decimalObj.decimal('totalPrice', treeNode));
 
                     if (calcItem.fieldName) {

+ 1 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -25,7 +25,7 @@ let MainTreeCol = {
           if(node.sourceType === projectObj.project.ration_glj.getSourceType()){
               return gljOprObj.getTotalQuantity(node.data);
           }else {
-              return nodeTools.uiQuantity(node)?nodeTools.uiQuantity(node):null;
+              return assistCalcer.uiQuantity(node)?assistCalcer.uiQuantity(node):null;
           }
         },
         // CSL, 2017-11-28

+ 5 - 0
web/building_saas/main/js/views/project_view.js

@@ -31,6 +31,11 @@ var projectObj = {
                 pageCCOprObj.clearData();
             }
         }
+
+        // for test interface.  CSLAAAAA
+/*        node.data.gljList = project.ration_glj.getGljArrByRation(node.data.ID);
+        let bname = '暂估材料费';
+        alert(bname + ': ' + rationCalcBaser[bname](node));*/
     },
     refreshBaseActn: function (tree) {
         let setButtonValid = function (valid, btn) {