|
@@ -1818,31 +1818,21 @@ class CalcProgram {
|
|
|
};
|
|
|
};
|
|
|
|
|
|
- /*删掉多余的费用。例如:从其它计算方式(有很多费)切换到公式计算方式(只需要common费),多出来的费要删除。
|
|
|
- fieldNameArr 值取自:遍历treeNode的计算规则,取有绑定的字段名。这些字段名以外的fee是因旧计算多出来的,需要删除。 */
|
|
|
+ // 删掉多余的费用。例如:①切换取费类别 ②从其它计算方式(有很多费)切换到公式计算方式(只需要common费),多出来的费要删除。
|
|
|
+ // 如果指定了保留字段,则按用户指定的来。如果没指定保留字段,则按默认的来:总造价清单只留common, estimate两个费用类别。其它公式清单只留common。
|
|
|
function deleteUselessFees(treeNode, fieldNameArr){
|
|
|
- if (fieldNameArr){ // 用于计算程序没有绑定的费用类别,不要同步到清单,而清单因为以前计算过该类别又有值,需删除。如切换取费类别,旧费要清掉。
|
|
|
- for (var i = 0; i < treeNode.data.fees.length; i++) {
|
|
|
- let fee = treeNode.data.fees[i];
|
|
|
- if ((fee.fieldName != 'estimate') && !fieldNameArr.includes(fee.fieldName)){
|
|
|
- treeNode.data.fees.splice(i, 1);
|
|
|
- delete treeNode.data.feesIndex[fee.fieldName];
|
|
|
- treeNode.changed = true;
|
|
|
- }
|
|
|
+ if (!(treeNode.data.fees && treeNode.data.fees.length > 0)) return;
|
|
|
+ let keeps = fieldNameArr ? fieldNameArr : [];
|
|
|
+ // 这两个默认是要保留的
|
|
|
+ if (!keeps.includes('common')) keeps.push('common');
|
|
|
+ if (!keeps.includes('estimate')) keeps.push('estimate');
|
|
|
+
|
|
|
+ for (let i = 0; i < treeNode.data.fees.length; i++) {
|
|
|
+ if (!keeps.includes(treeNode.data.fees[i].fieldName)) {
|
|
|
+ delete treeNode.data.feesIndex[treeNode.data.fees[i].fieldName];
|
|
|
+ treeNode.data.fees.splice(i, 1);
|
|
|
+ treeNode.changed = true;
|
|
|
}
|
|
|
- }
|
|
|
- else{ // 总造价清单只留common, estimate两个费用类别。其它公式清单只留common。
|
|
|
- let reserveArr = calcTools.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;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -1928,7 +1918,7 @@ class CalcProgram {
|
|
|
else if (treeNode.calcType == treeNodeCalcType.ctNull){
|
|
|
delete treeNode.data.gljList;
|
|
|
deleteProperties(treeNode, ['calcBase', 'calcBaseValue', 'tenderCalcBaseValue', 'programID']);
|
|
|
- deleteUselessFees(treeNode, ['common', 'rationCommon']);
|
|
|
+ deleteUselessFees(treeNode, ['rationCommon']);
|
|
|
// 不能直接删除该属性,否则无法冲掉库中已存储的值。下同。
|
|
|
/* if (treeNode.data.calcBase){
|
|
|
treeNode.data.calcBase = null;
|