ElementUI的Table组件行合并上手指南

ElementUI的Table组件行合并 ,示例用官网vue3版的文档

javascript 复制代码
<el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 100%; margin-top: 20px">
    <el-table-column prop="id" label="ID" width="180" />
    <el-table-column prop="name" label="姓名" />
    <el-table-column prop="amount1" label="数值 1(元)" />
    <el-table-column prop="amount2" label="数值 2(元)" />
    <el-table-column prop="amount3" label="数值 3(元)" />
</el-table>
javascript 复制代码
export default {
    data() {
        return {
            tableData: [
                {
                    id: '12987122',
                    name: '王小虎',
                    amount1: '234',
                    amount2: '3.2',
                    amount3: 10,
                },
                {
                    id: '12987123',
                    name: '王小虎',
                    amount1: '165',
                    amount2: '4.43',
                    amount3: 12,
                },
                {
                    id: '12987124',
                    name: '王小虎',
                    amount1: '324',
                    amount2: '1.9',
                    amount3: 9,
                },
                {
                    id: '12987125',
                    name: '王小虎',
                    amount1: '621',
                    amount2: '2.2',
                    amount3: 17,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
                {
                    id: '12987126',
                    name: '王小虎',
                    amount1: '539',
                    amount2: '4.1',
                    amount3: 15,
                },
            ],

            // 用于行合并的数组,那就要在某一列下使用,此例子用于第一、二列
            // 每个元素是一行,0标识要隐藏第一列,非0数字标识此行要合并的行数
            spanArr: [3, 0, 0, 2, 0, 2, 0, 1, 3, 0], // 比如开头的3,0,0 从第一行开始合并3行,隐藏第二三行的第一列
            spanArr2: [2, 0, 1, 1, 1, 2, 0, 1, 1, 2],
        };
    },
    methods: {
		// 行合并范例
        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
        	// 处理第一列
            if (columnIndex === 0) {
                let _row = this.spanArr[rowIndex];
                let _col = _row > 0 ? 1 : 0; // 0表示隐藏
                return {
                    rowspan: _row,
                    colspan: _col,
                };
            }
            
			// 处理第二列
            if (columnIndex === 1) {
                let _row = this.spanArr2[rowIndex];
                let _col = _row > 0 ? 1 : 0; // 0表示隐藏
                return {
                    rowspan: _row,
                    colspan: _col,
                };
            }
        },
    },
};

效果:

相关推荐
雪芽蓝域zzs11 天前
第7节:多选模式、自定义选项渲染、受控弹窗显隐
vue.js·elementui
雪芽蓝域zzs12 天前
第6节:远程搜索弹窗(remote 模式),弹窗滚动加载分页
vue.js·elementui
雪芽蓝域zzs13 天前
第4节:el-select 弹窗事件控制(打开 / 关闭、选中事件、弹窗滚动事件)
vue.js·elementui
ss27313 天前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
雪芽蓝域zzs13 天前
第3节:el-select 弹窗定位、滚动穿透与挂载容器(popper-append-to-body /teleported)
vue.js·elementui
雪芽蓝域zzs13 天前
第 2 节:基础扩展 - 下拉弹窗常用原生属性
vue.js·elementui
雪芽蓝域zzs14 天前
Vue3 + Element Plus el-select 下拉弹窗
vue.js·elementui
朱 欢 庆18 天前
el-table 表格组件二次封装
javascript·vue.js·elementui
ℋᙚᵐⁱᒻᵉ鲸落25 天前
ETypeError: nameRef.value?.focus is not a functio. 设置el-input自动聚焦时报错
前端·javascript·vue.js·elementui
愛芳芳1 个月前
基于 Electron + Vue3 的仿 PC 微信客户端项目实战
前端·javascript·css·elementui·typescript·electron·vue