|
@@ -530,6 +530,24 @@ let treeNodeTools = {
|
|
|
},
|
|
|
uiQuantity(treeNode){
|
|
|
return parseFloatPlus(treeNode.data.quantity).toDecimal(decimalObj.decimal("quantity", treeNode));
|
|
|
+ },
|
|
|
+
|
|
|
+ getFee(treeNode, fieldName) { // fieldName: 'common.totalFee'、'equipment.unitFee'
|
|
|
+ let ns = fieldName.split(".");
|
|
|
+ if (ns.length != 2)
|
|
|
+ return 0
|
|
|
+ else if (treeNode.data.feesIndex[ns[0]] && treeNode.data.feesIndex[ns[0]][ns[1]])
|
|
|
+ return parseFloat(treeNode.data.feesIndex[ns[0]][ns[1]])
|
|
|
+ else
|
|
|
+ return 0;
|
|
|
+ },
|
|
|
+ getNodeByFlag(flag) {
|
|
|
+ let bill = cbTools.findBill(flag);
|
|
|
+ if (bill) return this.getNodeByID(bill.ID)
|
|
|
+ else return null;
|
|
|
+ },
|
|
|
+ getNodeByID(ID){
|
|
|
+ return cbTools.getNodeByID(ID);
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -1022,11 +1040,9 @@ class CalcProgram {
|
|
|
calcEstimateFee(treeNode);
|
|
|
treeNodeTools.initSummaryFee(treeNode);
|
|
|
treeNode.data.summaryFees.totalFee = tf;
|
|
|
- treeNode.data.summaryFees.estimateFee = (treeNode.data.feesIndex && treeNode.data.feesIndex.estimate) ? treeNode.data.feesIndex.estimate.totalFee:0;
|
|
|
- let bill_safe = cbTools.findBill(fixedFlag.SAFETY_CONSTRUCTION);
|
|
|
- treeNode.data.summaryFees.safetyFee = (bill_safe && bill_safe.feesIndex && bill_safe.feesIndex.common)?bill_safe.feesIndex.common.totalFee:0;
|
|
|
- let bill_charge = cbTools.findBill(fixedFlag.CHARGE);
|
|
|
- treeNode.data.summaryFees.chargeFee = (bill_charge && bill_charge.feesIndex && bill_charge.feesIndex.common)?bill_charge.feesIndex.common.totalFee:0;
|
|
|
+ treeNode.data.summaryFees.estimateFee = treeNodeTools.getFee(treeNode, 'estimate.totalFee');
|
|
|
+ treeNode.data.summaryFees.safetyFee = treeNodeTools.getFee(treeNodeTools.getNodeByFlag(fixedFlag.SAFETY_CONSTRUCTION), 'common.totalFee');
|
|
|
+ treeNode.data.summaryFees.chargeFee = treeNodeTools.getFee(treeNodeTools.getNodeByFlag(fixedFlag.CHARGE), 'common.totalFee');
|
|
|
}
|
|
|
|
|
|
treeNode.data.calcTemplate = {"calcItems": []};
|
|
@@ -1231,4 +1247,40 @@ class CalcProgram {
|
|
|
let changedNodes = this.calcAllNodes(calcType);
|
|
|
this.saveNodes(changedNodes);
|
|
|
};
|
|
|
+
|
|
|
+ // 排除指定项的综合合价计算(用于带循环计算的情况)
|
|
|
+ getTotalFee(excludeNodes){
|
|
|
+ excludeNodes.push(treeNodeTools.getNodeByFlag(fixedFlag.ENGINEERINGCOST));
|
|
|
+ let me = this;
|
|
|
+ let rst = 0;
|
|
|
+
|
|
|
+ function calcNodes(nodes) {
|
|
|
+ /*for (let node of nodes) {
|
|
|
+ if (node.children.length > 0) {
|
|
|
+ calcNodes(node.children);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (!excludeNodes.includes(node) && node.sourceType != ModuleNames.ration_glj) {
|
|
|
+ rst = (rst + treeNodeTools.getFee(node, 'common.totalFee')).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+ for (let node of nodes) {
|
|
|
+ if (!excludeNodes.includes(node)){
|
|
|
+ if (node.children.length > 0) {
|
|
|
+ calcNodes(node.children);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (node.sourceType != ModuleNames.ration_glj) {
|
|
|
+ rst = (rst + treeNodeTools.getFee(node, 'common.totalFee')).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ calcNodes(me.project.mainTree.roots);
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
}
|