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,
      };
    }
  }
}
相关推荐
baozj几秒前
一次表单数据复用引发的 Bug:理解 Vue 中的 data 为何是函数
前端·javascript·vue.js
Nano6 分钟前
ES6中的Proxy和Reflect:深入解析与Vue3响应式原理的完美结合
前端·vue.js
前端工作日常26 分钟前
Vue源码中为何使用new Function而不使用eval?
vue.js
工业互联网专业29 分钟前
基于django+vue的健身房管理系统-vue
vue.js·python·django·毕业设计·源码·课程设计·健身房管理系统
jstart千语1 小时前
【vue3学习】vue3入门
前端·javascript·vue.js·typescript·vue
一个儒雅随和的男子1 小时前
Vue中虚拟DOM的原理与作用
前端·javascript·vue.js
HarryHY1 小时前
Vue 自动导入函数和变量插件 unplugin-auto-import
前端·javascript·vue.js
Monly211 小时前
Vue:Form正则校验
前端·javascript·vue.js
ai产品老杨2 小时前
实现自动化管理、智能控制、运行服务的智慧能源开源了。
前端·javascript·vue.js·前端框架·ecmascript
飞川撸码2 小时前
web vue 项目 Docker化部署
前端·vue.js·docker·运维开发