| 
					
				 | 
			
			
				@@ -4,14 +4,15 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let mbzm_obj={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     spread:null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    nodeChanged:false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     datas:[], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setting:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         header: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {headerName: "编码", headerWidth: 130, dataCode: "code", dataType: "String", formatter: "@"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {headerName: "模板类别", headerWidth: 260, dataCode: "name", dataType: "String", hAlign: "left"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number",validator:"number"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",decimalField: "ration.quantity"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",validator:"number"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {headerName: "关联类别", headerWidth: 100, dataCode: "type", dataType: "String"}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {headerName: "清单位置", headerWidth: 200, dataCode: "position", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,16 +22,33 @@ let mbzm_obj={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         getText:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             forPosition:function (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let createL =  $('#createLocation').val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(createL == 1) return  mbzm_obj.getDisplayText(item.billID,item.billsLocation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(createL == 2) return  mbzm_obj.getDisplayText(item.fxID,""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getDisplayText:function (billID,position) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(billID && billID!=''){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let node = projectObj.project.mainTree.getNodeByID(billID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(node){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let code = node.data.code?node.data.code:""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let name = node.data.name?node.data.name:""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return code +" "+name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return  position; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //当点击应用的时候才保存数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     initSpread:function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.spread = SheetDataHelper.createNewSpread($("#mbzmSpread")[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sheetCommonObj.spreadDefaultStyle(this.spread); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.sheet = this.spread.getSheet(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sheetCommonObj.initSheet(this.sheet, this.setting); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.sheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSheetValueChange); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.spread.bind(GC.Spread.Sheets.Events.ButtonClicked, installationFeeObj.onPositionButtonClick);//共用一个位置选择器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.sheet.name('ration_template'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     refresh:function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let total = $('#mbzmSpread').parent().height(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,32 +56,63 @@ let mbzm_obj={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $('#mbzmSpread').css('height',total- b_height); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.spread?this.spread.refresh():this.initSpread(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    refreshSheetData:function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheetCommonObj.showData(this.sheet, this.setting,this.datas); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     showMBZMData:function(node){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let selected = node?node:projectObj.project.mainTree.selected; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let datas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $("#createLocation").val(1);//初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(selected&&selected.sourceType == "ration"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let ration = selected.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let  template = projectObj.project.ration_template.getTemplateByRationID(ration.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(template) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $("#createLocation").val(template.createLocation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let pcol = _.findIndex(this.setting.header,{dataCode:"position"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.setting.header[pcol].visible = template.createLocation == 3?false:true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                datas = _.cloneDeep(template.templateList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(this.nodeChanged == true){//选中的行改变了才做初始化,刷新当前缓存, 在project_view 中treeSelectedChanged方法里设置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let datas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $("#createLocation").val(1);//初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(selected&&selected.sourceType == "ration"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let ration = selected.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let  template = projectObj.project.ration_template.getTemplateByRationID(ration.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(template) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    $("#createLocation").val(template.createLocation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let pcol = _.findIndex(this.setting.header,{dataCode:"position"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.setting.header[pcol].visible = template.createLocation == 3?false:true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    datas = _.cloneDeep(template.templateList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.datas = datas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.nodeChanged = false;//这里要恢复成false 应为调用gljObj.refresh() 方法也会进到这里来,这时节点应是没有改变的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.datas = datas; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sheetCommonObj.showData(this.sheet, this.setting,this.datas); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.sheet.setRowCount(this.datas.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onSheetValueChange:function (e,info) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = mbzm_obj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let selected = projectObj.project.mainTree.selected; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let row = info.row, col = info.col; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let dataCode = me.setting.header[col].dataCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let recode = me.datas[row], value = info.newValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (info.newValue === undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (value && !sheetCommonObj.checkData(col, me.setting, value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alert('输入的数据类型不对,请重新输入!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.refreshSheetData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (dataCode === 'coe') {//默认为0,可输入数值,输入数值后,后面的工程量=混凝土子目工程量*系数。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let rationQuantity = selected.data.quantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rationQuantity = rationQuantity?scMathUtil.roundForObj(rationQuantity, getDecimal('ration.quantity')):0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            value = scMathUtil.roundForObj(value, getDecimal('process')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            recode["quantity"] = scMathUtil.roundForObj(rationQuantity * value, getDecimal('ration.quantity'))+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (dataCode === 'quantity') {//定额默认显示为0,可输入数值,输入数值后,则清空前面的系数列 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            value = scMathUtil.roundForObj(value, getDecimal('ration.quantity'))+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            recode["coe"] = "0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        recode[dataCode] = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.refreshSheetData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $('#createLocation').change(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let me = mbzm_obj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let pcol = _.findIndex(me.setting.header,{dataCode:"position"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    me.setting.header[pcol].visible = template.createLocation == 3?false:true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $(this).val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    me.setting.header[pcol].visible =  $(this).val() == 3?false:true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    me.refreshSheetData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    mbzm_obj.showMBZMData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 |