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

相关推荐
victory04313 分钟前
服务器病毒处理记录
运维·服务器·chrome
iDao技术魔方9 分钟前
深入Vue 3响应式系统:为什么嵌套对象修改后界面不更新?
javascript·vue.js·ecmascript
历程里程碑14 分钟前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
chenjingming66614 分钟前
浏览器(如chrome)代理抓包时提示Your Connection is not private 问题临时处理
chrome·https
摸鱼的春哥14 分钟前
春哥的Agent通关秘籍07:5分钟实现文件归类助手【实战】
前端·javascript·后端
念念不忘 必有回响17 分钟前
viepress:vue组件展示和源码功能
前端·javascript·vue.js
Amumu1213821 分钟前
Vue3 Composition API(一)
开发语言·javascript·ecmascript
hzb6666627 分钟前
unictf2026
开发语言·javascript·安全·web安全·php
Moment10 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
爱敲代码的小鱼10 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax