有点时候需要通过前端下载xlsx文档,具体代码实现如下:
// html代码
<a-button style="margin-left: 20px" @click="downloadTemplateFuc">
下载模板
</a-button>
//js 代码
// 定义接口
export function genCclOptionXlsxApi(params) {
return axios({
url: api.genCclOptionXlsxUrl,
method: 'get',
responseType: 'blob', // 注意前端需要添加这个
params
})
}
// 引入接口
import { genCclOptionXlsxApi } from '@/api/vcp'
// 下载xlsx模板方法
downloadTemplateFuc() {
console.log('vcp--下载模板')
let paramsResponse = {
nodeVersionNo:
this.getTimeDetails?.nodeVersion ||
this.form.cclVersion.match(regex)[1]
}
genCclOptionXlsxApi(paramsResponse)
.then((res) => {
const fileName =
'CCP Option-V' +
`${
this.getTimeDetails?.nodeVersion ||
this.form.cclVersion.match(regex)[1]
}` +
'_' +
this.dateFormat('yyyyMMdd') +
'.xlsx'
const url = window.URL.createObjectURL(new Blob([res]))
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
URL.revokeObjectURL(link.href)
document.body.removeChild(link)
message.success('请求下载模板成功,请保存')
})
.catch((error) => {
console.log('error:', error)
message.error(error.error.data.errorMsg || '请求失败')
})
},
dateFormat(fmt) {
var o = {
'M+': new Date().getMonth() + 1, // 月份
'd+': new Date().getDate(), // 日
'h+': new Date().getHours(), // 小时
'm+': new Date().getMinutes(), // 分
's+': new Date().getSeconds(), // 秒
'q+': Math.floor((new Date().getMonth() + 3) / 3), // 季度
S: new Date().getMilliseconds()
// 毫秒
}
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(new Date().getFullYear() + '').substr(4 - RegExp.$1.length)
)
for (var k in o)
if (new RegExp('(' + k + ')').test(fmt))
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1
? o[k]
: ('00' + o[k]).substr(('' + o[k]).length)
)
return fmt
},