elementUI根据列表id进行列合并@莫成尘

本文章提供了elementUI根据列表id进行列合并的demo,效果如图(可直接复制代码粘贴)

javascript 复制代码
<template>
  <div id="app">
    <el-table border :data="tableList" style="width: 100%" :span-method="objectSpanMethod">
      <el-table-column
      type="selection"
      width="55">
    </el-table-column>
      <el-table-column prop="id" label="ID" width="180">
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="180">
      </el-table-column>
      <el-table-column prop="type" label="后缀">
      </el-table-column>
      <el-table-column prop="about" label="地址">
      </el-table-column>
      <el-table-column prop="dec" label="第一联想">
      </el-table-column>
    </el-table>
  </div>
</template>

<script>

export default {
  name: 'App',
  components: {
  },
  data() {
    return {
      tableList: [
        { id: 10010, name: '小日', type: '子', dec: '小男孩来过这个地方', about: '广岛' },
        { id: 10010, name: '小日', type: '子', dec: '胖子来过这个地方', about: '长崎' },
        { id: 10010, name: '小日', type: '子', dec: '李梅在这里抽过yan', about: '东京' },
        { id: 10010, name: '小日', type: '子', dec: '这是一个地震多发的地方', about: '大板' },
        { id: 21121, name: '印度', type: '斯坦', dec: '干净又卫生的超级大国', about: '德里' },
        { id: 21121, name: '印度', type: '斯坦', dec: '新德里是首都', about: '新德里' },
        { id: 21121, name: '印度', type: '斯坦', dec: '这是提前选好的下一个首都', about: '新新德里' },
        { id: 21121, name: '印度', type: '斯坦', dec: '没办法的话这是下下个首都', about: '新新新德里' },
      ]
    }
  },
  methods:{
    //表格合并
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      console.log(row,column)
      if ( //if条件判断的是合并那一竖列
        columnIndex == 0 ||
        columnIndex == 1 ||
        columnIndex == 2 ||
        columnIndex == 3
      ) {
        const _row = this.flitterData2(this.tableList).one[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col,
        };
      }
    },
    flitterData2(arr) {
      let spanOneArr = [];
      let concatOne = 0;
      arr.forEach((item, index) => {
        if (index === 0) {
          spanOneArr.push(1);
        } else {
          //name 修改
          if (item.id === arr[index - 1].id) {
            //pid就是判断相同的字段
            //第一列需合并相同内容的判断条件
            spanOneArr[concatOne] += 1;
            spanOneArr.push(0);
          } else {
            spanOneArr.push(1);
            concatOne = index;
          }
        }
      });
      return {
        one: spanOneArr,
      };
    },
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
相关推荐
「、皓子~14 分钟前
后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端+前端
前端·人工智能·微服务·小程序·go·ai编程·ai写作
就改了17 分钟前
Ajax——在OA系统提升性能的局部刷新
前端·javascript·ajax
凌冰_18 分钟前
Ajax 入门
前端·javascript·ajax
京东零售技术34 分钟前
京东小程序JS API仓颉改造实践
前端
老A技术联盟43 分钟前
从小白入门,基于Cursor开发一个前端小程序之Cursor 编程实践与案例分析
前端·小程序
风铃喵游1 小时前
构建引擎: 打造小程序编译器
前端·小程序·架构
sunbyte1 小时前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ThemeClock(主题时钟)
前端·javascript·css·vue.js·前端框架·tailwindcss
小飞悟1 小时前
🎯 什么是模块化?CommonJS 和 ES6 Modules 到底有什么区别?小白也能看懂
前端·javascript·设计
浏览器API调用工程师_Taylor1 小时前
AOP魔法:一招实现登录弹窗的全局拦截与动态处理
前端·javascript·vue.js
FogLetter1 小时前
初识图片懒加载:让网页像"懒人"一样聪明加载
前端·javascript