/** * Created by CSL on 2017-08-03. * 计算程序管理。 */ let calcProgramManage = { datas: [], mainSpread: null, detailSpread: null, mainSetting: { header:[ // {headerName:"ID",headerWidth:80,dataCode:"ID", hAlign: "center"}, {headerName:"名称",headerWidth:200,dataCode:"name", dataType: "String"} ], view:{ comboBox:[], lockColumns:[0,1], colHeaderHeight: CP_Col_Width.colHeader, rowHeaderWidth: CP_Col_Width.rowHeader } }, detailSetting: { header:[ // {headerName:"ID",headerWidth:80,dataCode:"ID", hAlign: "center"}, {headerName:"费用代号",headerWidth:CP_Col_Width.code, dataCode:"code", dataType: "String"}, {headerName:"费用名称",headerWidth:CP_Col_Width.name, dataCode:"name", dataType: "String"}, {headerName:"计算基数",headerWidth:CP_Col_Width.dispExprUser, dataCode:"dispExprUser", dataType: "String"}, {headerName:"费率",headerWidth:CP_Col_Width.feeRate, dataCode:"feeRate", dataType: "Number",hAlign: "right",decimalField:"feeRate"}, {headerName:"费用类别",headerWidth:CP_Col_Width.displayFieldName, dataCode:"displayFieldName", dataType: "String", hAlign: "center"}, {headerName:"基数说明",headerWidth:CP_Col_Width.statement, dataCode:"statement", dataType: "String"}, {headerName:"备注",headerWidth:CP_Col_Width.memo, dataCode:"memo", dataType: "String"} ], view:{ comboBox:[], lockColumns:[0,1,2,5,6], colHeaderHeight: CP_Col_Width.colHeader, rowHeaderWidth: CP_Col_Width.rowHeader } }, buildSheet: function (){ let me = this; me.datas = projectObj.project.calcProgram.datas.templates; if (me.mainSpread) { me.mainSpread.destroy(); me.mainSpread = null; }; if (me.detailSpread) { me.detailSpread.destroy(); me.detailSpread = null; }; me.mainSpread = sheetCommonObj.buildSheet($('#mainSpread')[0], me.mainSetting, me.datas.length); me.detailSpread = sheetCommonObj.buildSheet($('#detailSpread')[0], me.detailSetting, me.datas[0].calcItems.length); let arr = projectObj.project.calcProgram.compiledFeeTypeNames.slice(); arr.splice(arr.findIndex(function (e){return e == '暂估费'}), 1); let fieldName = new GC.Spread.Sheets.CellTypes.ComboBox(); fieldName.items(arr); me.detailSpread.getSheet(0).getRange(-1, 4, -1, 1).cellType(fieldName); me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell); me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onDetailCellChanged); me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded); let mSheet = me.mainSpread.getSheet(0); sheetCommonObj.showData(mSheet, me.mainSetting, me.datas); let dSheet = me.detailSpread.getSheet(0); feeRateObject.setFeeRateCellCol(dSheet,_.findIndex(me.detailSetting.header,{'dataCode':'feeRate'})); dSheet.name('calc_detail'); sheetCommonObj.showData(dSheet, me.detailSetting, me.datas[0].calcItems); }, onMainEnterCell: function(sender, args) { var me = calcProgramManage; var row = args.sheet.getActiveRowIndex(); me.detailSpread.suspendPaint(); var dSheet = me.detailSpread.getSheet(0); var dData = me.datas[row].calcItems; dSheet.setRowCount(dData.length, GC.Spread.Sheets.SheetArea.viewport); sheetCommonObj.showData(dSheet, me.detailSetting, dData); me.detailSpread.resumePaint(); }, onEditEnded: function(sender, args) { let me = calcProgramManage; let editInfo= me.getSelectionInfo(); if(me.detailSetting.header[args.col].dataCode == 'feeRate'){ projectObj.project.FeeRate.updateFeeRateFromCalc(args.editingText,editInfo); }else { if(me.detailSetting.header[args.col].dataCode == 'displayFieldName'){ if (editInfo.calcItem.displayFieldName == args.editingText) return; editInfo.calcItem.fieldName = projectObj.project.calcProgram.compiledFeeTypeMaps[args.editingText]; editInfo.calcItem.displayFieldName = args.editingText; // 这句不入库,仅用于切换后再切换回来时界面正确显示 }; let data = { 'projectID': projectObj.project.ID(), 'templatesID': editInfo.template.ID, 'calcItem': editInfo.calcItem }; me.saveCalcItem(data, function (rst) { if (rst){ } }); } }, saveCalcItem: function (data,callback) {//data let me = this; $.ajax({ type: 'POST', url: '/calcProgram/saveCalcItem', data: {'data':JSON.stringify(data)}, dataType: 'json', success: function (result) { if(!result.error){ if(callback){ callback(result); } } else{ alert('失败:' + result.message); } } }) }, getSelectionInfo:function () { var templateIndex = this.mainSpread.getActiveSheet().getActiveRowIndex(); var dIndex = this.detailSpread.getActiveSheet().getActiveRowIndex(); var info = { template:this.datas[templateIndex], calcItem:this.datas[templateIndex].calcItems[dIndex] } return info; }, refreshDetailSheet:function () { var me=this; if(me.mainSpread&&me.detailSpread){ var mainSheetIndex = me.mainSpread.getActiveSheet().getActiveRowIndex(); sheetCommonObj.showData(me.detailSpread.getSheet(0), me.detailSetting,me.datas[mainSheetIndex].calcItems); } } }; $(document).ready(function(){ $('#tab_calc_program_manage').on('shown.bs.tab', function (e) { $(e.relatedTarget.hash).removeClass('active'); calcProgramManage.buildSheet(); }); });