目标样式:

首先先来看下我们拿到的返回数据:

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: '',
},
],
      rowIndex: '-1',
      orderIndexArr: [],
      hoverOrderArr: [],

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 实现行合并-亲测有效!的更多相关文章

  1. element UI表格行高、padding等设置报错问题

    element UI里面表格的行高需要自己调整高度和设置padding,直接写style是不行的,里面有 : 1.row-style (行的 style) 2.header-row-styl   (表 ...

  2. Element UI Form 每行显示多列,即多个 el-form-item

    Element UI Form组件使用问题. 每个 el-form-item 都会独占一行. 对于输入项很多的管理app, 能否在每个form中, 每行显示 2 个或者多个 el-form-item ...

  3. element UI 调整表格行高

    使用element UI的table默认属性,绘制表格如下: 该表格的行高太大了,于是想调小一些. 查看官网的文档,table有几个属性, row-style:行的 style 的回调方法,也可以使用 ...

  4. element table合计行自定义及单元格合并

    问题:项目需求要求table下面加合计一行 图片展示: 代码示例: TEMPLATE:   span-method是自定义table单元 show-summary是展示合并行 summary-meth ...

  5. element UI table 过滤 筛选问题

    一.问提描述    使用elementUI table 官方筛选案例,发现筛选不是服务器端筛选,而是浏览器端对每一页进行单独筛选. 如何在服务器端筛选? 二.查询Element UI 官网table组 ...

  6. Java利用poi生成word(包含插入图片,动态表格,行合并)

    转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...

  7. 【Element UI】使用问题记录

    [Element UI]使用问题记录 转载:https://www.cnblogs.com/yangchongxing/p/10750994.html 下载地址: https://unpkg.com/ ...

  8. 关于Element UI中select组件中遇到的问题

    问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...

  9. 推荐几个最好用的CRM软件,本人亲测

    CRM是英文Customer Relationship Management 的简写,一般译作“客户关系管理”.CRM最早产生于美国,由Gartner Group 首先提出的CRM这个概念的.20世纪 ...

  10. knockoutjs+jquery.gridgroup 实现table数据加载和行合并

    目标 使用ajax获取到json数据后,通过ko绑定到表格,然后通过jquery.gridgroup插件实现行合并,效果如下: 步骤 1.引入插件 <script src="~/Scr ...

随机推荐

  1. .NET Conf 2023 Chengdu - 成都站圆满结束!

    今年的.NET Conf 2023,中国区首次有两个会场举办Local Event,成都会场已于上周六12月9日圆满结束. 本次成都会场共计100+余名.NET开发者报名参与,共计10+名志愿者参与筹 ...

  2. 吉特日化MES & 标签的设计与选择

    吉特日化MES & 标签的设计与选择:如今条码和二维码在生活中随处可见,作为一种能够快速精准读取识别的手段,条码和二维码在生产车间也应用的较为广泛.如果说条码和二维码哪一种更好,我更加倾向于使 ...

  3. [CF1854D] Michael and Hotel

    题目描述 Michael and Brian are stuck in a hotel with $ n $ rooms, numbered from $ 1 $ to $ n $ , and nee ...

  4. NoSQL数据库与关系数据库的比较

    1.在原理方面 2.在数据规模方面 3.在数据库模式方面 4.查询效率方面: 5.在事务一致性方面: 6.在数据完整性方面: 7.在可扩展性方面: 8.在可用性方面 9.在标准化方面: 10.在技术支 ...

  5. 在Windows操作系统中,使用powershell脚本批量删除、批量替换文件名

    比如我们下载的mp3文件或者小说.评书里都带很多作者.网站等信息,如何批量一键删除掉多余的字段呢? 下面举例:批量删除文件名称 可以看到原文中,所有文件名中均包含"小番茄与火龙果-" ...

  6. 【独立闯天下】Prim新传奇!💥原团队的Blazor版本迟迟无音,合并请求石沉大海。于是,我们决定单干!加入Prime Blazor版项目,一起开创崭新的旅程吧!🌟📚

    共建Prime的Blazor版:为开源社区注入新活力 Prime组件库作为一款广受欢迎的开源组件库,一直以来都备受开发者们的青睐.然而,随着技术的不断发展和更新,原团队的Blazor版本似乎已经逐渐失 ...

  7. LeetCode 947. 移除最多的同行或同列石头 并查集

    传送门 思路 干货太干就不太好理解了,以下会有点话痨( ̄▽ ̄)" 首先题目给了一个二维stones数组,存储每个石子的坐标,因为在同行或者同列的石子最终可以被取到只剩下一个,那么我们将同行同 ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (18)-- 算法导论4.1 5题

    五.使用如下思想为最大子数组问题设计一个非递归的.线性时间的算法.从数组的左边界开始,由左至右处理,记录到目前为止已经处理过的最大子数组.若已知 A[1..j]门的最大子数组,基于如下性质将解扩展为 ...

  9. 技术实践丨基于MindSpore框架Yolov3-darknet模型的篮球动作检测体验

    摘要:通过对篮球动作的分类训练及识别检测实例的讲解和体验,使我们了解了Yolov3模型的原理.架构等基本知识,为日后的深入学习奠定了基础. 背靠全新的设计理念,华为云推出了 MindSpore深度学习 ...

  10. 一文掌握GaussDB(DWS) SQL进阶技能:全文检索

    摘要:本文简要介绍了GaussDB(DWS)全文检索的原理和使用方法. 全文检索(Text search)顾名思义,就是在给定的文档中查找指定模式(pattern)的过程.GaussDB(DWS)支持 ...