WishMeLz

生活其实很有趣

ElementUi table合并

 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,
            }
        }
    }