vue使用el-table动态合并列及行
本文实例为大家分享了vue使用el-table动态合并列及行的具体代码,供大家参考,具体内容如下
前两天项目中需要用到表单合并,特此记录,放便以后使用。
首先我使用的element-ui中的el-table,文档中提供span-method方法可以实现合并行或列,大家不熟悉的可以去看看element文档地址,但是文档提供的例子很简单,不能满足复杂的页面,所以需要处理一下数据。
如下代码:
getListDataForRowAndColumn(data){
let self = this;
self.rowAndColumn = [];
self.rowRoomColumn = [];
for (var i = 0; i < data.length; i++) {
if (i === 0) {
// 如果是第一条记录(即索引是0的时候),向数组中加入1
self.rowAndColumn.push(1);
self.pos = 0;
self.rowRoomColumn.push(1);
self.posT = 0;
} else {
//data[i].typeDesc就是你从接口读取的字段信息,下同
if (data[i].typeDesc === data[i - 1].typeDesc) {
// 如果typeDesc相等就累加,并且push 0
self.rowAndColumn[self.pos] += 1
self.rowAndColumn.push(0)
if (data[i].areaDesc === data[i - 1].areaDesc) {
// 如果areaDesc相等就累加,并且push 0
self.rowRoomColumn[self.posT] += 1
self.rowRoomColumn.push(0)
} else {
self.rowRoomColumn.push(1)
self.posT = i
}
} else {
// 不相等push 1
self.rowAndColumn.push(1)
self.pos = i;
self.rowRoomColumn.push(1)
self.posT = i
}
}
}
},
以上代码就是来整理你的数据,注释写的很清楚了,相信大家都能看懂,真不行就打印出来看看。
处理完数据后就用到上面提到的span-method方法了。如图:

objectSpanMethod方法如下:
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
let self = this
if (columnIndex === 1) {
if (self.rowAndColumn[rowIndex]) {
let rowNum = self.rowAndColumn[rowIndex];
return {
rowspan: rowNum,
colspan: rowNum > 0 ? 1 : 0
}
}
return {
rowspan: 0,
colspan: 0
}
}
if (columnIndex === 2) {
if (self.rowRoomColumn[rowIndex]) {
let roomNum = self.rowRoomColumn[rowIndex];
return {
rowspan: roomNum,
colspan: roomNum > 0 ? 1 : 0
}
}
return {
rowspan: 0,
colspan: 0
}
}
},
搞定,来看看看效果图吧

注意,使用这方法时一定要让后端经过排序后再传出来,否则页面可能会达不到你想要的效果。因为我是从第二列开始合并的,所以objectSpanMethod方法中的columnIndex从1开始的,可根据你的实际情况来。把从接口获取到的数据放到getListDataForRowAndColumn这方法里即可,记得定义rowAndColumn,rowRoomColumn。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
vue项目使用md5加密、crypto-js加密、国密sm3及国密sm4的方法
密码或者其他比较重要东西假如使用明文传输中是很危险的,所以就需要前端一些加密协议,对密码、手机号、身份证号等信息进行保护,下面这篇文章主要给大家介绍了关于vue项目中使用md5加密、crypto-js加密、国密sm3及国密sm4的相关资料,需要的朋友可以参考下2022-12-12
Element-ui之ElScrollBar组件滚动条的使用方法
这篇文章主要介绍了Element-ui之ElScrollBar组件滚动条的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-09-09
解决vue无法加载文件C:\Users\Administrator\AppData\Roaming\npm\vue.ps
这篇文章主要介绍了解决vue无法加载文件C:\Users\Administrator\AppData\Roaming\npm\vue.ps1因为在此系统上禁止运行脚本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03
一步步从Vue3.x源码上理解ref和reactive的区别
vue3的数据双向绑定,大家都明白是proxy数据代理,但是在定义响应式数据的时候,有ref和reactive两种方式,如果判断该使用什么方式,是大家一直不很清楚地问题,下面这篇文章主要给大家介绍了关于从Vue3.x源码上理解ref和reactive的区别的相关资料,需要的朋友可以参考下2023-02-02


最新评论