目标样式:

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

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. Kafka集群调优+能力探底

    一.前言 我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐:4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另 ...

  2. AtCoder_abc326

    T1 2UP3DOWN 简单的if判断,做题一分钟,翻译十分钟... 代码: #include<bits/stdc++.h> using namespace std; int main() ...

  3. MySQL笔记01: MySQL入门_1.3 MySQL启动停止与登录

    1.3 MySQL启动停止与登录 1.3.1 MySQL启动与停止 MySQL数据库分为客户端和服务器端,只有服务器端服务开启以后,才可以通过客户端登录MySQL服务端. 首先,以管理员身份运行&qu ...

  4. 在 Sealos 中使用区块链技术实现统一支付系统

    拿着区块链技术不一定是去发币,很多业务系统也适合用这些技术,比如做个统一支付系统,积分系统等,可以做为一家公司的金融基础设施,或支付中台.拿链的技术去做有很多好处: 高可用,自带多区域高一致性的能力, ...

  5. spring报错

    C:\Users\dell\.jdks\openjdk-19.0.2\bin\java.exe "-javaagent:E:\idea图片\IntelliJ IDEA 2022.2.3\li ...

  6. 使用动画曲线编辑器打造炫酷的3D可视化ACE

    前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的.无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作.这涉及到物理引擎的计算和对动画效果的数学 ...

  7. ElasticSearch之Index stats API

    获取指定索引的统计数据. 获取指定索引的全部统计数据,命令样例如下: curl -X GET "https://localhost:9200/testindex_001/_stats?pre ...

  8. ElasticSearch之Nodes info API

    查看当前集群中各节点的信息,执行如下命令: curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME ...

  9. React 类组件转换为函数式

    函数式的 React 组件更加现代,并支持有用的 hooks,现在流行把旧式的类组件转换为函数式组件.这篇文章总结了转换的一些通用的步骤和陷阱. 通用替换 定义 从 class (\w+) exten ...

  10. 微软真是活菩萨,面向初学者的机器学习、数据科学、AI、LLM课程统统免费

    微软真是活菩萨,面向初学者的机器学习.数据科学.AI.LLM课程统统免费 大家好,我是老章 推荐几个质量上乘且完全免费的微软开源课程 面向初学者的机器学习课程 地址:https://microsoft ...