Element多级表格合并处理

简介: Element多级表格合并处理
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>element-ui实现合并单元格效果</title>
    <link href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
    <style>
        .el-table .hovered-row {
            background: #f5f7fa;
        }
        .el-table th{
            display: none;
        }
    </style>
</head>

<body>
    <div id="app">
        <el-table :data="tableData6" :span-method="objectSpanMethod" border style="width: 100%;">
            <el-table-column prop="id" label="管理岗位" width="180">
            </el-table-column>
            <el-table-column prop="name" label="总数">
            </el-table-column>
            <el-table-column prop="amount1" label="等级">
            </el-table-column>
            <el-table-column :prop="item" :label="item" :key="index" v-for="(item,index) in months">
            </el-table-column>
        </el-table>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            months: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'],
            tableData6: [
                {
                    id: '管理岗位',
                    name: '设置总数',
                    amount1: '等级',
                    amount2: '3.2',
                    amount3: 10
                },
                {
                    id: '管理岗位',
                    name: '73',
                    amount1: '设置数',
                    amount2: '4.43',
                    amount3: 12
                },
                {
                    id: '管理岗位',
                    name: '73',
                    amount1: '聘用数',
                    amount2: '1.9',
                    amount3: 9
                }
            ],
            column_row_offset: {
                id: [3, 1, 1],
                name: [1, 2, 1, 1],
                amount1: [1, 1, 1, 1, 1],
                amount2: [1, 1, 1, 1, 1],
                amount3: [1, 1, 1, 1, 1]
            },
            now_col_row_num: {},
            now_col_offset: {},
        },
        mounted() {
            this.tableData6 = this.tableData6.map(v => {
                this.months.forEach((item, index) => {
                    if (v.amount1 === '等级') {
                        v[item] = item
                    } else if (v.amount1 === '设置数') {
                        v[item] = index
                    } else if (v.amount1 === '聘用数') {
                        v[item] = index
                    }else{
                        v[item] = '--'
                    }
                    this.column_row_offset[item] = [1, 1, 1, 1, 1]
                });
                return v
            })
            console.log(this.tableData6)
        },
        methods: {
            objectSpanMethod({ row, column, rowIndex, columnIndex }) {
                if (!this.now_col_row_num[column.property]) {
                    this.now_col_row_num[column.property] = Object.assign([], this.column_row_offset[column.property]);
                    let a = this.now_col_row_num[column.property].shift();
                    this.now_col_offset[column.property] = a;
                    return {
                        rowspan: a,
                        colspan: 1
                    };
                } else if (rowIndex >= this.now_col_offset[column.property]) {
                    let a = this.now_col_row_num[column.property].shift();
                    this.now_col_offset[column.property] += a;
                    return {
                        rowspan: a,
                        colspan: 1
                    };
                } else {
                    return {
                        rowspan: 0,
                        colspan: 0
                    };
                }

            }
        }
    })
</script>

</html>
相关文章
|
前端开发 JavaScript API
在 Vue3 + Element Plus 中生成动态表格,动态修改表格,多级表头,合并单元格
在 Vue 中,表格组件是使用频率及复杂度排名第一的组件,前端经常需要根据后台返回的数据动态渲染表格,比如动态表格如何生成,因为表格的列并不是固定的,在未知表格具体有哪些列的场景下,前端如何动态渲染表格数据。又或者需要把表格单元格进行合并处理,比如第一列是日期,需要把相同的日期进行合并,这样表格看起来会更加清晰。 本文手把手教你如何在 Vue3 + Element Plus 中创建表格、生成动态表格、创建动态多级表头、表格行合并、列合并等问题。如果你正在搭建后台管理工具,又不想处理前端问题,推荐使用卡拉云 ,卡拉云是新一代低代码开发工具,可一键接入常见数据库及 API ,无需懂前端,仅需拖拽即
3153 0
|
5月前
|
前端开发
Element UI 表格常用改造(表头添加注释、翻页连续序号【内含前端分页】)
Element UI 表格常用改造(表头添加注释、翻页连续序号【内含前端分页】)
239 0
|
7月前
|
小程序
06 - table表格标签+ 行合并+列合并
06 - table表格标签+ 行合并+列合并
137 0
|
7月前
|
前端开发
使用elementUI构建复杂表格,合并行或列,多级表头等
前端开发过程中常常会遇到各种开发表格的场景,有时候有的表格比较简单有的比较复杂(如下图简单示例所示,有合并项和多级表头),Elementui的el-table控件也可以支持构建复杂的表格,本文将指导你如何快速开发复杂表格~~~
709 0
|
前端开发 JavaScript Java
70jqGrid - 一次性加载多级表格数据
70jqGrid - 一次性加载多级表格数据
49 0
|
JavaScript 前端开发 Java
22jqGrid - 多级表格2
22jqGrid - 多级表格2
43 0
|
JavaScript 前端开发 Java
21jqGrid - 多级表格1
21jqGrid - 多级表格1
42 0
|
JavaScript 前端开发 Java
60jqGrid - 树模式添加数据
60jqGrid - 树模式添加数据
56 0
动态合并行和列(element-ui)
动态合并行和列(element-ui)
155 0
element table表格表头动态渲染效果demo(整理)
element table表格表头动态渲染效果demo(整理)

热门文章

最新文章