element-ui表格多级表头固定列和合并单元格

多级表头固定列

代码示例-不能直接运行,仅供参考

<el-table ref="table" class="table"
                    :data="list"
                    style="width: 100%"
                    :header-cell-style="headerCellStyle"
                    v-loading="dataLoading"
                    :span-method="spanMethod"
                    >
                    <el-table-column v-for="(item, index) in tableHeader" 
                    :label="item.name" :key="index" 
                    :fixed="item.fixed"
                    :min-width="item.width">
                        <el-table-column v-for="(head,j) in item.header" 
                        :label="head.label" :key="j+'ii'"
                        :fixed="head.fixed"
                        :prop="head.id"
                        :min-width="head.minW"
                        :class-name="setClass(head.id)">
                        </el-table-column>
                     </el-table-column>
</el-table>

需要在修改样式-避免固定列数据空白情况
<style lang="less" scoped>
.table {
    /deep/.el-table__cell.is-hidden>*{//多级表头固定列-样式修改
        visibility: visible;
    }
}
</style>

合并单元格

如图,下列方法实现的是图中的合并单元格的方式方法

function spanMethod({ row, column, rowIndex, columnIndex }) {
            let arr = [0, 1, 2, 4, 12, 13, 14, 15, 16, 17,18,19,20,21];//需要合并的列
            let spArr = [5, 22, 23, 24, 25, 26, 27];//需要合并的列
            if (arr.indexOf(columnIndex)>-1) {
                if (row.rowspan) {
                    return {
                        rowspan: row.rowspan,//合并多少行数据
                        colspan: 1
                    };
                } else {
                    return {
                        rowspan: 0,
                        colspan: 0
                    };
                }
            }else if (spArr.indexOf(columnIndex) > -1) {
                if (row.spRowspan) {
                    return {
                        rowspan: row.spRowspan,
                        colspan: 1
                    };
                } else {
                    if (!row.mcId) {//避免不合并的行,缺少数据,导致没有边框
                        return {
                            rowspan: 1,
                            colspan: 1
                        }; 
                    } else {
                        return {
                            rowspan: 0,
                            colspan: 0
                        }; 
                    }
                }
            }
        },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值