fx-form-widget
Version:
124 lines (121 loc) • 4.46 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.DATA_CODE = void 0;
var _notification2 = _interopRequireDefault(require("antd/lib/notification"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _axios = _interopRequireDefault(require("axios"));
var _tools = require("./tools");
var ENV = (0, _tools.getEnv)();
var token = (0, _tools.getToken)();
var DATA_CODE = exports.DATA_CODE = new Map([['SUCCESS', 2000], ['QUERY_PARAMS_ERROR', 4000], ['LOGIN_ERROR', 100003], ['OTHER_ERROR', 100003], ['GOODS_CHANGE_PERMIT_BY_ACTIVITY', 50000407]]);
// API 接口
var API_HOST = new Map([['dev', 'https://dev-gateway.fxqifu.net/pangu'], ['qa', 'https://qa-gateway.fxqifu.net/pangu'], ['prod', 'https://gateway.fxqifu.net/pangu']]);
var MAIN_HOST = API_HOST.get(ENV);
function getMainDomain() {
var hostname = window.location.hostname;
var parts = hostname.split('.').reverse();
if (parts && parts[1]) {
return parts[1] + "." + parts[0];
}
return hostname;
}
var domin = getMainDomain();
domin = domin === 'localhost' ? ENV + ".smartercarp.com" : domin;
var LOGIN_HOST = new Map([['dev', "https://dev-account." + domin], ['qa', "https://qa-account." + domin], ['prod', "https://account." + domin]]);
var LOGIN_URL = LOGIN_HOST.get(ENV);
// 登录失效
var CancelToken = _axios["default"].CancelToken;
var source = CancelToken.source();
var service = _axios["default"].create({
baseURL: MAIN_HOST,
timeout: 30000
});
var pending = [];
// 移除重复请求
var removePending = function removePending(config) {
for (var key in pending) {
var item = +key;
var list = pending[key];
// 当前请求在数组中存在时执行函数体
if (list.url === config.url && list.method === config.method && JSON.stringify(list.params) === JSON.stringify(config.params) && JSON.stringify(list.data) === JSON.stringify(config.data)) {
// 执行取消操作
list.cancel('操作太频繁,请稍后再试');
// 从数组中移除记录
pending.splice(item, 1);
}
}
};
service.interceptors.request.use(function (config) {
removePending(config);
if (config.headers) config.headers.authority_token = token;
config.url = config.url + "?__date=" + new Date().getTime();
return (0, _extends2["default"])({}, config, {
cancelToken: source.token
});
}, function (err) {
!!err.message && _notification2["default"].error({
message: '提示',
description: err.message
});
return Promise.reject((0, _extends2["default"])({}, err, {
data: null
}));
});
service.interceptors.response.use(function (res) {
// console.log('res', res);
var status = res.status,
data = res.data,
statusText = res.statusText;
return new Promise(function (resolve, reject) {
if (status < 200 || status > 300) {
_notification2["default"].error({
message: "\u8BF7\u6C42\u9519\u8BEF: " + status,
description: statusText
});
reject((0, _extends2["default"])({}, data, {
data: null
}));
} else if (!data.success) {
if (+data.code === DATA_CODE.get('LOGIN_ERROR')) {
// 登录失效后,取消后续的http请求
source.cancel('登录失效');
if (window.location.hostname !== 'localhost') {
window.location.href = LOGIN_URL + "/login?redirectUrl=" + encodeURIComponent(window.location.origin + window.location.pathname);
}
return reject(data);
} else {
_notification2["default"].error({
message: '提示',
description: data.message
});
}
reject((0, _extends2["default"])({}, data, {
data: null
}));
} else {
resolve(data);
}
});
}, function (err) {
if (err.message !== '登录失效') {
err.message && _notification2["default"].error({
message: '提示',
description: err.message
});
}
return Promise.reject((0, _extends2["default"])({}, err, {
data: null
}));
});
function get(url, config) {
return url ? service.get(url, config) : Promise.reject('Cannot read property URL of undefined');
}
function post(url, data, config) {
return url ? service.post(url, data, config) : Promise.reject('Cannot read property URL of undefined');
}
var HttpClient = {
get: get,
post: post
};
var _default = exports["default"] = HttpClient;