// web service proxy for standard account webservices.factory('templateService', ['$log', '$http', '$q', 'apiConfig', 'httpCacheService', '$timeout', '$rootScope', '$interval', 'loginContext', function ($log, $http, $q, apiConfig, httpCacheService, $timeout, $rootScope, $interval, loginContext) { 'use strict'; var getTemplateJson = function (templateID) { //return $http.get('/template/getTemplateJson?templateID=' + templateID, apiConfig.create()); //var url = '/template/getTemplateJson?templateID=' + templateID; //var result = httpCacheService.get(url); // if (result.finishedCache) { // return result; // } else { return getJsonFromExcel(templateID); //} }; var getCookie = function (cname) { var name = cname + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i].trim(); // if (c.indexOf(name) == 0) return c.substring(name.length, c.length); if (c.indexOf(name) === 0) return ATMS_EXTRA.decodeCookieValue(c.substring(name.length, c.length)); } return ""; }; var initSpreadExcel = function (id, ssjsondata) { var deferred = $q.defer(); var promise = deferred.promise; var spread = new GC.Spread.Sheets.Workbook(document.getElementById(id)); spread.suspendPaint(); spread.fromJSON(ssjsondata); spread.options.showVerticalScrollbar = true; spread.options.showHorizontalScrollbar = true; spread.options.scrollbarMaxAlign = true; spread.options.scrollbarShowMax = true; spread.options.tabNavigationVisible = true; if(constant.regesterInformation.active){ spread.options.tabEditable = false; spread.options.tabStripVisible = false; spread.options.newTabVisible = false; } spread.options.allowUndo = false; spread.options.allowUserResize = false; spread.options.allowUserDragDrop = false; spread.options.allowUserDragFill = false; spread.options.allowUserEditFormula = false; spread.options.allowContextMenu = false; spread.resumePaint(); var sheet; if (constant.regesterInformation.active) { sheet = spread.getActiveSheet(); } else { sheet = spread.getSheet(1); } if (sheet != null) { sheet.options.rowHeaderVisible = true; sheet.options.colHeaderVisible = true; sheet.options.gridline.showVerticalGridline = false; sheet.options.gridline.showHorizontalGridline = false; sheet.options.isProtected = true; } deferred.resolve(spread); return promise; }; var getJsonFromExcel = function (templateID) { var deferred = $q.defer(); var promise = deferred.promise; var url = loginContext.apiHost + constant.webapi.prefix + '/template/getTemplateJson?templateID=' + templateID; var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); // 也可以使用POST方式,根据接口 xhr.responseType = "blob"; // 返回类型blob var apiTokenObj = JSON.parse(getCookie('AtmsApiToken')); var apiToken = apiTokenObj.access_token; var tokenType = apiTokenObj.token_type; xhr.setRequestHeader('Authorization', tokenType + ' ' + apiToken); // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑 xhr.onload = function () { // 请求完成 if (this.status === 200) { // 返回200 var blob = this.response; var excelIo = new GC.Spread.Excel.IO(); excelIo.open(blob, function (json) { deferred.resolve(json); }, function (e) { console.error(e.errormessage); //alert(e.errorMessage); deferred.reject(e.errorMessage); }, {}); } }; // 发送ajax请求 xhr.send(); return promise; }; var renderSpreadExcelSimple = function (id, templateID) { var deferred = $q.defer(); var promise = deferred.promise; var spreadSheet; getJsonFromExcel(templateID).then(function (json) { spreadSheet = initSpreadExcel(id, json); deferred.resolve(spreadSheet); }); return promise; }; var setRowColName = function (id, rowCellInfo) { return $http.post('/template/rowColName/' + id, rowCellInfo, apiConfig.create()); }; return { renderSpreadExcelSimple: renderSpreadExcelSimple, setRowColName: setRowColName, getTemplateJson: getTemplateJson }; }]);