// datas.state是我vuex中存储的数据,可改成自己需要的
// 下面的变量小伙伴可自行更改
function downloadModel (method, url, name, data = '') {
var xhr = new XMLHttpRequest()
xhr.open(method, baseUrl + '/1.1/tid/' + datas.state.organizationIot + url, true);
xhr.responseType = 'blob'
if (method === 'post') {
xhr.setRequestHeader('Content-type', 'application/json')
}
xhr.setRequestHeader('apiKey', datas.state.organizationApikey)
xhr.setRequestHeader('login-token', getToken())
xhr.onload = function () {
if (this.status === 200) {
var blob = this.response
var reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = function (e) {
var a = document.createElement('a')
a.download = `${name}.xlsx`
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
}
}
if (method === 'post') {
xhr.send(data)
} else {
xhr.send()
}
}
第一个参数为请求方式,第二个参数为请求的路径,第三个参数是下载后的表格名称,第四个为post时需要传递一个参数,也可不传
downloadModel('get', '/getElectricDeviceModul', '重点设备模板')
downloadModel('post', '/getElectricMeterData', '台账', JSON.stringify(data))