element ui table进行相同数据合并单元格

示例如图

javascript 复制代码
//要合并的项(自定义)
const columnArr =  ["dq","sj","xj","zj","zjj","zjfzr","nhxm","nhsjh","nhsfzh","","","","","ddzhl","ddw"]

首先计算需要合并的单元格

javascript 复制代码
const spanData = ref<any>([])
const getSpanData = (data) => {
  columnArr.forEach((element) => {
    let contactDot = 0;
    const spanArr = <any>[];
    data.forEach((item, index) => {
      if (index === 0) {
        spanArr.push(1);
      } else {
        //先判断ID是否一样,再合并同类项
        if (item.id == data[index - 1].id && item[element] === data[index - 1][element]) {
          spanArr[contactDot] += 1;
          spanArr.push(0);
        } else {
          contactDot = index;
          spanArr.push(1);
        }
      }
    });
    spanData.value.push(spanArr);
  });
}

Table上绑定 span-method 属性

javascript 复制代码
<el-table ref="roleTableRef" :data="dataList" :span-method="objectSpanMethod">
javascript 复制代码
const objectSpanMethod = ({
  row,
  column,
  rowIndex,
  columnIndex,
}) => {
  if (columnArr.includes(column.property)) {
    if (spanData.value[columnIndex][rowIndex]) {
      return {
        rowspan: spanData.value[columnIndex][rowIndex],
        colspan: 1,
      };
    } else {
      return {
        rowspan: 0,
        colspan: 0,
      };
    }
  }
}
相关推荐
℘团子এ1 小时前
vue3中自定义指令的使用
前端·javascript·vue.js
m0_587383003 小时前
碰碰好评卡功能落地实战 从需求梳理到上线部署全流程实操指南
java·linux·服务器·前端·javascript·vue.js·人工智能
Pu_Nine_93 小时前
Vue‑Flow 从零入门实战|AI‑Agent 拓扑图开发
前端·javascript·vue.js
苏渡苇4 小时前
从零搭建 Vue 3 工程化项目:Vite + TypeScript + Pinia + Element Plus 实战
前端·vue.js·typescript
雪芽蓝域zzs4 小时前
第 8 节:距离测量(测距工具)
vue.js
u01110267514 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
雪芽蓝域zzs20 小时前
第 7 节:多边形点击弹窗 + 清空绘制按钮
vue.js
溪语流沙20 小时前
【Web全栈进阶】Composition API与组件通信:props深入、emit、插槽
前端·css·vue.js
顽疲1 天前
Java vue 养老系统源码详解:入住核算单 live-check 缴费入账与预交金收据实践
java·vue.js·python·java 养老·springboot 养老·vue养老
志尊宝1 天前
Vue3 零基础每日笔记(088·完结):从零到一——一个完整 Vue3 项目的成长复盘
前端·javascript·vue.js·笔记·ecmascript·#vue.js