项目场景:
el-table 合并相同的单元格
解决方案:
<el-table :data="contentTableData" :span-method="objectSpanMethod" border max-height="250">
<el-table-column prop="lang" label="语种"></el-table-column>
<el-table-column prop="content" label="内容"></el-table-column>
</el-table>
<script>
flitterData(arr) {
let spanOneArr = []
let concatOne = 0
arr.forEach((item, index) => {
if (index === 0) {
spanOneArr.push(1)
} else {
if (item.lang === arr[index - 1].lang) { //第一列需合并相同内容的判断条件
spanOneArr[concatOne] += 1
spanOneArr.push(0)
} else {
spanOneArr.push(1)
concatOne = index
}
}
})
return {
one: spanOneArr,
}
}
objectSpanMethod({ rowIndex, columnIndex }) {
if (columnIndex === 0) {
const _row = (this.flitterData(this.contentTableData).one)[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
}
}
}
</script>