先上效果图:
<el-table
:data="tableData"
:span-method="objectSpanMethod"
border
style="width: 100%; margin-top: 20px"
>
</el-table>
/**
* 合并父级行
*/
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
const dataProvider = this.tableData;
if (columnIndex === 0) {
// 上一条数据
const prevRow = dataProvider[rowIndex - 1];
// 下一条数据
let nextRow = dataProvider[rowIndex + 1];
// 上一条数据的aFuncSn标识等于当前条数据的aFuncSn标识
if (prevRow && prevRow.aFuncSn === row.aFuncSn) {
return { rowspan: 0, colspan: 0 };
} else {
let rowspan = 1;
// 下一条数据的aFuncSn标识等于当前条数据的aFuncSn标识
while (nextRow && nextRow.aFuncSn === row.aFuncSn) {
rowspan++;
nextRow = dataProvider[rowspan + rowIndex];
}
if (rowspan > 1) {
return { rowspan, colspan: 1 };
}
}
}
},