這種報錯一般發生在點擊導出后成功導出,再次按導出按鈕: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) },
不影響導出等功能和正常使用
