el根据需求合并列

将 列分为 3 3 1 的格式

以下是vue代码:

bash 复制代码
<el-table
          :data="dataSource"
          :border="true"
          :header-cell-style="{ 'font-weight': 'normal', 'text-align': 'center' }"
          :cell-style="{ 'text-align': 'center' }"
          size="mini"
          style="width: 100%"
          :span-method="arraySpanMethod"
        >
          <el-table-column prop="product_name" label="名称1"></el-table-column>
          <el-table-column prop="cap_name" label="名称2"></el-table-column>
          <el-table-column prop="name" label="名称3"></el-table-column>
          <el-table-column prop="name1" label="名称4"></el-table-column>
          <el-table-column prop="name2" label="名称5"></el-table-column>
        </el-table>

data:

bash 复制代码
//注释:示例是用参数-product_name进行处理-该例好像只有数据是连续aaaa  或  bbbb才可以(第一条是a第二条是a第三条是b---不能第二条是b,第三条是a)
      dataSource: [
        {
          product_name: "aaaa",
          cap_name: "aa1",
          name: 2,
          name1: 1,
          name2: 0,
        },
        {
          product_name: "aaaa",
          cap_name: "aa2",
          name: 1,
          name1: 1,
          name2: 1,
        },
        ,
        {
          product_name: "aaaa",
          cap_name: "aa3",
          name: 1,
          name1: 1,
          name2: 1,
        },
        {
          product_name: "bbbb",
          cap_name: "bb1",
          name: 1,
          name1: 1,
          name2: 0,
        },
        {
          product_name: "bbbb",
          cap_name: "bb2",
          name: 0,
          name1: 1,
          name2: 1,
        },
        {
          product_name: "bbbb",
          cap_name: "bb3",
          name: 0,
          name1: 1,
          name2: 1,
        },
        {
          product_name: "ccccc",
          cap_name: "cc2",
          name: 0,
          name1: 1,
          name2: 1,
        },
        {
          product_name: "ddddd",
          cap_name: "dd3",
          name: 0,
          name1: 1,
          name2: 1,
        },
      ],

methods:

bash 复制代码
arraySpanMethod({ row, rowIndex, columnIndex }) {
      // // 合并行  产品名字相同合并
      if (columnIndex === 0) {
        if (
          rowIndex === 0 ||
          row.product_name != this.dataSource[rowIndex - 1].product_name
        ) {
          let rowspan = 0;
          this.dataSource.forEach((element) => {
            if (element.product_name === row.product_name) {
              rowspan++;
            }
          });
          return [rowspan, 1];
        } else {
          return [0, 0];
        }
      }

     // 合并列 名称值都为1 的合并
      if (columnIndex > 2) {
        let colspan = 0;
        let colkeys = Object.keys(row);
        let currentindex = columnIndex - 1;
        if (row[colkeys[currentindex]] === 1) {
          if (row[colkeys[currentindex - 1]] != row[colkeys[currentindex]]) {
            for (let i = currentindex; i < colkeys.length; i++) {
              if (row[colkeys[i]] === 1) {
                colspan++;
              } else {
                break;
              }
            }
            return [1, colspan];
          } else {
            return [0, 0];
          }
        }
      }
    },

列合并只需 把行合并注释掉即可,如果想第二列合并那就把columnIndex === 0换成1 即可。

相关推荐
Hilaku3 分钟前
做了 6 年前端,技术不差却拿不到 Offer?
前端·javascript·程序员
a11177620 分钟前
RIPPLE 流体交互(html 开源)
前端·javascript·html
薛定猫AI24 分钟前
【深度解析】Qwen 3.6 Max Preview:面向智能体编码、视觉推理与 Three.js 前端生成的能力拆解
开发语言·前端·javascript
Moment39 分钟前
AI 时代,为什么全栈项目越来越离不开 Monorepo 和 TypeScript
前端·javascript·后端
wuyoula42 分钟前
尹之盾企业版网络验证
服务器·开发语言·javascript·c++·人工智能·ui·c#
Via_Neo1 小时前
区间dp算法
开发语言·javascript·算法
❆VE❆1 小时前
React基础篇(三):项目中 React 基础核心知识点实战
前端·javascript·react.js·前端框架
Hello--_--World1 小时前
React 的核心设计理念是什么?并列举三大核心特性。
javascript·react.js·ecmascript
淸湫1 小时前
前端JavaScript:NaN、undefined、null详解
javascript
栀栀栀栀栀栀1 小时前
强迫症犯了(゚∀゚) 2026/4/26
前端·javascript·vue.js