/** * Created by chen on 2017/8/1. */ var subRateObject={ views:null, datas:null, valueMap:null, canEdit:true, subRateSpread:null, subRateSheet:null, subRateSetting:{ header: [ {headerName: "参数名称", headerWidth: 160, dataCode: "name", dataType: "String"}, {headerName: "参数值", headerWidth: 150, dataCode: "optionValue", dataType: "String",getText:'forOption'} ], view: { lockColumns: [0] }, getText:{ forOption:function (item,val) { if(item.isSub == true) return item.value;//可编辑子节点 let o = _.find(item.optionList,{'selected':true}); if(gljUtil.isDef(o)){ return o.name; }else { if(item.editable==true) return item.value; } } } }, options :{ allowSorting: false, showRowHeader: true, colMinWidth: 80, rowHeight: 33, allowEditing: this.canEdit, editMode: 'inline', editUnit: 'cell', selectionUnit:(this.canEdit == true) ? "cell" : "row" }, initSubRateSpread:function (item) { if(this.subRateSpread == null){ this.subRateSpread = SheetDataHelper.createNewSpread($("#subRate")[0]); sheetCommonObj.spreadDefaultStyle(this.subRateSpread); this.subRateSheet = this.subRateSpread.getSheet(0); sheetCommonObj.initSheet(this.subRateSheet, this.subRateSetting, 30); this.subRateSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, this.onSubRateSelectChanged); this.subRateSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onSubRateValueChange); //this.subRateSheet.bind(GC.Spread.Sheets.Events.ValueChanged, me.onSheetValueChange); this.subRateSheet.name('subRateSheet'); } //subRateObject.valueMap=projectObj.project.FeeRate.getValueMap(item); subRateObject.showSubRateData(); disableRightMenu("subRate",this.subRateSpread); if(projectReadOnly){ if(this.subRateSetting.view.lockColumns){ this.subRateSetting.view.lockColumns = null; } disableSpread(this.subRateSpread); } }, showSubRateData:function () { let preSelections = this.subRateSheet.getSelections(); this.datas = projectObj.project.FeeRate.getAllSubRates(); this.subRateSheet.setRowCount(0); sheetCommonObj.showData(this.subRateSheet, this.subRateSetting, this.datas); this.subRateSheet.setRowCount(this.datas.length); let parentMap=_.groupBy(this.datas, 'ParentID'); let visibleMap = {}; this.subRateSheet.suspendPaint(); this.subRateSheet.suspendEvent(); for(let row =0; row < this.datas.length;row++){ this.setComboOptionCell(row,1,this.datas[row],this.subRateSheet); this.setTreeNodeCellType(this.datas,row,parentMap,visibleMap,this.subRateSheet); } this.subRateSheet.resumeEvent(); this.subRateSheet.resumePaint(); if(preSelections){//定位光标到之前的位置 this.subRateSheet.setSelection(preSelections[0].row,preSelections[0].col,preSelections[0].rowCount,preSelections[0].colCount); } }, onSubRateSelectChanged:function (e,info) { info.sheet.repaint(); }, setTreeNodeCellType:function (datas,row,parentMap,visibleMap,sheet) { delete parentMap.undefined;//去掉无用节点 let treeNode = sheetCommonObj.getTreeNodeCellType(datas,row,parentMap); treeNode.treeNodeType = false; if((datas[row].subList && datas[row].subList.length >0)||datas[row].isSub == true ){ treeNode.treeNodeType = true; visibleMap[datas[row].ID] = treeNode.collapsed; } sheet.setCellType(row, 0, treeNode, GC.Spread.Sheets.SheetArea.viewport); if(visibleMap[datas[row].ParentID]) sheet.getRange(row , -1, 1, -1).visible(!visibleMap[datas[row].ParentID]);//显示或隐藏 }, setComboOptionCell:function(row,col,subRate,sheet){ let options=[]; if(subRate.isSub == true) return;//是树节点的子节点; for(let op of subRate.optionList){ options.push(op.name); } let dynamicCombo = sheetCommonObj.getDynamicCombo();//new GC.Spread.Sheets.CellTypes.ComboBox(); dynamicCombo.items(options); if(subRate.editable == true) dynamicCombo.editable(true); sheet.setCellType(row, col, dynamicCombo, GC.Spread.Sheets.SheetArea.viewport); }, addComboboxOption:function (datas) { _.forEach(datas,function (item) { var selectvalue = 0; _.forEach(item.optionList,function (o) { var option = $("