美文网首页
vue中ElementUI el-table 动态跨列、跨行显示

vue中ElementUI el-table 动态跨列、跨行显示

作者: wxw_威 | 来源:发表于2022-10-27 14:13 被阅读0次

开发过程中,经常遇到自定义表格,需要跨行或跨列显示。
效果:


123123.jpg

通过el-table 属性方法span-method实现。

<el-table
      v-if="columnsList && tableData"
      :row-class-name="tableRowClassName"
      max-height="528"
      :data="tableData"
      :span-method="objectSpanMethod"
      border
      style="width: 100%">
      ...
</el-table>

objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      // rowIndex 表示当前行号,从0开始
      // columnIndex 表示当前列号,从0开始
      
      //通过数组动态控制合并
      let arr =  [1,2,0,5,0,0,0,0,1]  
      
      // rowIndex === 0 判断只第一行
      if (rowIndex == 0) {
        let _col = arr[columnIndex] 
        let _row = _col > 0 ? 1 : 0
        console.log(_row + ',' + _col)
        return [_row, _col]
      }
}

这两个方法等价,通过数组动态控制合并

let arr =  [1,2,0,5,0,0,0,0,1]  
if (rowIndex == 0) {
  let _col = arr[columnIndex] 
  let _row = _col > 0 ? 1 : 0
  console.log(_row + ',' + _col)
  return [_row, _col]
}
等价
if (columnIndex == 0) {
  return [1, 1]        //  保持不变
} else if (columnIndex == 1) {
  return [1, 2]        // 跨2列合并,下一列需设置为0,
} else if (columnIndex == 2) {
  return [0, 0]        // 自动合并不显示
} else if (columnIndex == 3) {
  return [1, 5]        //跨5列合并,后4列需设置为0
} else if (columnIndex == 4) {
  return [0, 0]        // 自动合并不显示
 } else if (columnIndex == 5) {
  return [0, 0]
} else if (columnIndex == 6) {
  return [0, 0]
} else if (columnIndex == 7) {
  return [0, 0]
} else if (columnIndex == 8) {
  return [1, 1]      //  保持不变
}

相关文章

网友评论

      本文标题:vue中ElementUI el-table 动态跨列、跨行显示

      本文链接:https://www.haomeiwen.com/subject/lqrttdtx.html