| 
					
				 | 
			
			
				@@ -111,6 +111,7 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.mixRatioSheet = this.mixRatioSpread .getSheet(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.initSheet(this.mixRatioSheet,this.mixRatioSetting); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.mixRatioSheet.name('mixRatioSheet'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.mixRatioSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onMixRatioRangeChange); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     initMaterialTreeSheet:function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.materialTreeSheet = this.projectGljSpread.getSheet(1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -225,7 +226,8 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             type:glj.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             short_name:projectObj.project.projectGLJ.getShortNameByID(glj.type), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             consumption:glj.ratio_data.consumption, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            unit_price:glj.unit_price 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            unit_price:glj.unit_price, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            connect_key:glj.ratio_data.connect_key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         gljOprObj.setGLJPrice(data,glj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return data; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -238,7 +240,7 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             args.cancel = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    projectGljEditChecking:function (row,col) {//return false表示不能编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    projectGljEditChecking:function (row,col,isPaste=false) {//return false表示不能编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let data = null, setting=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sheet = me.projectGljSpread.getActiveSheet(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -256,7 +258,7 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(dataCode=='is_adjust_price'||dataCode=='is_evaluate'||dataCode=='is_main_material'){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(isPaste == false &&(dataCode=='is_adjust_price'||dataCode=='is_evaluate'||dataCode=='is_main_material')){//除了粘贴,拖动填充等操作,其它的都不能编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(dataCode=='basePrice'||dataCode=='marketPrice'||dataCode=='supply'){//有组成物时,市场单价、定额价、供货方式不能修改 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -282,7 +284,7 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     onSelectionChange:function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        me.projectGljRowChang(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.showMixRatioData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.materialTreeSheet.repaint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     onProjectGljSelectionChange:function (sender, args) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -296,7 +298,11 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     projectGljRowChang:function(row){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        me.mixRatioSheet.getSelections()[0].row = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let sel = me.mixRatioSheet.getSelections()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sel.row = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sel.col = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sel.rowCount = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sel.colCount = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.showMixRatioData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     rightClickCallback:function (row) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -312,18 +318,20 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let changeInfo=[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let canChange = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(me.projectGljEditChecking(info.row,info.col) == false){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            canChange = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }else if (info.action == GC.Spread.Sheets.RangeChangedAction.clear) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            info.newValue = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            me.onProjectGLJValueChange(sender,info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(info.action == GC.Spread.Sheets.RangeChangedAction.clear){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(me.projectGljEditChecking(info.row,info.col) == false){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                canChange = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                info.newValue = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.onProjectGLJValueChange(sender,info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for(let c of info.changedCells){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let value=  info.sheet.getCell(c.row, c.col).text(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             changeInfo.push({row:c.row,col:c.col,value:value}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(me.projectGljEditChecking(c.row,c.col)==false){//如果不能编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(me.projectGljEditChecking(c.row,c.col,true)==false){//如果不能编辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 canChange = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (canChange==true&&!me.checkData(c.col,me.projectGljSetting,value)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -334,18 +342,87 @@ projectGljObject={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(canChange == false){//恢复原来的值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             info.sheetName =="materialTreeSheet"?me.showMaterialTreeData():me.showProjectGljData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }else if(info.sheetName =="projectGljSheet"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            me.batchUpdatePrice(changeInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.batchUpdateProjectGLJ(changeInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    batchUpdatePrice(changeInfo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMixRatioRangeChange:function (sender,info){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let canChange = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let changeInfo=[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (info.action == GC.Spread.Sheets.RangeChangedAction.clear) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            info.newValue = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.onMixRatioValueChange(sender,info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            info.sheet.getCell(info.row, info.col).text(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let c of info.changedCells){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let value = info.sheet.getCell(c.row, c.col).text(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!me.checkData(c.col,me.mixRatioSetting,value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alert('输入的数据类型不对,请重新输入!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                canChange = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                changeInfo.push({row:c.row,col:c.col,value:value}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(canChange == false){//数据类型不对 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.showMixRatioData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(changeInfo.length > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.batchUpdateConsumption(changeInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    batchUpdateProjectGLJ:function(changeInfo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let projectGLJ = projectObj.project.projectGLJ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.batchUpdateGLJProperty(changeInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         projectGLJ.batchUpdatePrice(changeInfo,function (impactList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let selected = me.projectGljSheet.getSelections()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.showProjectGljData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.projectGljSheet.setSelection(selected.row,selected.col,selected.rowCount,selected.colCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    batchUpdateGLJProperty:function (changeInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(changeInfo) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    batchUpdateConsumption:function(changeInfo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let projectGLJ = projectObj.project.projectGLJ; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = projectGljObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let updateMap = {},updateData = [],parentBasePrice = 0,parentMarketPrice = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let parentKey = '',unit_price_file_id=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let c of changeInfo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let record = me.mixRatioData[c.row]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let value = scMathUtil.roundForObj(c.value,getDecimal("glj.quantity")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateMap[record.mix_ratio_id] = {consumption: value,record:record }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateData.push({type:'mix_ratio',query:{id:record.mix_ratio_id},doc:{consumption:value}}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            parentKey = record.connect_key; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            unit_price_file_id = record.unit_price.unit_price_file_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let sub of me.mixRatioData){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let marketPrice = scMathUtil.roundForObj(sub.unit_price.market_price,getDecimal("process")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let basePrice = scMathUtil.roundForObj(sub.unit_price.base_price,getDecimal("process")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let consumption =  updateMap[sub.mix_ratio_id]?updateMap[sub.mix_ratio_id].consumption:scMathUtil.roundForObj(sub.consumption,getDecimal("glj.quantity")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            parentMarketPrice = scMathUtil.roundForObj(marketPrice*consumption + parentMarketPrice,getDecimal("process")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            parentBasePrice = scMathUtil.roundForObj(basePrice*consumption + parentBasePrice,getDecimal("process")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        parentBasePrice = scMathUtil.roundForObj(parentBasePrice,getDecimal("glj.unitPrice")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        parentMarketPrice = scMathUtil.roundForObj(parentMarketPrice,getDecimal("glj.unitPrice")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateData.push({type:'parent',connect_key:parentKey,base_price:parentBasePrice,market_price:parentMarketPrice,unit_price_file_id:unit_price_file_id}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        projectGLJ.batchUpdateConsumption(updateData,updateMap,function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //更新人材机汇总表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let parentSheet =  me.projectGljSpread.getActiveSheet();//三材汇总表和工料机汇总表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let prow = parentSheet.getActiveRowIndex();//取父机械或组成物的下标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.refreshParentData(prow,prowData.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.onUnitFileChange(updateData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     showProjectGljData:function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.projectGljSpread.setActiveSheetIndex(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sel = this.projectGljSheet.getSelections()[0]; 
			 |