UNPKG

iep-ui

Version:

An enterprise-class UI design language and Vue-based implementation

69 lines (62 loc) 2.18 kB
import _slicedToArray from 'babel-runtime/helpers/slicedToArray'; import moment from 'moment'; var createObjectURL = function createObjectURL(object) { return window.URL ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object); }; var formatParams = function formatParams(baseUrl, url, params, fileName, headerKey, headerValue, suffix) { if (!params) { return ''; } var temp = ''; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = Object.entries(params)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _ref = _step.value; var _ref2 = _slicedToArray(_ref, 2); var k = _ref2[0]; var v = _ref2[1]; temp += '&' + k + '=' + v; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator['return']) { _iterator['return'](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } var serviceUrl = '' + baseUrl + url + '?' + temp.substr(1, temp.length); var xhr = new XMLHttpRequest(); var formData = new FormData(); xhr.open('get', serviceUrl); // url填写后台的接口地址,如果是post,在formData append参数(参考原文地址) xhr.setRequestHeader(headerKey, headerValue); xhr.responseType = 'blob'; xhr.onload = function (e) { if (this.status === 200) { var blob = this.response; // xls文件名称 var filename = (fileName ? fileName : moment().format('YYYY年MM月DD日 hh:mm:ss')) + '.' + (suffix ? suffix : 'xlsx'); if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob, filename); } else { var a = document.createElement('a'); var _url = createObjectURL(blob); a.href = _url; a.download = filename; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(_url); } } }; xhr.send(formData); }; export default formatParams;