html
复制代码
<template>
<div>
<el-table
:data="tableData"
:span-method="mergeCells"
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="address"
label="地址">
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ date: '2023-10-01', name: 'Tom', address: 'No. 189, Grove St, Los Angeles' },
{ date: '2023-10-01', name: 'Tom', address: 'No. 189, Grove St, Los Angeles' },
{ date: '2023-10-02', name: 'Jerry', address: 'No. 189, Grove St, Los Angeles' },
{ date: '2023-10-02', name: 'Jerry', address: 'No. 189, Grove St, Los Angeles' },
{ date: '2023-10-03', name: 'Spike', address: 'No. 189, Grove St, Los Angeles' }
]
};
},
methods: {
mergeCells({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { // 假设我们要合并的是第一列(日期列)
const _row = this.tableData[rowIndex];
const _prevRow = this.tableData[rowIndex - 1];
if (_prevRow && _prevRow.date === _row.date) {
return {
rowspan: 0,
colspan: 1
};
} else {
let count = 1;
for (let i = rowIndex + 1; i < this.tableData.length; i++) {
if (this.tableData[i].date === _row.date) {
count++;
} else {
break;
}
}
return {
rowspan: count,
colspan: 1
};
}
}
}
}
};
</script>