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 即可。

相关推荐
竹林8184 分钟前
从零到一:在 React 前端中集成 The Graph 查询 NFT 持有者数据实战
前端·javascript
山西茄子6 分钟前
GstAggregator的aggregate
开发语言·前端·javascript·gstreamer
Sailing9 分钟前
🚨别再滥用 useEffect 了!90% React Bug 的根源就在这
前端·javascript·面试
河马老师10 分钟前
写这需求快崩溃了,幸好我会装饰器模式
前端·javascript·面试
wuhen_n19 分钟前
《Vue3+TS+Vite 高效编程与优化实践》专栏收尾
前端·javascript·vue.js
小雨cc5566ru39 分钟前
基于Nodejs+vue+ElementUI的大学生课程排课管理系统设计
前端·vue.js·elementui
qq_84061223340 分钟前
Nodejs+vue+ElementUI框架的家政服务评价系统 保洁员预约系统的设计与实现
前端·vue.js·elementui
计算机应用技术三班-欧婷40 分钟前
ElementUI从入门到实战全攻略
前端·vue.js·ui
永恒毕设程序40 分钟前
基于ssm+vue基于elementui的工厂物料管理系统设计与实现【开题+程序+论文】
前端·vue.js·elementui
Highcharts.js40 分钟前
React如何集成图表?推荐使用Highcharts官方React封装库
javascript·react.js·前端框架·ecmascript