效果
注意:合并单元格后,多选会有问题,参见:
https://blog.csdn.net/weixin_45016173/article/details/121657648?spm=1001.2014.3001.5501
//html
:span-method="arraySpanMethod"
//筛选
async getListTable(data) {
this.listLoading = true;
data.leadsQueryInfo.pageNum = this.pageNum;
data.leadsQueryInfo.pageSize = this.pageSize;
this.tableDatasList = await JSON.parse(JSON.stringify(data));
let res = await this.Axios.post(`leads-api/leadslist/queryByInfo`, data, "postJson");
if (res.data.code == 0) {
//调用
this.getSpanArr(res.data.result);
this.tableData = res.data.result;
this.total = res.data.total;
this.listLoading = false;
}
},
//传入tabledata 再调用此方法
getSpanArr(data) {
this.pos = 0;
this.spanArr = [];
for(let i = 0; i < data.length; i++) {
if (i === 0) {
this.spanArr.push(1);
} else {
// 判断当前元素与上一个元素是否相同
if (data[i]["companyName"] === data[i - 1]["companyName"] && data[i]["companyName"] !== "") {
this.spanArr[this.pos] += 1;
this.spanArr.push(0);
} else {
this.spanArr.push(1);
this.pos = i;
}
}
}
},
//判断合并单元格
arraySpanMethod({row, column, rowIndex, columnIndex}) {
let data = [0,1]
if (data.includes(columnIndex)) {
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},