当前位置: 首页 > news >正文

vxe-table合并行数据

场景: 混批名称相同合并混批名称,在混批名称相同条件下合并相同的混批类型;在混混批类型相同条件下合并相同的混批值;在混批值相同条件下合并相同的单位

实现根据四个不同的key值,当四个key值对应相等时,合并行。并且值合并前四col

 想要实现的结果如下图:

解决方案:代码如下(先简单实现了合并。代码可以后续优化)

mergeMixedSku ({row, _rowIndex, column, visibleData}) {const fields = ['mixedName', 'mixedType', 'mixedValue', 'mixedValueUnit']const cellValue = row[column.property]if (cellValue && fields.includes(column.property)) {const prevRow = visibleData[_rowIndex - 1]let nextRow = visibleData[_rowIndex + 1]if (column.property === 'mixedName') {if (prevRow && prevRow[column.property] === cellValue) {return {rowspan: 0,colspan: 0}} else {let countRowspan = 1while (nextRow && nextRow[column.property] === cellValue) {nextRow = visibleData[++countRowspan + _rowIndex]}if (countRowspan > 1) {return {rowspan: countRowspan,colspan: 1}}}} else if (column.property === 'mixedType') {if (prevRow && prevRow[column.property] === cellValue &&prevRow.mixedName === row.mixedName) {return {rowspan: 0,colspan: 0}} else {let countRowspan = 1while (nextRow && nextRow[column.property] === cellValue &&nextRow.mixedName === row.mixedName) {nextRow = visibleData[++countRowspan + _rowIndex]}if (countRowspan > 1) {return {rowspan: countRowspan,colspan: 1}}}} else if (column.property === 'mixedValue') {if (prevRow && prevRow[column.property] === cellValue &&prevRow.mixedName === row.mixedName &&prevRow.mixedType === row.mixedType) {return {rowspan: 0,colspan: 0}} else {let countRowspan = 1while (nextRow && nextRow[column.property] === cellValue &&nextRow.mixedName === row.mixedName &&nextRow.mixedType === row.mixedType) {nextRow = visibleData[++countRowspan + _rowIndex]}if (countRowspan > 1) {return {rowspan: countRowspan,colspan: 1}}}} else if (column.property === 'mixedValueUnit') {if (prevRow &&prevRow[column.property] === cellValue &&prevRow.mixedName === row.mixedName &&prevRow.mixedType === row.mixedType &&prevRow.mixedValue === row.mixedValue) {return {rowspan: 0,colspan: 0}} else {let countRowspan = 1while (nextRow && nextRow[column.property] === cellValue &&nextRow.mixedName === row.mixedName &&nextRow.mixedType === row.mixedType &&nextRow.mixedValue === row.mixedValue) {nextRow = visibleData[++countRowspan + _rowIndex]}if (countRowspan > 1) {return {rowspan: countRowspan,colspan: 1}}}}}}

 最终实现效果

http://www.lryc.cn/news/401145.html

相关文章:

  • LabVIEW异步和同步通信详细分析及比较
  • 【多模态学习笔记二】MINIGPT-4论文阅读
  • Docker基本讲解及演示
  • 各类专业技术的pdf电子书
  • 【Linux】多线程_9
  • LabVIEW设备检修信息管理系统
  • python爬虫基础:使用lxml库进行HTML解析和数据提取的实践指南
  • 大语言模型系列:Transformer
  • 宠物健康新守护:智能听诊器引领科技突破
  • KITTI 3D 数据可视化
  • 旅游数据可视化:免费工具让复杂数据变得简单易懂
  • 数据结构进阶:使用链表实现栈和队列详解与示例(C, C#, C++)
  • 【线程系列之五】线程池介绍C语言
  • 【学习css3】使用flex和grid实现等高元素布局
  • 如何防止Eclipse格式化程序在行注释开头插入空格
  • Nextjs 调用组件内的方法
  • ip地址是电脑还是网线决定的
  • Hadoop中HDFS、Hive 和 HBase三者之间的关系
  • opencv—常用函数学习_“干货“_10
  • Jmeter二次开发Demo
  • MongoDB综合实战篇(超容易)
  • 框架设计MVVM
  • RK3399基础部分
  • linux高级编程(广播与组播)
  • Andriod Stdio新建Kotlin的Jetpack Compose简单项目
  • Linux多线程编程-哲学家就餐问题详解与实现(C语言)
  • 从C向C++18——演讲比赛流程管理系统
  • QThread和std::thread
  • LeetCode 算法:组合总和 c++
  • 【两大3D转换SDK对比】HOOPS Exchange VS. CAD Exchanger