minxi.js里存放,全局调用此方法
export const OPERATE_DOWNLOAD = {
data() {
return {
percent: 0 // 下载进度条
}
},
methods: {
// 仅用于文件下载
downloadFile(url, fileName) {
const _this = this
_this.percent = 0
_this.$Spin.show({
render: (h) => {
return h('div', [
h('Progress', {
style: {
width: '300px'
},
props: {
percent: _this.percent
}
}, fileName + '下载中...' + _this.percent + '%')
])
}
})
if (/\.pdf|\.PDF|\.png|\.PNG|\.jpg|\.JPG|\.jpeg|\.JPEG|\.bmp|\.BMP/.test(url)) {
const interval = setInterval(() => {
if (_this.percent === 10) {
_this.downloadMethod(url, fileName)
}
if (_this.percent >= 80) {
clearInterval(interval)
return
}
_this.percent += 10
}, 500)
} else {
const interval = setInterval(() => {
if (_this.percent === 50) {
_this.downloadMethod(url, fileName)
}
if (_this.percent >= 50) {
clearInterval(interval)
return
}
_this.percent += 10
}, 100)
}
},
downloadMethod(url, fileName) {
const _this = this
url = url.replace(/\\/g, '/')
if (/\.pdf|\.PDF/.test(url)) {
// 下载pdf
let params = {
path: url
}
downloadStreamByPath(params).then(res => {
_this.closeProgress()
let blob = new Blob([res.data], {
type: 'application/pdf' // word文档为msword,pdf文档为pdf
})
let objectUrl = URL.createObjectURL(blob)
let link = document.createElement('a')
link.href = objectUrl
link.setAttribute('download', fileName) // 下载文件的名字
document.body.appendChild(link)
link.style.display = 'none'
link.click()
document.body.removeChild(link)
})
} else if (url != null && url !== '' && url !== 'null') {
_this.closeProgress()
// 下载其他文件
let link = document.createElement('a')
link.href = window.SITE_CONFIG.fileShowURL + url
link.setAttribute('download', fileName) // 下载文件的名字
document.body.appendChild(link)
link.style.display = 'none'
link.click()
document.body.removeChild(link)
}
},
closeProgress() {
const _this = this
const interval = setInterval(() => {
if (_this.percent >= 100) {
clearInterval(interval)
_this.$Message.success('文件下载成功')
_this.$Spin.hide()
return
}
_this.percent += 10
}, 100)
}
}
}