iep-ui
Version:
An enterprise-class UI design language and Vue-based implementation
69 lines (62 loc) • 2.18 kB
JavaScript
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;