首页 > 其他 > 详细

Vue Element table 合并行

时间:2021-05-11 17:51:13      阅读:21      评论:0      收藏:0      [点我收藏+]

如题,有时候表格需要合并同行

<el-table :data="tableData" :span-method="objectSpanMethod" border>
...
</el-table>


export default {
    data() {
      pretreatmentNum:’‘,
      pretreatmentArr: [],  // 存放需要合并的单元格数据,数组中数字代表需要合并几个单元格
    }
}
methods: {
  ...
  deataPretreatment() {  // 在获取到表格数据渲染后调用该函数
      this.pretreatmentNum = 0;  // 存放当前需要合并单元格的索引
      this.pretreatmentArr = [];  // 存放需要合并的单元格数据,数组中数字表示需要合并几个单元格
      
      for (let i = 0; i < this.tableData.length; i++) {
        if (i == 0) {
          // 第一行、重新赋值
          this.pretreatmentArr.push(1);  // 这一行要显示以及行数
          this.pretreatmentNum = 0; // 显示的索引
        } else {
          if (this.tableData[i].trigger_id == this.tableData[i-1].trigger_id) {
            // 当前和上一个行相同,累积单元格个数
            this.pretreatmentArr[this.pretreatmentNum] += 1; // 累积合并的行数
            this.pretreatmentArr.push(0); // 当前行隐藏
          } else {
            // 当前数据和上一行不同
            this.pretreatmentArr.push(1); // 需要显示以及行数
            this.pretreatmentNum = i; // 显示的索引
          }
        }
      }
      // console.log(this.pretreatmentArr)
    },
  objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      const arr = [0, 1, 12, 13, 14, 15 ,16]; // 需要合并处理的列
      for (let i = 0; i < arr.length; i++) {
        if (columnIndex == arr[i]) {
          const _row = this.pretreatmentArr[rowIndex]; // 取出当前存放行的合并状态,行索引对应的是否隐藏和显示及合并个数
          const _col = _row > 0 ? 1 : 0;  // 判断当前列是否要显示,行合并大于0,显示,列1;行合并等于0,隐藏,列0
          return {  // 合并:如 四行一列(rowspan:4,colspan: 1; 不合并:0行-0列)
            rowspan: _row,  // 合并的行数
            colspan: _col  // 合并的列数
          };
        }
      }
    } 
}

 

Vue Element table 合并行

原文:https://www.cnblogs.com/cp-cookie/p/14753844.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!