• el-table :span-method合并单元格


    1. <el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 100%" :height="300">
    2. <el-table-column type="index" label="序号" width="50"></el-table-column>
    3. <el-table-column prop="projectType" align="center" width="120" label="指标分类"></el-table-column>
    4. <el-table-column prop="project" align="center" width="120" label="指标项目"></el-table-column>
    5. <el-table-column prop="indicator" align="center" label="标准分"></el-table-column>
    6. <el-table-column prop="score" align="center" label="得分数"></el-table-column>
    7. </el-table>
    1. data() {
    2. return {
    3. tableData: [],
    4. merge: [], // 存放需要合并的行
    5. subscript: '' // 需要合并行下标
    6. }
    7. }
    8. methods: {
    9. // 拿到数据
    10. getTableList() {
    11. this.$request({ url: '/fault/CmRaterecordService/factoryStationRat', method: 'get', params: this.queryParams }).then(res => {
    12. console.log(res)
    13. if (res?.data?.length) {
    14. this.tableData = res.data
    15. this.getMergeSubSceipt(res.data)
    16. }
    17. })
    18. },
    19. // 根据字段projectType做合并区分处理,具体看接口的区分字段
    20. getMergeSubSceipt(data) {
    21. if (data) {
    22. for (var i = 0; i < data.length; i++) {
    23. if (i === 0) {
    24. this.merge.push(1)
    25. this.subscript = 0
    26. } else {
    27. // 判断当前元素与上一个元素是否相同
    28. // 根据相同id进行合并,根据需要可进行修改
    29. if (data[i].projectType === data[i - 1].projectType) {
    30. this.merge[this.subscript] += 1
    31. this.merge.push(0)
    32. } else {
    33. this.merge.push(1)
    34. this.subscript = i
    35. }
    36. }
    37. }
    38. }
    39. },
    40. // 合并处理
    41. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
    42. if (columnIndex === 1) { // 需要合并的列索引 重要
    43. const _row = this.merge[rowIndex]
    44. const _col = _row > 0 ? 1 : 0
    45. return {
    46. rowspan: _row,
    47. colspan: _col
    48. }
    49. }
    50. },
    51. }

    效果:

    附:通过接口获取的tableData数据结构如下

    这里有个暗坑注意下:

    有的需求可能会切换某个控件,重新渲染tableData,此时getMergeSubSceipt里的merge和subscript需要重置一下,不然会出现tableData错位情况。

    解决办法:

  • 相关阅读:
    电流检测放大器
    Linux下Clock skew detected的解决办法 && Linux时间戳和标准时间的互转
    全套办公软件Office 2019 mac专业版功能
    如何将音频与视频分离
    【Git】Git下载安装&环境配置 下载速度慢的解决方案
    软件测试/测试开发丨Python文件操作 学习笔记
    NOIP2023模拟16联测37 D. 小猫吃火龙果
    GoFrame+Vue+ElementUI通用后台管理系统
    学会根据数据手册指令格式发送数据
    Java中快速掌握正则表达式
  • 原文地址:https://blog.csdn.net/weixin_43550562/article/details/133882178