mirror of https://github.com/certd/certd
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
import { request } from './service'
|
|
import _ from 'lodash-es'
|
|
function arrayToMap (arr) {
|
|
if (arr && arr instanceof Array) {
|
|
const map = {}
|
|
_.forEach(arr, item => {
|
|
map[item.key] = item
|
|
})
|
|
return map
|
|
}
|
|
return arr
|
|
}
|
|
|
|
function transfer (options) {
|
|
options.accessProviders = arrayToMap(options.accessProviders)
|
|
}
|
|
export default {
|
|
exportsToZip (options) {
|
|
transfer(options)
|
|
return request({
|
|
url: '/exports/toZip',
|
|
data: { options },
|
|
method: 'post',
|
|
responseType: 'blob' // 重点在于配置responseType: 'blob'
|
|
}).then(res => {
|
|
console.log('res', res)
|
|
const filename = decodeURI(res.headers['content-disposition'].replace('attachment;filename=', '')) // 由后端设置下载文件名
|
|
const blob = new Blob([res.data], { type: 'application/zip' })
|
|
const a = document.createElement('a')
|
|
const url = window.URL.createObjectURL(blob)
|
|
a.href = url
|
|
a.download = filename
|
|
const body = document.getElementsByTagName('body')[0]
|
|
body.appendChild(a)
|
|
a.click()
|
|
body.removeChild(a)
|
|
window.URL.revokeObjectURL(url)
|
|
})
|
|
}
|
|
}
|