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 ...
随机推荐
- 【已解决】【Tensorflow2.12.0版本以后合并CPU和GPU版】Tensorflow-gpu==2.12.0 安装失败解决办法
直接上解决方式,需要知道原因的看后文. 直接安装 tensroflow,从 2022 年 12 月起 tensorflow-gpu 已经合并到 tensorflow 包中了 pip install t ...
- [USACO2007OPENS] City Horizon S
题目描述 Farmer John has taken his cows on a trip to the city! As the sun sets, the cows gaze at the cit ...
- 【软件安装】vmware虚拟机安装完整教程(15.5版本)
目录 一.基础介绍 二.准备工作(注意:如果自己下载不下来翻到最下面获取下载地址) 三.VMware下载与安装 VMware Workstation15.5新功能 注意: 一.基础介绍 VMware ...
- 9、For语句
1.for循环概念 程序的流程控制结构一共有三种: 顺序结构,选择结构,循环结构. 顺序结构:代码从上向下逐行的执行 选择结构:条件满足,某些代码才会被执行.0-1次 if语句,switch语句 循环 ...
- ElasticSearch给索引起"别名"和其重要性
创建别名: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-aliases.html 我们有时候并不能确保索引库 ...
- ThreadLocal底层源码解析
ThreadLocal底层源码解析 ThreadLocal:顾名思义的意思是本地线程或者局部线程的意思,其真正含义是希望多个线程之间拥有自己的局部变量,多个线程间拥有自己的私人变量,在多线程间不被共享 ...
- postman——请求与相应
一.新建一个项目 直接点击左边栏上面的添加目录图标来新增一个根目录,这样就等于新建了一个项目,我们可以把一个项目或一个模块的用例都存放在这个目录之下,并且在根目录之下我们还可以在建立子目录来进行功能用 ...
- 零基础电气专业毕业生,花费9.9元自学前端,成都月薪6.5K
介绍 毕业于成都理工电气专业,大学毕业后进入了一家电气公司,月薪2000元.一直对互联网行业感兴趣,但由于没有相关专业背景,所以一直没有勇气转行. 转行契机 公司的书记想搞一个内部生产管理系统,看我们 ...
- Java 并发编程(一)理论基础
与计算机基础相关的线程知识在此略过 线程安全性 相关的定义如下: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在代码中不需要任何额外的同步或者协同,这个类都能 ...
- 看华为云Serverless 4大特性如何让软件架构更丝滑
摘要:Serverless可以看作是一种云计算服务模型,它允许开发者在不需要管理服务器的情况下通过事件驱动的方式运行应用代码. 软件架构的发展从原先的单体架构到近十几年的微服务架构,再到现在新兴的Se ...