/** * Created by Tony on 2017/4/28. */ var sheetCommonObj = { // createSpread、initSheet 在一个Spread多个Sheet分别调用时的情况下使用。 // buildSheet 在一个Spread、一个Sheet的情况下使用。 createSpread: function(container, SheetCount){ var me = this; var spreadBook = new GC.Spread.Sheets.Workbook(container, { sheetCount: SheetCount }); spreadBook.options.allowCopyPasteExcelStyle = false; spreadBook.options.tabStripVisible = false; spreadBook.options.showHorizontalScrollbar = false; return spreadBook; }, initSheet: function(sheet, setting, rowCount) { var me = this; var spreadNS = GC.Spread.Sheets; sheet.suspendPaint(); sheet.suspendEvent(); sheet.setRowCount(1, spreadNS.SheetArea.colHeader); sheet.setColumnCount(setting.header.length, spreadNS.SheetArea.viewport); sheet.options.colHeaderAutoTextIndex = 1; sheet.options.colHeaderAutoText = spreadNS.HeaderAutoText.numbers; sheet.showRowOutline(false); me.buildHeader(sheet, setting); if (rowCount > 0) sheet.setRowCount(rowCount); sheet.resumeEvent(); sheet.resumePaint(); }, buildSheet: function(container, setting, rowCount) { var me = this; var spreadBook = new GC.Spread.Sheets.Workbook(container, { sheetCount: 1 }); spreadBook.options.tabStripVisible = false; spreadBook.options.showHorizontalScrollbar = false; spreadBook.options.scrollbarMaxAlign = true; spreadBook.options.allowCopyPasteExcelStyle = false; var spreadNS = GC.Spread.Sheets; var sheet = spreadBook.getSheet(0); sheet.suspendPaint(); sheet.suspendEvent(); //Set rowHeader count and columnHeader count. sheet.setRowCount(1, spreadNS.SheetArea.colHeader); sheet.setColumnCount(setting.header.length, spreadNS.SheetArea.viewport); sheet.options.colHeaderAutoTextIndex = 1; sheet.options.colHeaderAutoText = spreadNS.HeaderAutoText.numbers; sheet.showRowOutline(false); //setup column header me.buildHeader(sheet, setting); //setup cells if (rowCount > 0) sheet.setRowCount(rowCount); sheet.resumeEvent(); sheet.resumePaint(); return spreadBook; }, buildHeader: function(sheet, setting){ var me = this, ch = GC.Spread.Sheets.SheetArea.colHeader; for (var i = 0; i < setting.header.length; i++) { sheet.setValue(0, i, setting.header[i].headerName, ch); sheet.setColumnWidth(i, setting.header[i].headerWidth?setting.header[i].headerWidth:100); } }, cleanSheet: function(sheet, setting, rowCount) { sheet.suspendPaint(); sheet.suspendEvent(); sheet.clear(-1, 0, -1, setting.header.length, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data); if (rowCount > 0) sheet.setRowCount(rowCount); sheet.clearSelection(); sheet.resumeEvent(); sheet.resumePaint(); }, setAreaAlign: function(area, hAlign, vAlign){ if (!(hAlign) || hAlign === "left") { area.hAlign(GC.Spread.Sheets.HorizontalAlign.left); } else if (hAlign === "right") { area.hAlign(GC.Spread.Sheets.HorizontalAlign.right); } else if (hAlign === "center") { area.hAlign(GC.Spread.Sheets.HorizontalAlign.center); } else { area.hAlign(GC.Spread.Sheets.HorizontalAlign.left); } if (!(vAlign) || vAlign === "center") { area.vAlign(GC.Spread.Sheets.VerticalAlign.center); } else if (vAlign === "top") { area.vAlign(GC.Spread.Sheets.VerticalAlign.top); } else if (vAlign === "bottom") { area.vAlign(GC.Spread.Sheets.VerticalAlign.bottom); } else { area.vAlign(GC.Spread.Sheets.VerticalAlign.center); } }, showData: function(sheet, setting, data, distTypeTree) { var me = this, ch = GC.Spread.Sheets.SheetArea.viewport; sheet.suspendPaint(); sheet.suspendEvent(); if(typeof setting.owner !== 'undefined' && setting.owner === 'gljComponent'){ sheet.setRowCount(data.length + 5); } else{ sheet.setRowCount(typeof repositoryGljObj !== 'undefined' && repositoryGljObj.currentOprParent === 1 ? data.length : data.length + 10); } if(data.length === 0){ for(let i = 0; i < sheet.getRowCount(); i++){ sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false); } } for (var col = 0; col < setting.header.length; col++) { var hAlign = "left", vAlign = "center"; if (setting.header[col].hAlign) { hAlign = setting.header[col].hAlign; } else if (setting.header[col].dataType !== "String"){ hAlign = "right"; } vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign; me.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign); if (setting.header[col].formatter) { //var style = new GC.Spread.Sheets.Style(); //style.formatter = setting.header[col].formatter; //sheet.setStyle(row,col,style,GC.Spread.Sheets.SheetArea.viewport); sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport); } for (var row = 0; row < data.length; row++) { //var cell = sheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport); if(setting.header[col].dataCode === 'gljType' && data[row].gljType){ if(typeof repositoryGljObj !== 'undefined' && typeof repositoryGljObj.allowComponent !== 'undefined' && repositoryGljObj.allowComponent.indexOf(data[row].gljType) !== -1){ sheet.getCell(row, 4, GC.Spread.Sheets.SheetArea.viewport).locked(true); } else if(typeof repositoryGljObj !== 'undefined' && typeof repositoryGljObj.allowComponent !== 'undefined' && repositoryGljObj.allowComponent.indexOf(data[row].gljType) === -1){ sheet.getCell(row, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false); } let distTypeVal = distTypeTree.distTypes[distTypeTree.prefix + data[row].gljType].data.fullName; sheet.setValue(row, col, distTypeVal, ch); } else { sheet.setValue(row, col, data[row][setting.header[col].dataCode], ch); sheet.setTag(row, 0, data[row].ID, ch); } } for(let i = data.length; i < sheet.getRowCount(); i++){ sheet.getCell(i, 4, GC.Spread.Sheets.SheetArea.viewport).locked(false); } } sheet.resumeEvent(); sheet.resumePaint(); //me.shieldAllCells(sheet); }, analyzePasteData: function(setting, pastedInfo) { var rst = [], propId = pastedInfo.cellRange.col, preStrIdx = 0, itemObj = {}; for (var i = 0; i < pastedInfo.pasteData.text.length; i++) { if (pastedInfo.pasteData.text[i] === "\n") { propId = pastedInfo.cellRange.col; preStrIdx = i + 1; rst.push(itemObj); if (i < pastedInfo.pasteData.text.length - 1) { itemObj = {}; } } else if (pastedInfo.pasteData.text[i] === "\t" || pastedInfo.pasteData.text[i] === "\r") { itemObj[setting.header[propId].dataCode] = pastedInfo.pasteData.text.slice(preStrIdx, i); propId++; preStrIdx = i + 1; //if the last copied-cell were empty, should check whether the end of text if (i == pastedInfo.pasteData.text.length - 1) { itemObj[setting.header[propId].dataCode] = pastedInfo.pasteData.text.slice(preStrIdx); rst.push(itemObj); } } else if (i == pastedInfo.pasteData.text.length - 1) { itemObj[setting.header[propId].dataCode] = pastedInfo.pasteData.text.slice(preStrIdx); rst.push(itemObj); } } return rst; }, combineRowData: function(sheet, setting, row, repositoryGljObj) { let me = this; var rst = {}; let comboBoxCellType = sheet.getCellType(row, 5); let items = comboBoxCellType.items(); for (var col = 0; col < setting.header.length; col++) { if(setting.header[col].dataCode === 'gljType'){ items.forEach(function(item){ if(sheet.getValue(row, col) === item.text){ rst[setting.header[col].dataCode] = item.value; if(repositoryGljObj){ rst.shortName = repositoryGljObj.distTypeTree.distTypes[repositoryGljObj.distTypeTree.prefix + item.value].data.shortName; } } }); } else if (setting.header[col].dataCode === 'code'){ if(repositoryGljObj){ let gljList = repositoryGljObj.gljList, orgCode = repositoryGljObj.orgCode, isExist = false; for(let i=0; i< gljList.length; i++){ if(gljList[i].code === sheet.getValue(row, col) && sheet.getValue(row, col)!== orgCode){ me.lockAllCells(sheet); $('#alertText').text("输入的编号已存在,请重新输入!"); $('#codeAlertBtn').click(); $('#codAleConfBtn').click(function () { // me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length); me.unLockAllCells(sheet); me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length); sheet.setValue(row, 0, orgCode); sheet.setActiveCell(row, 0); }); $('#codAleClose').click(function () { //me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length); me.unLockAllCells(sheet); me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length); sheet.setValue(row, 0, orgCode); sheet.setActiveCell(row, 0); }); // sheet.setValue(row, col, orgCode); isExist = true } } if(!isExist){ rst[setting.header[col].dataCode] = sheet.getValue(row, col); } } else{ rst[setting.header[col].dataCode] = sheet.getValue(row, col); } } else{ rst[setting.header[col].dataCode] = sheet.getValue(row, col); } } return rst; }, combineRationRowData: function(sheet, setting, row) { var rst = {}; for (var col = 0; col < setting.header.length; col++) { rst[setting.header[col].dataCode] = sheet.getValue(row, col); } return rst; }, shieldAllCells: function(sheet) { sheet.options.isProtected = true; }, unShieldAllCells: function(sheet) { sheet.options.isProtected = false; }, reLockSomeCodes: function (sheet, beginRow, endRow) { sheet.suspendPaint(); sheet.suspendEvent(); let defaultStyle = new GC.Spread.Sheets.Style(); defaultStyle.locked = false; sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport); let unLockStyle = new GC.Spread.Sheets.Style(); unLockStyle.locked = false; let lockStyle = new GC.Spread.Sheets.Style(); lockStyle.locked = true; for(let row = beginRow; row < endRow; row++){ sheet.setStyle(row, 0, lockStyle); } for(let row = endRow; row < sheet.getRowCount(); row++){ sheet.setStyle(row, 0, unLockStyle); } sheet.options.isProtected = true; sheet.resumePaint(); sheet.resumeEvent(); }, unLockAllCells: function (sheet) { let defaultStyle = new GC.Spread.Sheets.Style(); defaultStyle.locked = false; sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport); sheet.setStyle(-1, 0, defaultStyle); sheet.options.isProtected = false; }, lockAllCells: function (sheet) { sheet.suspendPaint(); sheet.suspendEvent(); let defaultStyle = new GC.Spread.Sheets.Style(); defaultStyle.locked = true; sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport); for(let i = 0; i < sheet.getRowCount(); i++){ sheet.setStyle(i, 0, defaultStyle); } sheet.options.isProtected = true; sheet.resumePaint(); sheet.resumeEvent(); }, lockSomeCodes: function (sheet, beginRow, endRow) { let defaultStyle = new GC.Spread.Sheets.Style(); defaultStyle.locked = false; sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport); let style = new GC.Spread.Sheets.Style(); style.locked = true; sheet.suspendPaint(); sheet.suspendEvent(); for(let i = beginRow; i < endRow; i++){ sheet.setStyle(i, 0, style); } sheet.options.isProtected = true; sheet.resumePaint(); sheet.resumeEvent(); }, lockCodeCells: function (sheet, rowCount) { let sheetRowCount = sheet.getRowCount(); let defaultStyle = new GC.Spread.Sheets.Style(); defaultStyle.locked = false; sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport); let style = new GC.Spread.Sheets.Style(); style.locked = true; sheet.setStyle(-1, 0, style); sheet.suspendPaint(); sheet.suspendEvent(); for(let i =rowCount; i 0) { sheet.options.isProtected = true; sheet.getRange(-1, 0, -1, setting.header.length, GC.Spread.Sheets.SheetArea.viewport).locked(false); for (var i = 0; i < setting.view.lockColumns.length; i++) { sheet.getRange(-1,setting.view.lockColumns[i] , -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true); } } }, chkIfEmpty: function(rObj, setting) { var rst = true; if (rObj) { for (var i = 0; i < setting.header.length; i++) { if (rObj[setting.header[i].dataCode]) { rst = false; break; } } } return rst; } }