| 
					
				 | 
			
			
				@@ -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; 
			 |