el-table 动态渲染多级表头;一级表头根据数据动态生成,二级表头固定

一、表格需求:

实现一个动态表头,一级表头,根据数据动态生成,二级表头固定,每列的数据不一样,难点在于数据的处理。做这种表头需要两组数据,一组数据是实现表头的,另一组数据是内容渲染的。
在这里插入图片描述

二、分析思路

想实现这种效果就得造数据,按照示例的话,我们在数据渲染是表头数据是这种结构

<el-table-column label="房型名称" align="center"><el-table-columnv-for="(item1, index1) in tableColData":key="index1"align="center"prop="":label="item1.label"><el-table-columnv-for="(item2, index2) in item1.children":key="index2":prop="item2.prop":label="item2.label"align="center"></el-table-column></el-table-column></el-table-column>
//表头数据 
tableColData: [{label: "大床房元/间",children: [{prop: "livePerson0",label: "入住人数",},{prop: "roomNumber0",label: "客房数量",},{prop: "liveDays0",label: "入住天数",},],},{label: "小床房元/间",children: [{prop: "livePerson1" label: "入住人数",},{prop: "roomNumber1" label: "客房数量",},{prop: "liveDays1"label: "入住天数",},],},
],

解决了表头数据,接下来就是得改造表数据了,改造数据内容,我们需要的表数据内容是这个样子的

// 表数据
tableList: [{livePerson0: 1,roomNumber0: 1,liveDays0: 1,},{livePerson1: 2,roomNumber1: 1,liveDays1: 10,},
],

接下来就是根据后端返回的数据内容改造成我们想要的表头数据和表数据了。

三、实现

后端返回给我的数据内容是这个样子的:

tableList: [{"month": "2023-05","data": [{"room_type_name": "大床房","total_live_days": 1,"total_price": 0.01,"project_id": 118,"price": 0.01,"total_room_number": 1,"room_type_id": 1,"total_live_person": 1}],"total_price": 0.01},{"month": "2023-06","data": [{"room_type_name": "大床房","total_live_days": 8,"total_price": 0.1,"project_id": 118,"price": 0.01,"total_room_number": 9,"room_type_id": 1,"total_live_person": 15},{"room_type_name": "总统房","total_live_days": 1,"total_price": 0.01,"project_id": 118,"price": 0.01,"total_room_number": 1,"room_type_id": 3,"total_live_person": 1}],"total_price": 0.11},{"month": "2023-07","data": [{"room_type_name": "大床房","total_live_days": 2,"total_price": 0.04,"project_id": 121,"price": 0.01,"total_room_number": 2,"room_type_id": 1,"total_live_person": 4},{"room_type_name": "小床房","total_live_days": 1,"total_price": 0.01,"project_id": 118,"price": 0.01,"total_room_number": 1,"room_type_id": 2,"total_live_person": 1}],"total_price": 0.05}]

自己改造的代码:

    getRoomType() {let roomTypeName = [];this.tableColData = [];this.tableList.forEach(item => {item.data.forEach(citem => {const index = roomTypeName.findIndex(i => i.room_type_name == citem.room_type_name);if (index == -1) {//去重,==-1找不到,就push进去roomTypeName.push(citem);}});});console.log(roomTypeName, "获取表头房间名称的动态数据");//   添加表头数据roomTypeName.forEach((item, index) => {this.tableColData.push({label: `${item.room_type_name}${item.price}元/间)`,children: [{prop: "livePerson" + index,label: "入住人数"},{prop: "roomNumber" + index,label: "客房数量"},{prop: "liveDays" + index,label: "入住天数"}]});});// 添加表数据this.tableList.forEach(data => {data.data.forEach(item => {roomTypeName.forEach((citem, cindex) => {if (item.room_type_name == citem.room_type_name) {data["livePerson" + cindex] = item.total_live_person;data["roomNumber" + cindex] = item.total_room_number;data["liveDays" + cindex] = item.total_live_days;}});});});console.log(this.tableList, "this.tableList");},

最终我的表数据改造成这个样子,实现了我想要的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/245526.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《WebKit技术内幕》学习之十三(3):移动WebKit

3 其他机制 3.1 新渲染机制 为了移动领域更好的用户体验&#xff0c;渲染机制所做的改进主要是提升渲染性能来增加响应的速度&#xff0c;甚至不惜牺牲一些跟规范定义的行为不一致的地方。在这一小节中主要介绍三个方面的技术&#xff0c;其一是Tiled Backing Store&#x…

81.网游逆向分析与插件开发-背包的获取-装备栏数据结构的逆向分析

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;自动化助手显示物品数据-CSDN博客 然后游戏中有弓箭&#xff0c;弓箭有数量&#xff0c;可以作为突破口&#xff0c;也可以使用物品id 获取弓的方式 获取弓箭的方式 然后搜索250 然后搜索出一个 然后…

C语言-算法-线性dp

[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中&#xff0c;从 7 → 3 → 8 →…

k8s-基础知识(Pod,Deployment,ReplicaSet)

k8s职责 自动化容器部署和复制随时扩展或收缩容器容器分组group&#xff0c;并且提供容器间的负载均衡实时监控&#xff0c;即时故障发现&#xff0c;自动替换 k8s概念及架构 pod pod是容器的容器&#xff0c;可以包含多个container pod是k8s最小可部署单元&#xff0c;容器…

从物联网看智慧文旅的未来:技术与实践的完美结合,重塑旅游体验的新篇章

一、物联网技术&#xff1a;智慧文旅的基石 随着科技的飞速发展&#xff0c;物联网技术已经深入到我们生活的方方面面&#xff0c;尤其在智慧文旅领域&#xff0c;物联网技术更是起到了不可或缺的作用。它如同智慧文旅的基石&#xff0c;为旅游行业带来了前所未有的创新和变革…

Elasticsearch内核解析 - 数据模型篇

Elasticsearch内核解析 - 数据模型篇 - 知乎 Elasticsearch是一个实时的分布式搜索和分析引擎&#xff0c;它可以帮助我们用很快的速度去处理大规模数据&#xff0c;可以用于全文检索、结构化检索、推荐、分析以及统计聚合等多种场景。 Elasticsearch是一个建立在全文搜索引擎…

8.6跳跃游戏②(LC45-M)

算法&#xff1a; 与上一题一样&#xff0c;还是看最大覆盖范围 要从覆盖范围出发&#xff0c;不管怎么跳&#xff0c;覆盖范围内一定是可以跳到的&#xff0c;以最小的步数增加覆盖范围&#xff0c;覆盖范围一旦覆盖了终点&#xff0c;得到的就是最少步数&#xff01; 这里…

go 语言中 json.Unmarshal([]byte(jsonbuff), j) 字节切片得使用场景

struct_tag的使用 在上面的例子看到&#xff0c;我们根据结构体生成的json的key都是大写的&#xff0c;因为结构体名字在go语言中不大写的话&#xff0c;又没有访问权限&#xff0c;这种问题会影响到我们对json的key的名字&#xff0c;所以go官方给出了struct_tag的方法去修改…

unity刷新grid,列表

获取UIGrid 组件&#xff0c;更新列表 listParent.GetComponent().repositionNow true;

Ubuntu 申请 SSL证书并搭建邮件服务器

文章目录 Log 一、域名连接到泰坦&#xff08;Titan&#xff09;电子邮件二、NameSilo Hosting 避坑三、Ubuntu 搭建邮件服务器1. 环境准备2. 域名配置3. 配置 Postfix 和 Dovecot① 安装 Nginx② 安装 Tomcat③ 申请 SSL 证书&#xff08;Lets Encrypt&#xff09;④ 配置 pos…

【并发编程】 synchronized的普通方法,静态方法,锁对象,锁升级过程,可重入锁,非公平锁

目录 1.普通方法 2.静态方法 3.锁对象 4.锁升级过程 5.可重入的锁 6.不公平锁 非公平锁的 lock 方法&#xff1a; 1.普通方法 将synchronized修饰在普通同步方法&#xff0c;那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosdnewSyncDemo();这一个实例对象…

ORBSLAM3安装

1. 依赖 在该目录下打开终端,安装下面所有依赖。 1. 1 编译软件 sudo apt-get install gccsudo apt-get install g++sudo apt-get install build-essentialsudo apt-get install cmakesudo apt-get install openssl sudo apt-get install libssl-dev1. 2 Pangolin git cl…

蓝桥杯备战——5.动态数码管扫描

1.分析原理图 经查阅说明书得知数码管为共阳极&#xff0c;共阳端口接到了U8,而段码接到了U7。 如果需要选中U8,我们只需要将P250;P261;P271; 如果需要选中U7,我们只需要将P251;P261;P271; 2.代码示例 void Delay1ms() //12.000MHz {unsigned char data i, j;i 12;j 169;…

java以SSL方式连ES

先做准备工作&#xff0c;浏览器方式访问 ES7.X url https://127.0.0.1:8027 弹出用户名和密码 输入后在浏览器得到 { “name” : “DTCNPEMS04”, “cluster_name” : “cnp-es-cluster”, “cluster_uuid” : “wb0So_FqQBOKqtXnsqofTg”, “version” : { “number” : “7.…

java web 校园健康管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web校园健康管理系统是一套完善的java web信息管理系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysq…

第一篇【传奇开心果短博文系列】Python的库OpenCV技术点案例示例:cv2常用功能和方法

传奇开心果短博文系列 短博文系列目录Python的库OpenCV技术点案例示例系列 短博文目录一、前言二、常用功能和方法示例三、归纳总结 短博文系列目录 Python的库OpenCV技术点案例示例系列 短博文目录 一、前言 cv2是Python中常用的第三方库&#xff0c;也称为OpenCV库&#…

视频监控方案设计:EasyCVR视频智能监管系统方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…

学生护眼灯哪个品牌好?最好的学生护眼灯品牌排行

说到台灯&#xff0c;相信大家都不陌生&#xff0c;特别是对于家中有学生的家长们而言&#xff0c;一款优秀的护眼台灯已经成为居家必备的工具之一。然而&#xff0c;随着各种护眼台灯层出不穷&#xff0c;价格从几百到上千不等&#xff0c;人们对于这一领域的产品是否物有所值…

【Linux】-网络概念

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

[pytorch入门] 2. tensorboard

tensorboard简介 TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中.但是也可以独立安装&#xff0c;服务Pytorch等其他的框架 可以常常用来观察训练过程中每一阶段如何输出的 安装pip install tensorboard启动tensorboard --logdir<d…