el-table自定义合并行或列

川长思鸟来 2022-09-02 01:09 260阅读 0赞

在这里插入图片描述

ElementUI:通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素代表colspan。 也可以返回一个键名为rowspan和colspan的对象。

模板部分:

  1. <el-table
  2. :data="tableData"
  3. :span-method="objectSpanMethod"
  4. border
  5. style="width: 100%; margin-top: 20px">
  6. <el-table-column prop="date" align="center" label="时间日期" width="120"></el-table-column>
  7. <el-table-column prop="time" label="单位" width="120"></el-table-column>
  8. <el-table-column prop="unit" label=""></el-table-column>
  9. <el-table-column
  10. prop="name"
  11. label="姓名">
  12. </el-table-column>
  13. <el-table-column
  14. prop="amount1"
  15. label="数值 1(元)">
  16. </el-table-column>
  17. <el-table-column
  18. prop="amount2"
  19. label="数值 2(元)">
  20. </el-table-column>
  21. <el-table-column
  22. prop="amount3"
  23. label="数值 3(元)">
  24. </el-table-column>
  25. </el-table>

js 部分

  1. data() {
  2. return {
  3. spanArr: [],
  4. pos: 0
  5. }
  6. },
  7. watch: {
  8. tableData: {
  9. handler () {
  10. this.getSpanArr(this.tableData)
  11. },
  12. immediate: true
  13. }
  14. },
  15. methods: {
  16. // 根据条件合并随意行数,因为合并的行数可能是不固定的(传入的data参数为从后台数据数据)
  17. getSpanArr(data) {
  18. this.spanArr = []
  19. this.pos = 0
  20. for (var i = 0; i < data.length; i++) {
  21. if (i === 0) {
  22. // 如果是第一条记录(即索引是0的时候),向数组中加入1
  23. this.spanArr.push(1)
  24. this.pos = 0
  25. } else {
  26. if (data[i].date === data[i - 1].date) {
  27. // 如果date相等就累加,并且push 0 (这里的判断视自己的判定依据改变)
  28. this.spanArr[this.pos] += 1
  29. this.spanArr.push(0)
  30. } else {
  31. // 不相等push 1
  32. this.spanArr.push(1)
  33. this.pos = i
  34. }
  35. }
  36. }
  37. },
  38. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  39. // 用于设置要合并的列 0 表示第一列
  40. if (columnIndex === 0) {
  41. const cRow = this.spanArr[rowIndex]
  42. const cCol = cRow > 0 ? 1 : 0
  43. return {
  44. rowspan: cRow, // 合并的行数
  45. colspan: cCol // 合并的列数,为0表示不显示
  46. }
  47. }
  48. }
  49. }

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读