el-table里面数据相同合并单元格

这里是多个表格循环

在这里插入图片描述

html部分

    <div v-for="item in tableData">
        <el-table
          :data="item.checkProjects"
          style="width: 100%"
          border
          :span-method="objectSpanMethod(item.checkProjects)"
        >
          <el-table-column prop="name" label="点检部位" />
          <el-table-column prop="checkName" label="点检内容及标准" />
          <el-table-column prop="checkMethod" label="点检方法" />
          <el-table-column prop="standard" label="标准值" />
        </el-table>
      </div>

JS部分


## 部分数据

tableData: [
        {
          checkProjects: [
            {standard: "是", name: "变频器", checkMethod: "看", checkName: "自带冷却风扇是否运转正常", contentType: 3},
            { standard: "40", name: "变频器", checkMethod: "测", checkName: "温度<40℃", contentType: 2 },
            { standard: "否", name: "接触器", checkMethod: "听", checkName: "有无异响", contentType: 3 },
            { standard: "是", name: "接触器", checkMethod: "看", checkName: "吸合分断是否正常", contentType: 3 },
          ]
        },
        // Add more data for other tables...
      ]

方法部分

 objectSpanMethod(data) {
      return ({ row, column, rowIndex, columnIndex }) => {
        if (columnIndex === 0) {
          const prevRow = data[rowIndex - 1];
          if (prevRow && row.name === prevRow.name) {
            return {
              rowspan: 0,
              colspan: 1,
            };
          } else {
            let rowspan = 1;
            for (let i = rowIndex + 1; i < data.length; i++) {
              if (data[i].name === row.name) {
                rowspan++;
              } else {
                break;
              }
            }
            return {
              rowspan,
              colspan: 1,
            };
          }
        }
      };
    },
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
对于el-table动态列的单元格合并,可以通过循环数据数据获取该列需要合并的行数,然后在el-table的template中使用v-if指令来判断是否需要合并单元格,如果需要则使用rowspan属性来合并单元格。具体实现可以参考以下步骤: 1. 在el-table的columns中定义需要合并的列,并设置prop属性为该列的数据源字段名。 2. 在el-table的template中使用v-for指令循环数据源,并使用v-if指令判断是否需要合并单元格。 3. 如果需要合并单元格,则使用rowspan属性来合并单元格,同时将该单元格的内容设置为空。 4. 如果不需要合并单元格,则正常显示该单元格的内容。 例如,假设我们需要合并动态列中的第二列单元格,可以按照以下方式实现: ```html <el-table :data="tableData"> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="动态列" v-for="(column, index) in dynamicColumns" :key="index" :prop="column.prop"> <template slot-scope="scope"> <div v-if="index === 1 && scope.row.span > 1" :rowspan="scope.row.span" :style="{ 'line-height': (scope.row.span * 40) + 'px' }"></div> <div v-else>{{ scope.row[column.prop] }}</div> </template> </el-table-column> </el-table> ``` 其中,tableData为el-table数据源,dynamicColumns为动态列的配置数组,每个元素包含prop属性表示该列的数据源字段名。在template中,我们使用v-for指令循环动态列,并使用v-if指令判断是否需要合并单元格。如果需要合并单元格,则使用rowspan属性来合并单元格,并设置该单元格的内容为空。如果不需要合并单元格,则正常显示该单元格的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看不见看不见看不见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值