飞道的博客

element-ui table 表格组件合并相同行

470人阅读  评论(0)

实现效果:

实现代码:


  
  1. <template>
  2. <el-table
  3. :data= "tableData"
  4. :span-method= "objectSpanMethod"
  5. border
  6. style= "width: 100%">
  7. <el-table-column
  8. prop= "lv1"
  9. label= "一级巡查项">
  10. </el-table-column>
  11. <el-table-column
  12. prop= "lv2"
  13. label= "二级巡查项">
  14. </el-table-column>
  15. <el-table-column
  16. prop= "lv3"
  17. label= "三级巡查内容描述">
  18. </el-table-column>
  19. </el-table>
  20. </template>
  21. <script>
  22. export default {
  23. data () {
  24. return {
  25. tableData: [
  26. { lv1: '大坝', lv2: '堰顶', lv3: '堰顶是否平整' },
  27. { lv1: '大坝', lv2: '堰顶', lv3: '防浪墙是否平整' },
  28. { lv1: '大坝', lv2: '堰顶', lv3: '两岸坝端是否危害' },
  29. { lv1: '大坝', lv2: '上游坝坡', lv3: '堰顶是否平整' },
  30. { lv1: '大坝', lv2: '上游坝坡', lv3: '防浪墙是否平整' },
  31. { lv1: '大坝', lv2: '上游坝坡', lv3: '两岸坝端是否危害' }
  32. ]
  33. }
  34. },
  35. methods: {
  36. objectSpanMethod ({ row, column, rowIndex }) {
  37. const dataProvider = this.tableData
  38. const cellValue = row[column.property]
  39. if (cellValue) {
  40. // 上一条数据
  41. const prevRow = dataProvider[rowIndex - 1]
  42. // 下一条数据
  43. let nextRow = dataProvider[rowIndex + 1]
  44. // 当上一条数据等于下一条数据
  45. if (prevRow && prevRow[column.property] === cellValue) {
  46. return { rowspan: 0, colspan: 0 }
  47. } else {
  48. let rowspan = 1
  49. while (nextRow && nextRow[column.property] === cellValue) {
  50. rowspan++
  51. nextRow = dataProvider[rowspan + rowIndex]
  52. }
  53. if (rowspan > 1) {
  54. return { rowspan, colspan: 1 }
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. </script>

 


转载:https://blog.csdn.net/weixin_41876307/article/details/114367016
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场