问题背景
项目需求table表格中,相同的类型合并成一个单元格展示。
问题描述
el-table并没有相关的语法直接合并,需要我们自己传入一个方法返回一个数组格式,来确定要合并行列。

解决问题
首先需要在 el-table 标签上绑定:span-method="objectSpanMethod"
1 2 3
| <el-table :data="tableData" :span-method="objectSpanMethod" > <el-table-column prop="projectName" label="订单类型" /> </el-table>
|
再去methods中定义 objectSpanMethod 方法,data中定义一个rowSpanArr参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| handleTableData(tableData){ let rowSpanArr = [], position = 0; for (let [index, item] of tableData.entries()) { if (index == 0) { rowSpanArr.push(1); position = 0; } else { if (item.projectName == tableData[index - 1].projectName) { rowSpanArr[position] += 1; rowSpanArr.push(0); } else { rowSpanArr.push(1); position = index; } } } this.rowSpanArr = rowSpanArr }
objectSpanMethod({ row, column, rowIndex, columnIndex }){ if (columnIndex === 0) { const rowSpan = this.rowSpanArr[rowIndex]; return { rowspan: rowSpan, colspan: 1 }; } }
|
扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| objectSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 0) { if (rowIndex % 2 === 0) { return { rowspan: 2, colspan: 1, }; } else { return { rowspan: 0, colspan: 0 }; } } }
|