import $nehttp from '@/utils/neHttpRequest'
import { Message } from 'element-ui'
export default function (config) {
const url = config.url
const method = config.method || 'get'
const params = config.params || null
const fileName = config.fileName || ''
const data = config.data || null
const headers = config.headers || {}
const callback = config.callback || null
Object.assign(headers, {
token: sessionStorage.getItem('token') || ''
})
$nehttp({
url: $nehttp.gatewayApi(url),
method,
params: $nehttp.adornParams(params),
data: $nehttp.adornData(data),
responseType: 'blob',
headers
}).then(res => {
if (res.data.type === 'application/json') {
if (callback) {
callback()
}
const blob = new Blob([ res.data ])
const reader = new FileReader()
reader.addEventListener('loadend', function () {
const result = JSON.parse(reader.result)
if (result.code !== '000000') {
Message.error('导出失败,' + result.msg)
}
})
reader.readAsText(blob, 'UTF-8')
} else {
const blob = new Blob([ res.data ])
const url = URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
// 指定生成的文件名
if (fileName === '') {
const disposition = res.headers[ 'content-disposition' ]
a.download = decodeURI(disposition.substring(disposition.indexOf('=') + 1))
} else {
a.download = fileName
}
document.body.appendChild(a)
const evt = document.createEvent('MouseEvents')
evt.initEvent('click', false, false)
a.dispatchEvent(evt)
document.body.removeChild(a)
window.URL.revokeObjectURL(url)
if (callback) {
callback()
}
}
})
}