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 ...
随机推荐
- C++ Qt开发:RadioButton单选框分组组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioB ...
- 针对el-menu-item组件的警告Invalid event arguments: event validation failed for event "cli
现象: 解决办法: 加上index这个唯一标识,不然会有意想不到的问题
- 10、goto语句
1.goto语句的概念 goto语句:可以无条件的转移到运行中指定的行 这个用的比较少,了解一下即可 2.语法结构和用法 /** * @author ly (个人博客:https://www.cnbl ...
- 文心一言 VS 讯飞星火 VS chatgpt (161)-- 算法导论13.1 1题
一.用go语言,按照图 13-1(a)的方式,画出在关键字集合(1,2,-,15)上高度为 3 的完全二叉搜索树.以三种不同方式向图中加入 NIL 叶结点并对各结点着色,使所得的红黑树的黑高分别为2. ...
- matlab 2018b 下载链接
matlab 2018b 功能强大下载地址为 https://pan.baidu.com/s/1QZO35BtzcIkh_yPYRIGVWg
- 数字孪生系统如何整合CesiumJS?整合后会产生怎样的化学反应?
数字孪生有关的项目中,智慧城市一直是一个比较重要的类型,但是这类智慧城市项目往往包含了大量的GIS相关数据,例如倾斜摄影.DEM.DOM.地形数据等.这时,将GIS系统融合进数字孪生系统的需求就出现了 ...
- Using PostMessage/SendMessage to send keys to c# IE WebBrowser
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool PostM ...
- TeeChart 的使用从入门到精通
1.首先nutGet 进行使用 2.如果需要使用管方的Key 进行激活 3.直接上写的Demo代码 1 using System; 2 using System.Collections.Generic ...
- Java 注解的实现原理
注解的本质 在 java.lang.annotation.Annotation 接口中有这样的描述: The common interface extended by all annotation i ...
- Ynoi
P4688 [Ynoi2016] 掉进兔子洞 序列,静态,求三个区间的可重集的交的大小,离线,\(n,Q\le 10^5\),3s,500MB 缺乏性质 \(\rightarrow\) bitset ...