| 
					
				 | 
			
			
				@@ -6,7 +6,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let gljUtil = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    calcProjectGLJQuantity:function (projectGLJDatas,rationGLJDatas,rationDatas,billsDatas,q_decimal,_,scMathUtil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    calcProjectGLJQuantity:function (projectGLJDatas,rationGLJDatas,rationDatas,billsDatas,q_decimal,_,scMathUtil,isTender) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let project_gljs = projectGLJDatas.gljList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let mixRatioMap = projectGLJDatas.mixRatioMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rations = rationDatas; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,16 +15,20 @@ let gljUtil = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rationGljGroup = _.groupBy(rationGLJDatas,'projectGLJID'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let IDarray =  this.getSubdivisionAndTechBillsLeavesID(billsDatas);//分别取分部分项和技术措施项目的所有叶子清单ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let billIDs = IDarray[0],tech_billIDS = IDarray[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let sField = isTender==true?"tenderSubdivisionQuantity":"subdivisionQuantity"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let tField = isTender==true?"tenderTechQuantity":"techQuantity"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let qField = isTender==true?"tenderQuantity":"quantity"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for(let pglj of project_gljs ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let pg_index = this.getIndex(pglj,this.gljKeyArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pglj.subdivisionQuantity = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pglj.techQuantity = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pglj.quantity = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pglj[sField] = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pglj[tField] = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pglj[qField] = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let gljGroup = rationGljGroup[pglj.id]?rationGljGroup[pglj.id]:[];//定额工料机没有,有可能是定额类型的工料机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let result = this.getQuantityPerGLJ(gljGroup,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pglj.subdivisionQuantity = result.subdivisionQuantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pglj.techQuantity = result.techQuantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pglj.quantity = result.quantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let result = this.getQuantityPerGLJ(gljGroup,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil,isTender); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pglj[sField] = result.subdivisionQuantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pglj[tField] = result.techQuantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pglj[qField] = result.quantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             quantityMap[pg_index] = pglj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //计算做为组成物的消耗量 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,20 +39,17 @@ let gljUtil = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let m_glj = quantityMap[m_index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let p_glj = quantityMap[pkey]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if(m_glj&&p_glj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let quantity = scMathUtil.roundForObj(parseFloat(p_glj.quantity)*parseFloat(m.consumption),q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let techQuantity = scMathUtil.roundForObj(parseFloat(p_glj.techQuantity)*parseFloat(m.consumption),q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    let subdivisionQuantity = scMathUtil.roundForObj(parseFloat(p_glj.subdivisionQuantity)*parseFloat(m.consumption),q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    m_glj.quantity =  scMathUtil.roundForObj(parseFloat(m_glj.quantity)+quantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    m_glj.techQuantity =  scMathUtil.roundForObj(parseFloat(m_glj.techQuantity)+techQuantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    m_glj.subdivisionQuantity =  scMathUtil.roundForObj(parseFloat(m_glj.subdivisionQuantity)+subdivisionQuantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(m_glj.id == 6832){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        console.log(m_glj.quantity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let quantity = scMathUtil.roundForObj(parseFloat(p_glj[qField])*parseFloat(m.consumption),q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let techQuantity = scMathUtil.roundForObj(parseFloat(p_glj[tField])*parseFloat(m.consumption),q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let subdivisionQuantity = scMathUtil.roundForObj(parseFloat(p_glj[sField])*parseFloat(m.consumption),q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m_glj[qField] =  scMathUtil.roundForObj(parseFloat(m_glj[qField])+quantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m_glj[tField] =  scMathUtil.roundForObj(parseFloat(m_glj[tField])+techQuantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m_glj[sField] =  scMathUtil.roundForObj(parseFloat(m_glj[sField])+subdivisionQuantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getQuantityPerGLJ : function (ration_glj_list,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getQuantityPerGLJ : function (ration_glj_list,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil,isTender) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let result={}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let quantity_sum=0;//工料机汇总消耗量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sum = 0;//分部分项总消耗量 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -60,6 +61,10 @@ let gljUtil = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(!r_quantity){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(isTender == true){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                glj_quantity = this.getRationGLJTenderQuantity(rg,tem_ration,q_decimal,scMathUtil); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                r_quantity = this.getRationTenderQuantity(tem_ration,q_decimal,scMathUtil); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let total = scMathUtil.roundForObj(glj_quantity*r_quantity, q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             quantity_sum = scMathUtil.roundForObj(quantity_sum+total,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(_.includes(billIDs,rg.billsItemID)){//计算分部分项 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -73,6 +78,9 @@ let gljUtil = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(ra.type == this.rationType.gljRation&&ra.projectGLJID===pglj.id){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let r_quantity = scMathUtil.roundForObj(ra.quantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 r_quantity = r_quantity?r_quantity:0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(isTender == true){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    r_quantity = this.getRationTenderQuantity(ra,q_decimal,scMathUtil); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 quantity_sum = scMathUtil.roundForObj(quantity_sum+r_quantity,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if(_.includes(billIDs,ra.billsItemID)){//计算分部分项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sum = scMathUtil.roundForObj(sum+r_quantity,q_decimal); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -88,6 +96,37 @@ let gljUtil = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         result.quantity = quantity_sum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getRationGLJTenderQuantity:function (ration_glj,ration,q_decimal,scMathUtil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let coeMap = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          1:'labour',  //人工 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          2:'material',//材料 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          3:'machine',//机械 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          4:'main', //主材 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          5:'equipment'//设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let typeString = ration_glj.type +""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let coeField = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let key in coeMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(typeString.indexOf(key)!= -1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              coeField = coeMap[key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let coe = ration.quantityCoe&&this.isNotEmpty(ration.quantityCoe[coeField])?ration.quantityCoe[coeField]:1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coe = parseFloat(coe); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let glj_quantity = scMathUtil.roundForObj(ration_glj.quantity, q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return scMathUtil.roundForObj(glj_quantity * coe,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getRationTenderQuantity:function (ration,q_decimal,scMathUtil) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rationQuantityCoe = this.isNotEmpty(ration.rationQuantityCoe)?ration.rationQuantityCoe:1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rationQuantityCoe = parseFloat(rationQuantityCoe); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let r_quantity = ration?scMathUtil.roundForObj(ration.quantity,q_decimal):0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return scMathUtil.roundForObj(r_quantity * rationQuantityCoe,q_decimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isNotEmpty:function (str) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return this.isDef(str) && str!=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     getSubdivisionAndTechBillsLeavesID:function (billsDatas) {//分别取分部分项和技术措施项目的所有叶子清单ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          if(typeof (projectObj) !== 'undefined'){//存在,说明在前端调用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              return [projectObj.project.Bills.getSubdivisionProjectLeavesID(),projectObj.project.Bills.getTechLeavesID()]; 
			 |