/** * Created by zhang on 2018/5/30. */ let zmhs_obj = { coeSpread:null, coeSheet:null, coeSheetData:[], coeSetting: { header: [ {headerName: "调整", headerWidth: 45, dataCode: "isAdjust", dataType: "String", cellType: "checkBox"}, {headerName: "条件", headerWidth: 150, dataCode: "name", dataType: "String", cellType: "button"}, {headerName: "内容", headerWidth: 350, dataCode: "content", dataType: "String", hAlign: "left"} ], view: { lockColumns:[0,1,2] } }, assSpread:null, assSheet:null, assSheetData: [], assSetting: { header: [ {headerName: "调整名称", headerWidth: 100, dataCode: "name", dataType: "String"}, {headerName: "定额值", headerWidth: 120, dataCode: "stdValue", hAlign: "right", dataType: "String"}, {headerName: "实际值", headerWidth: 120, dataCode: "actualValue", hAlign: "right", dataType: "String"} ], view: { lockColumns: [0, 1] } }, initSpread:function () { this.coeSpread = SheetDataHelper.createNewSpread($("#coeSpread")[0]); sheetCommonObj.spreadDefaultStyle(this.coeSpread); this.assSpread = SheetDataHelper.createNewSpread($("#assSpread")[0]); sheetCommonObj.spreadDefaultStyle(this.assSpread); this.coeSheet = this.coeSpread.getSheet(0); sheetCommonObj.initSheet(this.coeSheet, this.coeSetting, 30); this.coeSheet.name('ration_coe'); this.coeSheet.bind(GC.Spread.Sheets.Events.CellClick, this.onCoeCellClick); this.coeSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, this.onButtonClick); this.coeSheet.bind(GC.Spread.Sheets.Events.EditStarting, function (e,args) { //args.cancel = true; }); this.assSheet = this.assSpread.getSheet(0); sheetCommonObj.initSheet(this.assSheet, this.assSetting, 30); this.assSheet.bind(GC.Spread.Sheets.Events.EditEnded, this.onAssEditEnded); this.assSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onAssRangeChanged); this.assSheet.name('ration_ass'); SheetDataHelper.protectdSheet(this.coeSheet); if(projectReadOnly){ disableSpread(zmhs_obj.coeSpread); } }, showCoeData:function (node) { let selected = node?node:projectObj.project.mainTree.selected; let ration_coe = projectObj.project.ration_coe; let coeList = []; if(selected&&selected.sourceType == "ration"){ let ration = selected.data; coeList = ration_coe.getCoeByRationID(ration.ID); } sheetCommonObj.showData(this.coeSheet, this.coeSetting,coeList); if (coeList.length > 0) { var cus_index = _.findIndex(coeList, function (item) { return item.coeID == -1; }) if (cus_index != -1) { this.coeSheet.getCell(cus_index, 1, GC.Spread.Sheets.SheetArea.viewport).locked(false); this.coeSheet.setCellType(cus_index, 1, sheetCommonObj.getCustomerCoeCellType(this.generateHtmlString,this.bindCusEditorValue,this.updateCusCoeAfterEditor), GC.Spread.Sheets.SheetArea.viewport); } } this.coeSheetData = coeList; }, showAssData:function (node) { this.assSheet.suspendPaint(); this.assSheet.suspendEvent(); let selected = node?node:projectObj.project.mainTree.selected; let assList = selected&&selected.data.rationAssList ? selected.data.rationAssList : []; this.assSheet.setRowCount(0); sheetCommonObj.showData(this.assSheet, this.assSetting, assList); this.assSheetData = assList; this.assSheet.getRange(assList.length,-1,this.assSheet.getRowCount()-assList.length, -1, GC.Spread.Sheets.SheetArea.viewport).locked(true); this.assSheet.resumePaint(); this.assSheet.resumeEvent(); }, refresh:function () { this.coeSpread?this.coeSpread.refresh():''; this.assSpread?this.assSpread.refresh():''; }, showZMHSData:function (node) { if(this.coeSpread&& this.assSpread && $('#linkZMHS').hasClass('active')){ this.showCoeData(node); this.showAssData(node); } }, onCoeCellClick: function (sender, args) { let me = zmhs_obj; let sheet = args.sheet, row = args.row, col = args.col; if(sheet.getCell(row, col).locked() !=true){ if(!sheet.isEditing()) sheet.startEdit(); } }, onButtonClick:function (sender, args) { let me = zmhs_obj; let sheet = args.sheet, row = args.row, col = args.col; let cellType = sheet.getCellType(row, col); if (args.sheetName == 'ration_coe' && cellType instanceof GC.Spread.Sheets.CellTypes.CheckBox) { me.onCoeCheckBoxClick(sender, args) } }, bindCusEditorValue:function(context){ let me = zmhs_obj; if(me.coeSheetData[context.row]){ let data = me.coeSheetData[context.row]; $('#coe_ration').val(data.coes[0].amount); $('#manual').val(data.coes[1].amount); $('#material').val(data.coes[2].amount); $('#manchine').val(data.coes[3].amount); $('#mainM').val(data.coes[4].amount); $('#equipment').val(data.coes[5].amount); } }, updateCusCoeAfterEditor:function(){ let me = zmhs_obj; let result = me.checkIfNeedUpdate(); if (result.isNeed) { projectObj.project.ration_coe.updateCustomerCoe(result); } }, onInputChange(id, name){ var coe = _.find(zmhs_obj.coeSheetData, function (c) { return c.coeID == -1; }); var newValue = zmhs_obj.numberValueChecking($('#' + id).val()); if (newValue) { newValue = _.round(newValue, 2); if (newValue == coe.coes[name].amount) return; if (id == 'coe_ration') { $('#coe_ration').val(newValue); $('#manual').val(newValue); $('#material').val(newValue); $('#manchine').val(newValue); $('#mainM').val(newValue); $('#equipment').val(newValue); } else { $('#' + id).val(newValue); } } else { $('#' + id).val(coe.coes[name].amount); } }, checkIfNeedUpdate(){ var data = _.find(zmhs_obj.coeSheetData, function (c) { return c.coeID == -1; }); var result = { isNeed: false } var coe_ration = $('#coe_ration').val(); var manual = $('#manual').val(); var material = $('#material').val(); var manchine = $('#manchine').val(); var mainM = $('#mainM').val(); var equipment = $('#equipment').val(); if (coe_ration != data.coes[0].amount) { result.isNeed = true; data.coes[0].amount = coe_ration; } if (manual != data.coes[1].amount) { result.isNeed = true; data.coes[1].amount = manual; } if (material != data.coes[2].amount) { result.isNeed = true; data.coes[2].amount = material; } if (manchine != data.coes[3].amount) { result.isNeed = true; data.coes[3].amount = manchine; } if (mainM != data.coes[4].amount) { result.isNeed = true; data.coes[4].amount = mainM; } if (equipment != data.coes[5].amount) { result.isNeed = true; data.coes[5].amount = equipment; } if (result.isNeed) { result.doc = { coes: data.coes }; result.query = { projectID: data.projectID, ID: data.ID, rationID: data.rationID }; } return result; }, numberValueChecking: function (val) { var newval = Number(val); if (number_util.isNumber(newval)) { return newval; } else { if (val) { alert('您输入的数据类型不正确,请重新输入。'); } newval = null; } return newval; }, onCoeCheckBoxClick:function (sender, args) { let me = zmhs_obj; let checkboxValue = args.sheet.getCell(args.row, args.col).value(); let newval = 0; if (checkboxValue) { newval = 0; args.sheet.getCell(args.row, args.col).value(newval); } else { newval = 1; args.sheet.getCell(args.row, args.col).value(newval); } let recode = me.coeSheetData[args.row]; projectObj.project.ration_coe.adjustCoeClick(recode, newval); }, generateHtmlString: function (context,cellRect) { let me = zmhs_obj; let height = cellRect.height; let newString = "
自定义系数
"; newString += me.getOneRow('定额', 0, 'coe_ration',height); newString += me.getOneRow('人工', 1, 'manual',height); newString += me.getOneRow('材料', 2, 'material',height); newString += me.getOneRow('机械', 3, 'manchine',height); newString += me.getOneRow('主材', 4, 'mainM',height); newString += me.getOneRow('设备', 5, 'equipment',height); newString += "
"; return newString; }, getOneRow: function (text, name, id,inputHeight) { var rowstr = "" + text + ":"; return rowstr; }, coeStartEdit(){ if(zmhs_obj.coeSheet.isEditing()){ return; }else { zmhs_obj.coeSheet.startEdit(); } }, onAssEditEnded:function (e,args) { var me = zmhs_obj; if (args.row >= me.assSheetData.length) { me.assSheet.getCell(args.row, args.col).value(null); return; } if (me.assSetting.header[args.col].dataCode == 'actualValue') {//实际值 me.updateRationAss(args); } }, onAssRangeChanged:function (e,args) { let me = zmhs_obj; if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) { args.editingText = null; }else if(args.action == GC.Spread.Sheets.RangeChangedAction.paste){ args.editingText = args.sheet.getCell(args.row,args.col).value(); } if (args.sheetName == 'ration_ass') { me.updateRationAss(args); } }, updateRationAss: function (args) { var me = zmhs_obj; var newval; newval = me.numberValueChecking(args.editingText); var recode = me.assSheetData[args.row]; if (args.editingText === null) { newval = parseFloat(recode.stdValue); } var isValidate = false; if (newval) { isValidate = me.checkingActualValue(recode, newval) } if (isValidate) { newval = scMathUtil.roundTo(newval, -2); projectObj.project.ration_ass.updateActualValue(me.assSheetData, args.row, newval) } else { newval = recode.actualValue; me.assSheet.getCell(args.row, args.col).value(newval); } }, checkingActualValue(record, newval){ let minExist = record.minValue && record.minValue != '0' ? true : false; let maxExist = record.maxValue && record.maxValue != '0' ? true : false; let minValue = parseFloat(record.minValue); let maxValue = parseFloat(record.maxValue); if (!maxExist && minExist) { if (newval < minValue) { alert('实际值应≥' + minValue); return false; } } if (maxExist && !minExist) { if (newval > maxValue) { alert('实际值应≤' + maxValue); return false; } } if (maxExist && minExist) { if (newval < minValue || newval > maxValue) { alert('实际值应介于' + minValue + '~' + maxValue + '之间'); return false; } } return true; } };