|
@@ -58,7 +58,8 @@ let calcTools = {
|
|
|
return (
|
|
|
this.isLeafBill(treeNode) &&
|
|
|
treeNode.children.length === 0 &&
|
|
|
- !treeNode.data.calcBase
|
|
|
+ !treeNode.data.calcBase &&
|
|
|
+ !treeNode.data.lockUnitPrice
|
|
|
);
|
|
|
},
|
|
|
isInvalidNode: function (treeNode) {
|
|
@@ -980,17 +981,16 @@ let calcTools = {
|
|
|
} else if (this.isNullBill(treeNode)) {
|
|
|
return treeNodeCalcType.ctNull;
|
|
|
} else if (this.isLeafBill(treeNode)) {
|
|
|
- if (treeNode.children && treeNode.children.length > 0) {
|
|
|
+ if (treeNode.data.lockUnitPrice) // 叶子清单锁定单价(有定额或无定额)
|
|
|
+ return treeNodeCalcType.ctLockUnitPrice
|
|
|
+ else if (treeNode.children && treeNode.children.length > 0) { // 叶子清单有定额
|
|
|
// 清单单价计算模式下的叶子清单:取自己的计算程序ID,找到自己的计算程序计算。(汇总清单所有定额的工料机)
|
|
|
- if (
|
|
|
- projectObj.project.property.billsCalcMode ===
|
|
|
- leafBillGetFeeType.billsPrice
|
|
|
- )
|
|
|
+ if (projectObj.project.property.billsCalcMode === leafBillGetFeeType.billsPrice)
|
|
|
return treeNodeCalcType.ctBillCalcProgram;
|
|
|
// 前三种计算模式下的叶子清单:汇总定额的计算程序的费用类别
|
|
|
else return treeNodeCalcType.ctGatherRationsFees;
|
|
|
- } else {
|
|
|
- // 公式计算
|
|
|
+ }
|
|
|
+ else { // 叶子清单无锁定单价、无定额:公式计算
|
|
|
return treeNodeCalcType.ctCalcBaseValue;
|
|
|
}
|
|
|
} else if (this.isBill(treeNode)) {
|
|
@@ -2127,13 +2127,16 @@ class CalcProgram {
|
|
|
|
|
|
// 父清单汇总子清单的费用类别
|
|
|
if (treeNode.calcType == treeNodeCalcType.ctGatherBillsFees)
|
|
|
- me.innerCalcBill(treeNode, 2);
|
|
|
- // 叶子清单汇总定额的费用类别
|
|
|
+ me.innerCalcBill(treeNode, 2)
|
|
|
+ // 叶子清单:汇总定额的费用类别
|
|
|
else if (treeNode.calcType == treeNodeCalcType.ctGatherRationsFees)
|
|
|
- me.innerCalcBill(treeNode, 1);
|
|
|
+ me.innerCalcBill(treeNode, 1)
|
|
|
+ // 叶子清单:锁定单价
|
|
|
+ else if (treeNode.calcType == treeNodeCalcType.ctLockUnitPrice)
|
|
|
+ me.innerCalcBill(treeNode, 4)
|
|
|
// 叶子清单:公式计算
|
|
|
else if (treeNode.calcType == treeNodeCalcType.ctCalcBaseValue)
|
|
|
- me.innerCalcBillExpr(treeNode);
|
|
|
+ me.innerCalcBillExpr(treeNode)
|
|
|
// 叶子清单:手工修改单价或金额(无定额、无公式计算,什么都没有时)。
|
|
|
else if (treeNode.calcType == treeNodeCalcType.ctNull)
|
|
|
me.innerCalcBillCustom(treeNode);
|
|
@@ -2198,20 +2201,8 @@ class CalcProgram {
|
|
|
).toDecimal(decimalObj.process);
|
|
|
}
|
|
|
}
|
|
|
- } else if (commonCalcType == 1 || commonCalcType == 3) {
|
|
|
- if (treeNode.data.lockUnitPrice == true) {
|
|
|
- // 清单单价锁定
|
|
|
- if (treeNode.data.feesIndex && treeNode.data.feesIndex[ft.type]) {
|
|
|
- buf = parseFloatPlus(
|
|
|
- treeNode.data.feesIndex[ft.type].unitFee
|
|
|
- ).toDecimal(decimalObj.bills.unitPrice);
|
|
|
- btuf = parseFloatPlus(
|
|
|
- treeNode.data.feesIndex[ft.type].tenderUnitFee
|
|
|
- ).toDecimal(decimalObj.bills.unitPrice);
|
|
|
- btf = (bq * buf).toDecimal(decimalObj.bills.totalPrice);
|
|
|
- bttf = (btq * btuf).toDecimal(decimalObj.bills.totalPrice);
|
|
|
- }
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else if (commonCalcType == 1 || commonCalcType == 3) {
|
|
|
let sum_rtf = 0,
|
|
|
sum_rttf = 0;
|
|
|
for (let node of nodes) {
|
|
@@ -2260,30 +2251,24 @@ class CalcProgram {
|
|
|
sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);
|
|
|
}
|
|
|
|
|
|
- if (
|
|
|
- me.project.property.billsCalcMode ==
|
|
|
- leafBillGetFeeType.rationPriceConverse ||
|
|
|
- me.project.property.billsCalcMode == leafBillGetFeeType.rationPrice
|
|
|
- ) {
|
|
|
+ if (me.project.property.billsCalcMode == leafBillGetFeeType.rationPriceConverse || me.project.property.billsCalcMode == leafBillGetFeeType.rationPrice) {
|
|
|
buf = (sum_rtf / bq).toDecimal(decimalObj.process);
|
|
|
btuf = (sum_rttf / btq).toDecimal(decimalObj.process);
|
|
|
}
|
|
|
- if (
|
|
|
- isBaseFeeType(ft.type) ||
|
|
|
- (me.project.property.billsCalcMode ===
|
|
|
- leafBillGetFeeType.rationPrice &&
|
|
|
- ft.type == "common")
|
|
|
- ) {
|
|
|
+ if (isBaseFeeType(ft.type) || (me.project.property.billsCalcMode === leafBillGetFeeType.rationPrice && ft.type == "common")) {
|
|
|
btf = sum_rtf;
|
|
|
bttf = sum_rttf;
|
|
|
} else {
|
|
|
- btf = (buf.toDecimal(decimalObj.bills.unitPrice) * bq).toDecimal(
|
|
|
- decimalObj.process
|
|
|
- );
|
|
|
- bttf = (btuf.toDecimal(decimalObj.bills.unitPrice) * btq).toDecimal(
|
|
|
- decimalObj.process
|
|
|
- );
|
|
|
+ btf = (buf.toDecimal(decimalObj.bills.unitPrice) * bq).toDecimal(decimalObj.process);
|
|
|
+ bttf = (btuf.toDecimal(decimalObj.bills.unitPrice) * btq).toDecimal(decimalObj.process);
|
|
|
}
|
|
|
+ }
|
|
|
+ else if (commonCalcType == 4){ // 清单单价锁定
|
|
|
+ if (treeNode.data.feesIndex && treeNode.data.feesIndex[ft.type]) {
|
|
|
+ buf = parseFloatPlus(treeNode.data.feesIndex[ft.type].unitFee).toDecimal(decimalObj.bills.unitPrice);
|
|
|
+ btuf = parseFloatPlus(treeNode.data.feesIndex[ft.type].tenderUnitFee).toDecimal(decimalObj.bills.unitPrice);
|
|
|
+ btf = (bq * buf).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ bttf = (btq * btuf).toDecimal(decimalObj.bills.totalPrice);
|
|
|
}
|
|
|
}
|
|
|
|