|
@@ -877,17 +877,29 @@ class CalcProgram {
|
|
|
};
|
|
|
|
|
|
// 删掉多余的费用。例如:从其它计算方式切换到公式计算方式,会多出其它的费(不光是common)
|
|
|
- function deleteUselessFees(treeNode){
|
|
|
- let reserveArr = treeNodeTools.isTotalCostBill(treeNode)? ['common', 'estimate']:['common'];
|
|
|
- if (treeNode.data.fees && treeNode.data.fees.length > 0){
|
|
|
- let feesArr = treeNode.data.fees;
|
|
|
- for (let i = 0; i < feesArr.length; i++) {
|
|
|
- if (!reserveArr.includes(feesArr[i].fieldName)) {
|
|
|
- delete treeNode.data.feesIndex[feesArr[i].fieldName];
|
|
|
- feesArr.splice(i, 1);
|
|
|
+ function deleteUselessFees(treeNode, fieldNameArr){
|
|
|
+ if (fieldNameArr){ // 用于计算程序没有绑定的费用类别,不要同步到清单,而清单因为以前计算过该类别又有值,需删除。如切换取费类别,旧费要清掉。
|
|
|
+ for (var i = 0; i < treeNode.data.fees.length; i++) {
|
|
|
+ let fee = treeNode.data.fees[i];
|
|
|
+ if (!fieldNameArr.includes(fee.fieldName)){
|
|
|
+ treeNode.data.fees.splice(i, 1);
|
|
|
+ delete treeNode.data.feesIndex[fee.fieldName];
|
|
|
treeNode.changed = true;
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ else{ // 总造价清单只留common, estimate两个费用类别。其它公式清单只留common。
|
|
|
+ let reserveArr = treeNodeTools.isTotalCostBill(treeNode)? ['common', 'estimate']:['common'];
|
|
|
+ if (treeNode.data.fees && treeNode.data.fees.length > 0){
|
|
|
+ let feesArr = treeNode.data.fees;
|
|
|
+ for (let i = 0; i < feesArr.length; i++) {
|
|
|
+ if (!reserveArr.includes(feesArr[i].fieldName)) {
|
|
|
+ delete treeNode.data.feesIndex[feesArr[i].fieldName];
|
|
|
+ feesArr.splice(i, 1);
|
|
|
+ treeNode.changed = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -1015,6 +1027,7 @@ class CalcProgram {
|
|
|
}
|
|
|
// 定额或叶子清单自己的计算程序计算
|
|
|
else{
|
|
|
+ let fnArr = [];
|
|
|
if (treeNode.calcType == treeNodeCalcType.ctRationCalcProgram) {
|
|
|
if (treeNode.data.type == rationType.volumePrice){
|
|
|
delete treeNode.data.gljList;
|
|
@@ -1029,6 +1042,7 @@ class CalcProgram {
|
|
|
treeNode.data.gljList = me.project.ration_glj.getGljArrByRation(treeNode.data.ID);
|
|
|
// 计算程序里没有暂估费的计算规则,会漏掉,所以这里要专门算。
|
|
|
calcEstimateFee(treeNode);
|
|
|
+ fnArr.push('estimate');
|
|
|
};
|
|
|
|
|
|
if (treeNode.data.programID == undefined){
|
|
@@ -1045,6 +1059,7 @@ class CalcProgram {
|
|
|
|
|
|
// 叶子清单自己的计算程序计算,其暂估费也要汇总算。
|
|
|
calcEstimateFee(treeNode);
|
|
|
+ fnArr.push('estimate');
|
|
|
};
|
|
|
|
|
|
let template = me.compiledTemplates[treeNode.data.programID];
|
|
@@ -1071,8 +1086,12 @@ class CalcProgram {
|
|
|
else quantity = parseFloat(quantity).toDecimal(decimalObj.decimal('quantity', treeNode));
|
|
|
calcItem.totalFee = (calcItem.unitFee * quantity).toDecimal(decimalObj.decimal('totalPrice', treeNode));
|
|
|
|
|
|
- treeNodeTools.checkFeeField(treeNode, calcItem);
|
|
|
+ if (calcItem.fieldName) {
|
|
|
+ fnArr.push(calcItem.fieldName);
|
|
|
+ treeNodeTools.checkFeeField(treeNode, calcItem);
|
|
|
+ };
|
|
|
};
|
|
|
+ deleteUselessFees(treeNode, fnArr);
|
|
|
};
|
|
|
};
|
|
|
|