@aliretail/react-materials-components
Version:
257 lines (216 loc) • 7.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.UploadStatus = exports.Status = void 0;
exports.callApi = callApi;
exports["default"] = void 0;
exports.excelImport = excelImport;
exports.getAppCodeFromCtx = getAppCodeFromCtx;
exports.getDownloadUrl = getDownloadUrl;
exports.getTemplateUrl = getTemplateUrl;
exports.getUrlParam = getUrlParam;
exports.queryImportState = queryImportState;
exports.request = request;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _axios = _interopRequireDefault(require("axios"));
var _excluded = ["method", "data"];
_axios["default"].defaults.withCredentials = true;
_axios["default"].defaults.xsrfCookieName = '';
_axios["default"].defaults.xsrfHeaderName = '';
var _default = _axios["default"];
exports["default"] = _default;
function getUrlParam(name) {
return decodeURIComponent((new RegExp("[?|&]" + name + "=([^&;]+?)(&|#|;|$)", 'i').exec(location.search) || [undefined, ''])[1].replace(/\+/g, '%20')) || null;
}
var defaultAppCode = getUrlParam('appCode') || 'epoch';
function request(options) {
var method = options.method,
data = options.data,
config = (0, _objectWithoutPropertiesLoose2["default"])(options, _excluded);
var dataOrParams = {};
if (['PUT', 'POST'].includes(method.toUpperCase())) {
dataOrParams.data = data;
} else {
dataOrParams.params = data;
}
return _axios["default"].request((0, _extends2["default"])({
method: method
}, config, dataOrParams));
}
function callApi(_x) {
return _callApi.apply(this, arguments);
}
function _callApi() {
_callApi = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
var env, code, _options$app, app, _options$method, method, _options$contentType, contentType, _options$headers, headers, url, dataOrParams, res;
return _regenerator["default"].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["default"].request((0, _extends2["default"])({
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);
}
function getAppCodeFromCtx(ctx) {
return ctx && (ctx.getContextData && ctx.getContextData('appCode') || ctx.getConfig && ctx.getConfig('appCode'));
}
var Status = {
IMPORTING: 'importing',
DONE: 'import_done',
ERROR: 'failed',
PARTIALSUCCESS: 'partialSuccess'
};
exports.Status = Status;
var UploadStatus = {
UPLOADING: 'uploading',
DONE: 'upload_done',
ERROR: 'error'
};
exports.UploadStatus = UploadStatus;
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 = (0, _extends2["default"])({}, 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);
}
});
}
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
}
});
});
}
function getTemplateUrl(service, app) {
return "/excel/importTemplate?service=" + service + "&app=" + app;
}
function getDownloadUrl(_ref) {
var path = _ref.path,
name = _ref.name;
if (path && name) {
return "/file/download?path=" + encodeURIComponent(path) + "&name=" + encodeURIComponent(name);
}
return '';
}