UNPKG

@aliretail/react-materials-components

Version:
227 lines (200 loc) 6.47 kB
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; var _excluded = ["method", "data"]; import _regeneratorRuntime from "@babel/runtime/regenerator"; import Axios from 'axios'; Axios.defaults.withCredentials = true; Axios.defaults.xsrfCookieName = ''; Axios.defaults.xsrfHeaderName = ''; export default Axios; export function getUrlParam(name) { return decodeURIComponent((new RegExp("[?|&]" + name + "=([^&;]+?)(&|#|;|$)", 'i').exec(location.search) || [undefined, ''])[1].replace(/\+/g, '%20')) || null; } var defaultAppCode = getUrlParam('appCode') || 'epoch'; export function request(options) { var method = options.method, data = options.data, config = _objectWithoutPropertiesLoose(options, _excluded); var dataOrParams = {}; if (['PUT', 'POST'].includes(method.toUpperCase())) { dataOrParams.data = data; } else { dataOrParams.params = data; } return Axios.request(_extends({ method: method }, config, dataOrParams)); } export function callApi(_x) { return _callApi.apply(this, arguments); } function _callApi() { _callApi = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(options) { var env, code, _options$app, app, _options$method, method, _options$contentType, contentType, _options$headers, headers, url, dataOrParams, res; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: env = window.devEnv || ''; code = options.code, _options$app = options.app, app = _options$app === void 0 ? defaultAppCode : _options$app, _options$method = options.method, method = _options$method === void 0 ? 'POST' : _options$method, _options$contentType = options.contentType, contentType = _options$contentType === void 0 ? 'application/json' : _options$contentType, _options$headers = options.headers, headers = _options$headers === void 0 ? {} : _options$headers; url = code; if (url[0] !== '/') { url = "/api/" + app + "/" + code; } if (url[0] === '/') { url = "" + env + url; } dataOrParams = {}; if (['PUT', 'POST'].includes(method.toUpperCase())) { dataOrParams.data = options.data; } else { dataOrParams.params = options.data; } _context.prev = 7; if (contentType) { headers['content-type'] = contentType; } _context.next = 11; return Axios.request(_extends({ method: method, url: url, headers: headers }, dataOrParams)); case 11: res = _context.sent; if (res.status === 302) {// do noting } return _context.abrupt("return", res.data); case 16: _context.prev = 16; _context.t0 = _context["catch"](7); console.error(_context.t0); if (options.onError) { options.onError(_context.t0); } case 20: case "end": return _context.stop(); } } }, _callee, null, [[7, 16]]); })); return _callApi.apply(this, arguments); } export function getAppCodeFromCtx(ctx) { return ctx && (ctx.getContextData && ctx.getContextData('appCode') || ctx.getConfig && ctx.getConfig('appCode')); } export var Status = { IMPORTING: 'importing', DONE: 'import_done', ERROR: 'failed', PARTIALSUCCESS: 'partialSuccess' }; export var UploadStatus = { UPLOADING: 'uploading', DONE: 'upload_done', ERROR: 'error' }; export function queryImportState(jobId, cb, retryCount) { if (retryCount === void 0) { retryCount = 0; } var duration = 1000; callApi({ code: '/api/epoch_client/getIOJobById', data: { id: jobId } }).then(function (resp) { var inputFile = resp.inputFile && resp.inputFile[0]; if (resp.success === Status.ERROR || resp.errorMessage) { if (retryCount > 2) { cb({ status: Status.ERROR, result: resp, inputFile: inputFile }); } else { var count = retryCount + 1; cb({ inputFile: inputFile }); setTimeout(function () { return queryImportState(jobId, cb, count); }, duration); } } else if (resp.finished === 100) { cb({ status: Status.IMPORTING, percent: resp.finished, inputFile: inputFile }); var out = _extends({}, resp); // if (resp.outputFile && resp.outputFile.length) { // out.outputFile = resp.outputFile[0]; // } setTimeout(function () { if (resp.success === Status.PARTIALSUCCESS) { cb({ status: Status.PARTIALSUCCESS, result: out, percent: 100 }); } else { cb({ status: Status.DONE, result: out, percent: 0 }); } }, 100); } else { cb({ status: Status.IMPORTING, percent: resp.finished, inputFile: resp.inputFile && resp.inputFile[0] }); setTimeout(function () { return queryImportState(jobId, cb); }, duration); } }); } export function excelImport(params, callback) { return request({ url: '/excel/import', method: 'post', headers: { 'content-type': 'application/json' }, data: JSON.stringify(params) }).then(function (ret) { var data = ret.data; if (data.errorMessage) { callback({ status: Status.ERROR, result: data }); } else { queryImportState(data.jobId, callback); } })["catch"](function (e) { callback({ status: Status.ERROR, result: { errorMessage: e && e.message } }); }); } export function getTemplateUrl(service, app) { return "/excel/importTemplate?service=" + service + "&app=" + app; } export function getDownloadUrl(_ref) { var path = _ref.path, name = _ref.name; if (path && name) { return "/file/download?path=" + encodeURIComponent(path) + "&name=" + encodeURIComponent(name); } return ''; }