|  | @@ -51,6 +51,9 @@ let calcTools = {
 | 
	
		
			
				|  |  |      isNullBill: function (treeNode) {
 | 
	
		
			
				|  |  |          return this.isLeafBill(treeNode) && (treeNode.children.length === 0) && (!treeNode.data.calcBase);
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    isInvalidNode: function (treeNode){  // 无效的、影响正常计算的行(无意义的空行、没有金额的行等)
 | 
	
		
			
				|  |  | +        return !(treeNode.data && treeNode.data.feesIndex && treeNode.data.feesIndex.common && treeNode.data.feesIndex.common.totalFee);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      isCalcBaseBill: function(treeNode){
 | 
	
		
			
				|  |  |          return this.isLeafBill(treeNode) && (treeNode.children.length === 0) && (treeNode.data.calcBase);
 | 
	
		
			
				|  |  |      },
 | 
	
	
		
			
				|  | @@ -2520,6 +2523,7 @@ class CalcProgram {
 | 
	
		
			
				|  |  |          let arr = [];
 | 
	
		
			
				|  |  |          for (let i = 0; i < tender_obj.tenderTree.items.length; i++) {
 | 
	
		
			
				|  |  |              let node = tender_obj.tenderTree.items[i];
 | 
	
		
			
				|  |  | +            if (calcTools.isInvalidNode(node)) continue;
 | 
	
		
			
				|  |  |              // 量价还是要参与,因为它贡献了金额,如果它的金额比重很大,它退出了,会导致其它结点过调。
 | 
	
		
			
				|  |  |              // if (calcTools.isRationCategory(node) && (!calcTools.isVP_or_GLJR(node))){
 | 
	
		
			
				|  |  |              if (calcTools.isRationCategory(node)){
 |