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,
      };
    }
  }
}
相关推荐
哆啦A梦158830 分钟前
axios 的二次封装
前端·vue.js·node.js
阿珊和她的猫38 分钟前
深入理解与手写发布订阅模式
开发语言·前端·javascript·vue.js·ecmascript·状态模式
爱看书的小沐1 小时前
【小沐杂货铺】基于Three.js渲染三维风力发电机(WebGL、vue、react、WindTurbine)
javascript·vue.js·webgl·three.js·opengl·风力发电机·windturbine
罚时大师月色4 小时前
Vue+ts 如何实现父组件和子组件通信
javascript·vue.js·ecmascript
fury_1234 小时前
vue3:数组的.includes方法怎么使用
前端·javascript·vue.js
宁&沉沦4 小时前
Cursor 科技感的登录页面提示词
前端·javascript·vue.js
武天5 小时前
如果使用Vue3.0实现一个 Modal,你会怎么进行设计?
vue.js
敲敲敲敲暴你脑袋6 小时前
Canvas绘制自定义流动路径
vue.js·typescript·canvas
盛夏绽放7 小时前
uni-app Vue 项目的规范目录结构全解
前端·vue.js·uni-app
国家不保护废物7 小时前
Vue组件通信全攻略:从父子传到事件总线,玩转组件数据流!
前端·vue.js