handleSpanMethod({ row, column, rowIndex }) {
if (column.property === 'reviewerId') {
// 判断当前行与上一行的Reviewer ID是否相同
if (rowIndex > 0 && row.reviewerId === this.tableData[rowIndex - 1].reviewerId) {
return {
rowspan: 0, // 与上一行相同的Reviewer ID,设置跨行数为0,即不显示
colspan: 1, // 不进行跨列
};
}
// 查找后续行是否与当前行的Reviewer ID相同
let rowspan = 1;
for (let i = rowIndex + 1; i < this.tableData.length; i++) {
if (this.tableData[i].reviewerId === row.reviewerId) {
rowspan++;
} else {
break;
}
}
return {
rowspan: rowspan, // 跨行数为相同Reviewer ID的行数
colspan: 1, // 不进行跨列
};
} else if (column.property === 'volumeNo') {
// 判断是否需要合并第三列
const firstColumnValue = row.reviewerId;
const startRowIndex = this.tableData.findIndex((r) => r.reviewerId === firstColumnValue);
const endRowIndex = this.tableData.slice(startRowIndex).findIndex((r) => r.reviewerId !== firstColumnValue);
const rowspan = startRowIndex === rowIndex ? endRowIndex : 0;
return {
rowspan: rowspan, // 跨行数为相同First Column已合并过的行数
colspan: 1, // 不进行跨列
};
}
// 其他列不进行合并
return {
rowspan: 1,
colspan: 1,
};
el-table添加方法::span-method="handleSpanMethod" 合并第一列,第三列 ,更改方法里面的字符串为自己需要合并的
效果: