UNPKG

zcloud-ui

Version:

A Component Library for Vue.js.

142 lines (122 loc) 4.77 kB
'use strict'; exports.__esModule = true; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /** * axios basic configuration */ // 环境配置 var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios); var _index = require('zcloud-ui/lib/config/index'); var _interceptor = require('./interceptor'); var _interceptor2 = _interopRequireDefault(_interceptor); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var instance = _axios2.default.create(); var TimeOut = 60000; // 初始化拦截器 new _interceptor2.default({ TimeOut: TimeOut, axios: instance }); // eslint-disable-line no-new // 配置 var configuration = ['ignoreRepeat', // 忽略防止重复请求 'verifycode', // 验证码 'timeOut', // 超时 'authCode', // 按钮权限 'AuthCode', // 按钮权限 'Authorization', // token 'ignoreError', // 忽略报错 'returnAll', // 返回带code的信息全部信息 'inside' // 组件库内部调用必须加 ]; /** * 基础配置 * 更多配置请参考 https://github.com/axios/axios * @param {*} url 请求地址 * @param {*} data 参数 * @param {*} type 请求类型,默认post */ var Http = function Http(url) { var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'post'; var header = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; // // 手动加入api // for (let key in data) { // if (data[key] && data[key].constructor === Object) { // data[key].api = url; // } // } var CancelToken = _axios2.default.CancelToken; var cancel = null, timer = null; if ((typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object') { header = type; type = 'post'; } var headers = _extends({ 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json', 'Authorization': _index.Environment.TOKEN || '' }, header); // 添加header token var query = void 0; // 处理配置 for (var _iterator = configuration, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref; if (_isArray) { if (_i >= _iterator.length) break; _ref = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref = _i.value; } var item = _ref; if (data[item]) { if (item === 'authCode') { headers.AuthCode = data[item]; } else { headers[item] = data[item]; } delete data[item]; } } var apiNum = data.apiNum || 0; var hostUrl = data.hostUrl || ''; delete data.hostUrl; delete data.apiNum; if (!url.includes('http')) { if (_index.Environment.AUTH_MENU_ID) { headers.AuthMenu = _index.Environment.AUTH_MENU_ID; } query = hostUrl + _index.Environment.URL_PREFIX_API[apiNum] + url; } else { query = url; } var config = { url: query, method: type, timeout: headers.timeOut || TimeOut, // 超时时间 headers: headers, responseType: 'json', validateStatus: function validateStatus(status) { return status >= 200 && status < 300; // 默认的 }, maxRedirects: 5, cancelToken: new CancelToken(function executor(c) { cancel = c; }), cancel: cancel, timer: timer }; if (type.toUpperCase() === 'POST') { config.data = data; } else if (type.toUpperCase() === 'GET') { config.params = data; } var response = null; try { response = instance(config); } catch (error) { response = Promise.reject(error); } return response; }; exports.default = Http;