elementui的table合并列,三个一组

javascript 复制代码
 <el-table :span-method="objectSpanMethod" :cell-style="iCellStyle" :data="tableData" height="63vh" border style="width: 100%; margin-top: 6px">
        <el-table-column type="index" label="序号" width="50" align="center">
        </el-table-column>
        <el-table-column prop="vocs" label="VOCs组分" align="center">
        </el-table-column>
        <el-table-column label="源成分谱" align="center">
          <template slot-scope="{row}">
            <span v-if="row.type==1">化工</span>
            <span v-if="row.type==2">制造业</span>
            <span v-if="row.type==3">交通运输</span>
          </template>
        </el-table-column>
        <el-table-column prop="value" label="成分浓度(ug/m3)" align="center">
        </el-table-column>
        <el-table-column prop="rate" label="成分浓度贡献率" align="center">
        </el-table-column>
      </el-table>
javascript 复制代码
this.tableData=[
  {
    "type": "1",
    "value": 8.008,
    "rate": 28.241932639746075,
    "vocs": "乙烷"
  },
  {
    "type": "2",
    "value": 7.862,
    "rate": 27.727032269441022,
    "vocs": "乙烷"
  },
  {
    "type": "3",
    "value": 12.485,
    "rate": 44.03103509081291,
    "vocs": "乙烷"
  },
  {
    "type": "1",
    "value": 11.184,
    "rate": 39.46226315232349,
    "vocs": "乙烯"
  },
  {
    "type": "2",
    "value": 12.289,
    "rate": 43.361208143678766,
    "vocs": "乙烯"
  },
  {
    "type": "3",
    "value": 4.868,
    "rate": 17.176528703997743,
    "vocs": "乙烯"
  },
  {
    "type": "1",
    "value": 7.467,
    "rate": 30.569884549250798,
    "vocs": "丙烷"
  },
  {
    "type": "2",
    "value": 8.686,
    "rate": 35.56046835339393,
    "vocs": "丙烷"
  },
  {
    "type": "3",
    "value": 8.273,
    "rate": 33.869647097355276,
    "vocs": "丙烷"
  },
  {
    "type": "1",
    "value": 2.832,
    "rate": 11.786739917592708,
    "vocs": "丙烯"
  },
  {
    "type": "2",
    "value": 8.472,
    "rate": 35.260332126357845,
    "vocs": "丙烯"
  },
  {
    "type": "3",
    "value": 12.723,
    "rate": 52.95292795604944,
    "vocs": "丙烯"
  },
  {
    "type": "1",
    "value": 8.091,
    "rate": 41.29957633607268,
    "vocs": "异丁烷"
  },
  {
    "type": "2",
    "value": 6.747,
    "rate": 34.43928334439283,
    "vocs": "异丁烷"
  },
  {
    "type": "3",
    "value": 4.753,
    "rate": 24.26114031953448,
    "vocs": "异丁烷"
  },
  {
    "type": "1",
    "value": 1.93,
    "rate": 11.623005118940078,
    "vocs": "乙炔"
  },
  {
    "type": "2",
    "value": 5.598,
    "rate": 33.71273712737127,
    "vocs": "乙炔"
  },
  {
    "type": "3",
    "value": 9.077,
    "rate": 54.66425775368865,
    "vocs": "乙炔"
  },
  {
    "type": "1",
    "value": 2.265,
    "rate": 13.758124278685537,
    "vocs": "正丁烷"
  },
  {
    "type": "2",
    "value": 6.344,
    "rate": 38.53489643442872,
    "vocs": "正丁烷"
  },
  {
    "type": "3",
    "value": 7.854,
    "rate": 47.70697928688574,
    "vocs": "正丁烷"
  },
  {
    "type": "1",
    "value": 4.244,
    "rate": 60.99453866053464,
    "vocs": "反-2-丁烯"
  },
  {
    "type": "2",
    "value": 1.362,
    "rate": 19.5745903995401,
    "vocs": "反-2-丁烯"
  },
  {
    "type": "3",
    "value": 1.352,
    "rate": 19.430870939925267,
    "vocs": "反-2-丁烯"
  },
  {
    "type": "1",
    "value": 0.236,
    "rate": 3.935957304869913,
    "vocs": "1-丁烯"
  },
  {
    "type": "2",
    "value": 0.634,
    "rate": 10.57371581054036,
    "vocs": "1-丁烯"
  },
  {
    "type": "3",
    "value": 5.126,
    "rate": 85.49032688458973,
    "vocs": "1-丁烯"
  },
  {
    "type": "1",
    "value": 1.772,
    "rate": 37.32097725358046,
    "vocs": "顺-2-丁烯"
  },
  {
    "type": "2",
    "value": 2.192,
    "rate": 46.16680707666386,
    "vocs": "顺-2-丁烯"
  },
  {
    "type": "3",
    "value": 0.784,
    "rate": 16.512215669755687,
    "vocs": "顺-2-丁烯"
  }
]
        this.flagValue = "";
        this.flagArr = [];
        this.indexAllArr = [];
        this.intervalArr = [];
        let indexArr = [];
        this.tableData.forEach((item, index) => {
          if (this.flagValue != item.vocs) {
            if (!this.flagArr.includes(item.vocs)) {
              this.flagArr.push(item.vocs);
              this.indexAllArr.push(index);
              indexArr.push(index);
            } else {
              this.indexAllArr.push("-");
            }
          }
        });
        // 计算每一种类型都有多少个
        indexArr.forEach((ele, eleIndex) => {
          var indexNum = "";
          if (indexArr[eleIndex] != indexArr[indexArr.length - 1]) {
            indexNum = indexArr[eleIndex + 1] - ele;
          } else {
            indexNum = this.tableData.length - indexArr[eleIndex];
          }
          this.intervalArr.push(indexNum);
        });
        this.indexAllArr.forEach((item, index) => {
          if (!isNaN(Number(item)) && typeof Number(item) === "number") {
          } else {
            this.intervalArr.splice(index, 0, "-");
          }
        });
javascript 复制代码
 // 合并列
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 1) {
        const _row = this.indexAllArr[rowIndex];
        const rowspanVal = this.intervalArr[rowIndex];
        if (rowIndex == _row) {
          return {
            rowspan: rowspanVal,
            colspan: 1,
          };
        }else{
          return {
            rowspan: 0,
            colspan: 0,
          };
        }
      }
    },
     iCellStyle: function ({ row, column, rowIndex, columnIndex }) {
      return "height:44px !import";
    },
相关推荐
独孤九剑打醒他11 分钟前
从“铁块一直在辐射电磁波“到EUV光源:微波等离子体MPP架构全链路推演
前端·架构·硬件工程
光电的一只菜鸡17 分钟前
高通tuning中eis需要调什么
java·开发语言·前端
quweiie1 小时前
腾讯云视频点播-web上传视频
前端·音视频·腾讯云·上传视频·腾讯云视频点播
API快乐传递者1 小时前
1688 跨境电商 API 接口实战指南:从寻源到代采的全链路技术方案
java·前端·数据库
马可家的菠萝1 小时前
收藏不是终点:一个真正有用的个人知识库,至少要完成“收集 → 理解 → 行动”
前端·后端·架构
明月_清风2 小时前
看完 DSH 文档后,我总结了这 7 个关键点
前端·后端·deepseek
qq_452396232 小时前
第八篇:《Monorepo 实战:Turborepo 与 pnpm workspace 驱动的大型项目协作》
前端
数据狐(Datafox)2 小时前
1688.item_search工程实战:1688商品列表API分页采集与B2B货源数据分析落地
java·前端·数据分析
铁皮饭盒2 小时前
浏览器AI肯定离不开onnxruntime, 微软开源
前端·javascript·后端