<template> <div class="expand-notes" id="attachment"> <div> <h4 class="h-list step7">attachment Download | 附件下载 </h4> </div> <!--附件下载--> <div class="language"> <el-table :data="filelist" border style="width: 100%"> <el-table-column prop="fileName" align='center' label="文件名称"> </el-table-column> <el-table-column fixed="right" label="操作" align='center'> <template slot-scope="scope" > <el-button size="small" type="primary" plain @click="downloadfiles(scope.row)" :loading="scope.row.isloading">{{scope.row.isloading ? "下载中..." : "下载" }}</el-button> </template> </el-table-column> </el-table> </div> </div> </template> <script> import { downloadfilelist} from '@/api'; export default { name: 'attachment', props:{ filelist:{ type:Array, default:()=>{ return [] } } }, data () { return {} }, methods: { downloadfiles(rows){ rows.isloading = true; downloadfilelist(rows.id).then(res => { const content = res.data; const blob = new Blob([content]) const filename = rows.fileName; if('download' in document.createElement('a')) { const elink = document.createElement('a') elink.download = filename elink.style.display = "none" elink.href = URL.createObjectURL(blob) document.body.appendChild(elink) elink.click(); URL.revokeObjectURL(elink.href) document.body.removeChild(elink) } else { navigator.msSaveBlob(blob, filename) } }).catch(err=>{ this.$message.error(err ||'下载失败,请稍后再试!'); }) .finally(()=>{ rows.isloading = false; }) } } } </script>