导出excel表格开发过程中遇到报错:Invalid array length at Proxy.renderList

这种报错一般发生在点击导出后成功导出,再次按导出按钮:Invalid array length at Proxy.renderList

不影响其它功能,表格正常还是能再次导出,页面还是可以再次请求后端刷新

解决:给业务添加上定时器延迟下执行即可

downloadExcel() {//列表下载
                 let _this = this
                 if(_this.tables.length>0){
                     this.$confirm({
                        title: '确认导出?',
                        onOk() {
                            setTimeout(()=>{//如果点击打印按钮后控制台报错:Invalid array length at Proxy.renderList --增大延迟时间即可解决 --容易发生在第二次点击上报错
                                _this.fnInitEcelTable()
                            },1200)
                        },
                        onCancel(){},
                      })
                 }else{
                         _this.$message.warning('请先选择数据!')    
                 } 
    },  
export2Excel() {//数据写入excel
                var that = this;
                require.ensure([], () => {
                  const { export_json_to_excel } = require('@/excel/export2Excel'); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
                  const tHeader = ['多工制令单','用量','日期','产品名称','产品规格','用料-名','  线材' ,'名称','单位用量','总用量', '单位' , '规格' , '备注']; // 导出的表头名信息
                  const filterVal = ['zl_no','ProdtQtyFROM', 'date', 'pd_id','pd_name','series','zhanwei','lj_detailName','lj_detailDanwY','lj_detailZongY','lj_detailDanwei','lj_detailGuige','lj_detailBeiz']; // 导出的表头字段名,需要导出表格字段名
                  const list = that.excelData;
                  const data = that.formatJson(filterVal, list);
                  export_json_to_excel(tHeader, data, '多工制令单excel');// 导出的表格名称,根据需要自己命名
                  // this.fnAjaxUpdata()//打印完成后一定要重新刷新一下数据,不然搜索框将不能用,搜索框再次搜索数据内层的数据会被format而导致的乱掉
                 // console.log(this.searchTypeIntitle)
                 setTimeout(()=>{//这里最好也加一下
                     if(this.searchTypeIntitle==1){
                          this.fnAjaxUpdata()//加入数据报错页面错乱 除非判断刚开始搜索数据时是依据时间还是日期
                     }else{
                         this.onSearch2(this.dgzlstring)
                     }
                 },100)
                })
     },
     //格式转换
     formatJson(filterVal, jsonData) {
           return jsonData.map(v => filterVal.map(j =>{
                return (v[j])
           }))
    },

 原因二:

如果还是会报错-一般报错出现在点击表单展开后,点击展开后再次打印导出excel就会报错

这个主要原因是因为ant design框架

fnAllExpand(){
        //设置全展
        setTimeout(()=>{//单独设置--展开所有功能
                  this.data.forEach((val,key)=>{
                       this.defaultExpandedRowKeys.push(val.key)
                  })
        },2000)
    },

不影响导出等功能和正常使用

posted @ 2020-06-30 11:04  少哨兵  阅读(1831)  评论(0编辑  收藏  举报