這段時間總是為難我胖虎,讓一個java程序員寫vue。一開始就復制粘貼,照着vue文檔改改需求也是蠻爽的,這個星期突然接到活,有一塊需要實現表格的合並行,真是讓人頭大.jpg
element-ui官方:
通過給table
傳入span-method
方法可以實現合並行或列,方法的參數是一個對象,里面包含當前行row
、當前列column
、當前行號rowIndex
、當前列號columnIndex
四個屬性。該函數可以返回一個包含兩個元素的數組,第一個元素代表rowspan
,第二個元素代表colspan
。 也可以返回一個鍵名為rowspan
和colspan
的對象。
<el-table stripe :data="tableData" border :span-method="objectSpanMethod" class="width100 margintop20 trheight56">
methods: { objectSpanMethod({row,column,rowIndex,columnIndex}){ if(columnIndex < 5) { if(row.multiPrescriptions>0){ return { rowspan: row.multiPrescriptions, colspan: 1 }; }else{ return { rowspan: 0, colspan: 0 }; } } },
axion.getPrescriptionList(parameter).then(d=>{ if(d.data.returnCode == 200){ this.totalCount=d.data.returnData.totalCount this.prescriptionTable = d.data.returnData.list; this.tableData=[] if(this.prescriptionTable){ var s = 0 for(var i=0;i<this.prescriptionTable.length;i++){ var element=this.prescriptionTable[i] if(element.westernPrescriptionList.length>0){ for(var j=0;j<element.westernPrescriptionList.length;j++){ this.tableData.push({ status:element.status, departmentName:element.departmentName, doctorName:element.doctorName, patientName:element.patientName, patientSex:element.patientSex, patientAge:element.patientAge, diagnosis:element.diagnosis, caDoctorName:element.diagnosis.caDoctorName, name:element.westernPrescriptionList[j].name, quantity:element.westernPrescriptionList[j].quantity, unit:element.westernPrescriptionList[j].unit, dosage:element.westernPrescriptionList[j].dosage, mode:element.westernPrescriptionList[j].mode, frequency:element.westernPrescriptionList[j].frequency, days:element.westernPrescriptionList[j].days, createTime:element.westernPrescriptionList[j].createTime, }) if(j===0){ this.tableData[s].multiPrescriptions = element.westernPrescriptionList.length } s++; } }else{ this.tableData.push({ status:element.status, departmentName:element.departmentName, doctorName:element.doctorName, patientName:element.patientName, patientSex:element.patientSex, patientAge:element.patientAge, diagnosis:element.diagnosis, name:'', quantity:'', unit:'', dosage:'', mode:'', frequency:'', days:'', createTime:'', multiPrescriptions:1 }) s++; } } } }else{ this.$alert(d.data.returnMsg, '提示', {}); } })
以上代碼部分借鑒了我公司前端的處理方式,其實也很簡單,就是把后端返回的數據格式包裝成新的array,這樣就解決了我的問題,記錄一下