1.vue中的dom节点 点击事件执行文件导出

  
<el-button display="inline-block" class="filter-item" type="primary" :loading="downloadLoading" 
    icon="el-icon-download" @click="handleDownload">
    导出
</el-button>

2. method中的方法
 
  
handleDownload () {
        var _this = this
        this.form.pageSize = this.pageSize
        this.form.pageNum = this.pageNum
        lightExport(this.form)
        .then(res => {  
             console.log(typeof(res)) 
              // var blob = res         
              // var blob = new Blob([res], { type: 'application/x-xls' })          
              var blob = new Blob([res], { type: 'application/vdn.ms-excel' })          
              var reader = new FileReader();          
              reader.readAsDataURL(blob);  // 转换为base64,可以直接放入a表情href          
              // 文件读取成功的回调          
              reader.onload = function (e) {
               //判断是否有导出内容
               if (blob.size <= 0) {handleDownload
                 _this.$message.warning('没有内容导出')
                 return
               }
              var a = document.createElement('a')
              a.download = 'lightTemplate.xls'
              a.href = e.target.result;
              // $("body").append(a);  // 修复firefox中无法触发click
              a.click();
              // $(a).remove();
            }
             // 文件读取失败的回调
             reader.onerror = function (e) {
               _this.$message.error('文件导出失败')
             }
          })
          .catch(() => {
             this.$message.error('导出失败')
          })
        },
3.request中的方法
export function lightExport(params) {
  return request({
    url: url + 'wishingOrderRest/orderExportExcel',
    method: 'post',
    params,
    responseType: 'arraybuffer'  // 添加相应类型buffer
  })
}




Logo

前往低代码交流专区

更多推荐