merageArr: any = [] // 每个列应该合并的rowspan index为列的序号 其value为需要合并的数值
merageIndex = 0
merge(){
// 避免筛选合并时出现错行
this.dataList = this.dataList.sort((a,b)=> a.rId-b.rId)
// 遍历数组 通过一个key判断是否与上一项相同
// 结果类似于:[3,0,0,2,0] 第一个合并3行,剩下的两个为0 下一列2 后面的1个为0
for (let i = 0; i < this.dataList.length; i++) {
if (i === 0) { //
this.merageArr.push(1)
this.merageIndex = 0
} else {
if (this.dataList[i].rId == this.dataList[i - 1].rId) {
// 与上一个key相同,则让当前的index+1
this.merageArr[this.merageIndex] += 1
this.merageArr.push(0)
} else {
// 不同时记录index i
this.merageArr.push(1)
this.merageIndex = i
}
}
}
}
spanMethod(row: any, column: any, rowIndex: any, columnIndex: any) {
let { rowIndex: rIndex, columnIndex: cIndex } = row
// console.log( row);
if (cIndex === 0) {
const row1 = this.merageArr[rIndex]
const col1 = row1 > 0 ? 1 : 0 // 如果被合并了row = 0; 则他这个列需要取消
return {
rowspan: row1,
colspan: col1,
}
}
}