|  | @@ -977,8 +977,26 @@ class CalcProgram {
 | 
	
		
			
				|  |  |              me.saveNodes(needSaveNodes);
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -    calcRationsAndSave(nodes){//计算批量替换工料机后受影响的定额,同时将结果打包保存
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    calcRationsAndSave(raitonNodes){//计算批量替换工料机后受影响的定额,同时将结果打包保存
 | 
	
		
			
				|  |  | +        let me = this, leafBills = [], changedNodes = [];
 | 
	
		
			
				|  |  | +        for (let node of raitonNodes) {
 | 
	
		
			
				|  |  | +            me.calculate(node, false);
 | 
	
		
			
				|  |  | +            if (node.changed) changedNodes.push(node);
 | 
	
		
			
				|  |  | +            let leafBill = node.parent;
 | 
	
		
			
				|  |  | +            if (leafBill && leafBills.indexOf(leafBill) < 0) leafBills.push(leafBill);      // 多条定额同属一条叶子清单时,避免叶子清单重复计算
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for (let node of leafBills){
 | 
	
		
			
				|  |  | +            me.calculate(node);
 | 
	
		
			
				|  |  | +            let cur = node;
 | 
	
		
			
				|  |  | +            while (cur) {
 | 
	
		
			
				|  |  | +                if (cur.changed && changedNodes.indexOf(cur) < 0) changedNodes.push(cur);
 | 
	
		
			
				|  |  | +                cur = cur.parent;
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        me.saveNodes(changedNodes);
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |