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) }) } }