elementUI非常规数据格式渲染复杂表格(副表头、合并单元格)

效果

数据源

前端代码 (展示以及表格处理/数据处理)

复制代码
标签
<el-table :data="dataList" style="width: 100%" :span-method="objectSpanMethod">
                <template v-for="(item, index) in headers">
                    <el-table-column prop="" :label="item" align="center">
                        <template slot-scope="scope">
                            <div>
                                {{ scope.row[index] }}
                            </div>
                        </template>
                        <el-table-column prop="" label="姓名" v-if="index >= 3" align="center">
                            <template slot-scope="scope">
                                {{ scope.row[index + index - 3] }}
                            </template>
                        </el-table-column>
                        <el-table-column prop="" label="手机号" v-if="index >= 3" align="center">
                            <template slot-scope="scope">
                                {{ scope.row[index + index - 2] }}
                            </template>
                        </el-table-column>
                    </el-table-column>
                </template>
            </el-table>

JS代码

data
 dataList: [],
 headers: [],
 spanArr: [],

methods
 getSpanArr(data) {
            for (var i = 0; i < data.length; i++) {
                if (i === 0) {
                    this.spanArr.push(1);
                    this.pos = 0
                } else {
                    // 判断当前元素与上一个元素是否相同
                    if (data[i][0] === data[i - 1][0]) {
                        this.spanArr[this.pos] += 1;
                        this.spanArr.push(0);
                    } else {
                        this.spanArr.push(1);
                        this.pos = i;
                    }
                }
            }
        },

// 合并单元格
        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
            if (columnIndex === 0 || columnIndex === 1 ) {
                const _row = this.spanArr[rowIndex];
                const _col = _row > 0 ? 1 : 0;
                return {
                    rowspan: _row,
                    colspan: _col
                }
            }

        }
相关推荐
star_1112几秒前
Jenkins+nginx部署前端vue项目
前端·vue.js·jenkins
im_AMBER8 分钟前
Canvas架构手记 05 鼠标事件监听 | 原生事件封装 | ctx 结构化对象
前端·笔记·学习·架构
JIngJaneIL9 分钟前
农产品电商|基于SprinBoot+vue的农产品电商系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·农产品电商系统
Tongfront14 分钟前
前端通用submit方法
开发语言·前端·javascript·react
可爱又迷人的反派角色“yang”17 分钟前
LVS+Keepalived群集
linux·运维·服务器·前端·nginx·lvs
han_18 分钟前
前端高频面试题之CSS篇(二)
前端·css·面试
JIngJaneIL19 分钟前
书店销售|书屋|基于SprinBoot+vue书店销售管理设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·书店销售管理设计与实现
徐同保21 分钟前
n8n CLI 项目结构全面分析(node后端)
前端
墨雪不会编程30 分钟前
C++基础语法篇五 ——类和对象
java·前端·c++
一 乐31 分钟前
农产品销售|农产品供销|基于SprinBoot+vue的农产品供销系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot