element-ui 格式化树形数组在table组件中展示(单元格合并)
2024-08-25 03:48:19
最近做的项目涉及到很多单元格合并问题,element-ui组件对于单元格合并的处理虽然很灵活,但是需要事先计算好每个单元格合并的rowspan和colspan,直接在span-method属性中计算实现起来有点困难,所以我拿到列表后先把每条数据的需要合并的rowspan计算出来然后直接在span-method属性中返回即可。上代码:
export const merge = function(
colArr,
list
) {
var allProps = [];
colArr.forEach((props, index) => {
allProps.push(...props);
list = getLevel(props, allProps, list);
});
return list;
}; //组装层
function getLevel(props, allProps, list) {
var rowKey = {};
for (var item of list) {
let propInfo = getPropStr(allProps, item);
if (rowKey[propInfo.key]) {
rowKey[propInfo.key].children.push(item);
} else {
let obj = propInfo;
obj.children = [item];
rowKey[propInfo.key] = obj;
}
}
let info = [];
for (var key in rowKey) {
rowKey[key].children.forEach((item, index) => {
if (index == 0) {
item = Object.assign(
item,
getMergeInfo(props, rowKey[key].children.length)
);
} else {
item = Object.assign(item, getMergeInfo(props, 0));
}
info.push(item);
});
}
return info;
} //获取合并信息
function getMergeInfo(props, num) {
let obj = {};
props.forEach(item => {
obj[item + "_merge"] = {
rowspan: num,
colspan: 1
};
});
return obj;
}
// 把属性的值拼接在一起,并和属性的值一起返回。
function getPropStr(props, info) {
let obj = {};
let propStr = props.map(item => {
obj[item] = info[item];
return info[item];
});
obj.key = propStr.toString();
return obj;
}
导进去直接调用:
var colArr = [["id", "grade"], ["class"]];
var list = [
{ id: 1, grade: 1, class: 1, name: "张三" },
{ id: 1, grade: 1, class: 1, name: "李四" },
{ id: 1, grade: 1, class: 2, name: "王五" },
{ id: 1, grade: 1, class: 2, name: "找六" },
{ id: 2, grade: 2, class: 7, name: "张三_1" },
{ id: 2, grade: 2, class: 7, name: "李四_1" },
{ id: 2, grade: 2, class: 3, name: "王五_1" },
{ id: 2, grade: 2, class: 3, name: "找六_1" }
];
merge(colArr, list)
备注:colArr是要合并的层级。示例中id和grade是第一次,class是第二层。
list是数据列表。
最新文章
- C# 的TCP Socket (异步方式)
- guava学习--ratelimiter
- HTTP与AJAX深入揭秘,不使用AJAX实现页面无刷新
- 转 XenServer、XenCenter安装测试
- 转载:DIV+CSS有可能遇到的问题
- U当家U盘启动盘制作教程
- 产品专家Marty Cagan:不做仅仅会编码的人
- Struts2--课程笔记3
- 函数式编程--为什么会出现lambda表达式?
- Java long类型和Long类型的那些事
- Java编程语言下Selenium驱动各个浏览器代码
- Core在类中注入
- noip第27课资料
- struts2框架学习之第一天
- WP8.1学习系列(第五章)——中心控件Hub或透视控件Pivot交互UX
- [Oracle]Oracle之Chr函数返回
- c++ 匹配相邻元素相等的元素(adjacent_find)
- xsl如何实现递归复制?
- 微商营销实战技巧分享,轻松月入10W
- 终于想明白一些事,关于NAS
热门文章
- ModuleNotFoundError: No module named 'phkit.pinyin'
- vue : 检测用户上传的图片的宽高
- 宽度优先搜索--------迷宫的最短路径问题(dfs)
- sed 指定行范围匹配
- ubuntu18.04安装opencv+CUDA10.2+cuDNN+YOLOv3
- Django学习路24_乘法和除法
- 使用 MySQLi 和 PDO 向 MySQL 插入数据
- PHP asinh() 函数
- 7.9 NOI模拟赛 A.图 构造 dfs树 二分图
- luogu P6583 回首过去 简单数论变换 简单容斥