element-ui 实现行合并-亲测有效!
目标样式:

首先先来看下我们拿到的返回数据:
scheduleList: [
{
date: '第一天',
journey: '报道',
lecturer: '',
},
{
date: '第二天',
journey: '企业生产安全应急预案数字化推演及复盘',
lecturer: '国家危化品应急救援基地--林俊',
},
{
date: '第三天',
journey: '火灾应急处置',
lecturer: '国家危化品应急救援基地—张学军',
},
{
date: '第三天',
journey: '中毒窒息事故应急处置',
lecturer: '中化岙山事故应急处置师资',
},
{
date: '第四天',
journey: '人员触电事故应急处置',
lecturer: '中化岙山事故应急处置师资',
},
{
date: '第四天',
journey: '泄漏事故应急处置',
lecturer: '中化岙山事故应急处置师资',
},
{
date: '第四天',
journey: '问题交流',
lecturer: '中化岙山事故应急处置师资',
},
{
date: '第五天',
journey: '受限空间作业管理',
lecturer: '中化岙山危险作业内训师',
},
{
date: '第五天',
journey: '高处作业管理',
lecturer: '中化岙山危险作业内训师',
},
{
date: '第五天',
journey: '动火作业管理',
lecturer: '中化岙山危险作业内训师',
},
{
date: '第五天',
journey: '临时用电作业管理',
lecturer: '中化岙山危险作业内训师',
},
{
date: '第五天',
journey: '问题交流与讨论',
lecturer: '中化岙山危险作业内训师',
},
{
date: '第六天',
journey: '回城',
lecturer: '',
},
],
html代码结构:
<el-table
:data="scheduleList"
:span-method="objectSpanMethod"
@cell-mouse-leave="cellMouseLeave"
@cell-mouse-enter="cellMouseEnter"
:cell-class-name="tableRowClassName"
border
>
<el-table-column prop="date" label="时间" width="120"></el-table-column>
<el-table-column prop="journey" label="行程" width="600"></el-table-column>
<el-table-column prop="lecturer" label="讲师"></el-table-column>
</el-table>
js代码:
1 methods: {
2 // 获取相同编号的数组
3 getOrderNumber() {
4 const orderObj = {};
5 this.scheduleList.forEach((item, index) => {
6 item.rowIndex = index;
7 if (orderObj[item.date]) {
8 orderObj[item.date].push(index);
9 } else {
10 orderObj[item.date] = [];
11 orderObj[item.date].push(index);
12 }
13 });
14 // 将数组长度大于1的值 存储到this.orderIndexArr(也就是需要合并的项)
15 Object.keys(orderObj).forEach((key) => {
16 if (orderObj[key].length > 1) {
17 this.orderIndexArr.push(orderObj[key]);
18 }
19 });
20 },
21 objectSpanMethod({ row, column, rowIndex, columnIndex }) {
22 if (columnIndex === 0 || columnIndex === 2) {
23 for (let i = 0; i < this.orderIndexArr.length; i += 1) {
24 let element = this.orderIndexArr[i];
25 for (let j = 0; j < element.length; j += 1) {
26 let item = element[j];
27 if (rowIndex === item) {
28 if (j === 0) {
29 return {
30 rowspan: element.length,
31 colspan: 1,
32 };
33 }
34 if (j !== 0) {
35 return {
36 rowspan: 0,
37 colspan: 0,
38 };
39 }
40 }
41 }
42 }
43 }
44 },
45 tableRowClassName({ row, rowIndex }) {
46 let arr = this.hoverOrderArr;
47 for (let i = 0; i < arr.length; i += 1) {
48 if (rowIndex === arr[i]) {
49 return 'hovered-row';
50 }
51 }
52 },
53 cellMouseEnter(row, column, cell, event) {
54 this.rowIndex = row.rowIndex;
55 this.hoverOrderArr = [];
56 this.orderIndexArr.forEach((element) => {
57 if (element.indexOf(this.rowIndex) >= 0) {
58 this.hoverOrderArr = element;
59 }
60 });
61 },
62 cellMouseLeave(row, column, cell, event) {
63 this.rowIndex = '-1';
64 this.hoverOrderArr = [];
65 }
66 }
67 mounted() {
68 this.getOrderNumber();
69 },
css部分:
1 .el-table {
2 /deep/ .hovered-row {
3 background: #f5f7fa;
4 }
5 }
element-ui 实现行合并-亲测有效!的更多相关文章
- element UI表格行高、padding等设置报错问题
element UI里面表格的行高需要自己调整高度和设置padding,直接写style是不行的,里面有 : 1.row-style (行的 style) 2.header-row-styl (表 ...
- Element UI Form 每行显示多列,即多个 el-form-item
Element UI Form组件使用问题. 每个 el-form-item 都会独占一行. 对于输入项很多的管理app, 能否在每个form中, 每行显示 2 个或者多个 el-form-item ...
- element UI 调整表格行高
使用element UI的table默认属性,绘制表格如下: 该表格的行高太大了,于是想调小一些. 查看官网的文档,table有几个属性, row-style:行的 style 的回调方法,也可以使用 ...
- element table合计行自定义及单元格合并
问题:项目需求要求table下面加合计一行 图片展示: 代码示例: TEMPLATE: span-method是自定义table单元 show-summary是展示合并行 summary-meth ...
- element UI table 过滤 筛选问题
一.问提描述 使用elementUI table 官方筛选案例,发现筛选不是服务器端筛选,而是浏览器端对每一页进行单独筛选. 如何在服务器端筛选? 二.查询Element UI 官网table组 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- 【Element UI】使用问题记录
[Element UI]使用问题记录 转载:https://www.cnblogs.com/yangchongxing/p/10750994.html 下载地址: https://unpkg.com/ ...
- 关于Element UI中select组件中遇到的问题
问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...
- 推荐几个最好用的CRM软件,本人亲测
CRM是英文Customer Relationship Management 的简写,一般译作“客户关系管理”.CRM最早产生于美国,由Gartner Group 首先提出的CRM这个概念的.20世纪 ...
- knockoutjs+jquery.gridgroup 实现table数据加载和行合并
目标 使用ajax获取到json数据后,通过ko绑定到表格,然后通过jquery.gridgroup插件实现行合并,效果如下: 步骤 1.引入插件 <script src="~/Scr ...
随机推荐
- Kafka集群调优+能力探底
一.前言 我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐:4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另 ...
- AtCoder_abc326
T1 2UP3DOWN 简单的if判断,做题一分钟,翻译十分钟... 代码: #include<bits/stdc++.h> using namespace std; int main() ...
- MySQL笔记01: MySQL入门_1.3 MySQL启动停止与登录
1.3 MySQL启动停止与登录 1.3.1 MySQL启动与停止 MySQL数据库分为客户端和服务器端,只有服务器端服务开启以后,才可以通过客户端登录MySQL服务端. 首先,以管理员身份运行&qu ...
- 在 Sealos 中使用区块链技术实现统一支付系统
拿着区块链技术不一定是去发币,很多业务系统也适合用这些技术,比如做个统一支付系统,积分系统等,可以做为一家公司的金融基础设施,或支付中台.拿链的技术去做有很多好处: 高可用,自带多区域高一致性的能力, ...
- spring报错
C:\Users\dell\.jdks\openjdk-19.0.2\bin\java.exe "-javaagent:E:\idea图片\IntelliJ IDEA 2022.2.3\li ...
- 使用动画曲线编辑器打造炫酷的3D可视化ACE
前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的.无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作.这涉及到物理引擎的计算和对动画效果的数学 ...
- ElasticSearch之Index stats API
获取指定索引的统计数据. 获取指定索引的全部统计数据,命令样例如下: curl -X GET "https://localhost:9200/testindex_001/_stats?pre ...
- ElasticSearch之Nodes info API
查看当前集群中各节点的信息,执行如下命令: curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME ...
- React 类组件转换为函数式
函数式的 React 组件更加现代,并支持有用的 hooks,现在流行把旧式的类组件转换为函数式组件.这篇文章总结了转换的一些通用的步骤和陷阱. 通用替换 定义 从 class (\w+) exten ...
- 微软真是活菩萨,面向初学者的机器学习、数据科学、AI、LLM课程统统免费
微软真是活菩萨,面向初学者的机器学习.数据科学.AI.LLM课程统统免费 大家好,我是老章 推荐几个质量上乘且完全免费的微软开源课程 面向初学者的机器学习课程 地址:https://microsoft ...