VUE element table 列合并

VUE element table 列合并

效果

关键位置代码

table位置

复制代码
<el-table v-loading="loading" :data="dataList" row-key="id" max-height="760" :span-method="handleSpanMethod">
	<el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
	<el-table-column prop="batchNo" label="入库批次"></el-table-column>
	<el-table-column prop="deviceName" label="名称"></el-table-column>
	......
</el-table>

javascript

复制代码
const dataList = ref([]);
const spanArr = ref([]);

// 自定义合并单元格的方法
function handleSpanMethod({ row, column, rowIndex, columnIndex }) {
  if (columnIndex === 1) { // batchNo列的索引
    const rowspan = spanArr.value[rowIndex]
    const colspan = rowspan > 0 ? 1 : 0
    return {
      rowspan,
      colspan
    }
  }
}

组装数据时
listDeviceFlowRk2(queryParams.value).then(res => {
    dataList.value = res.data.list;
    total.value = res.data.total;

    spanArr.value = []
    let pos = 0
    dataList.value.forEach((item, index) => {
      if (index === 0) {
        spanArr.value.push(1)
        pos = 0
      } else {
        if (dataList.value[index].batchNo === dataList.value[index - 1].batchNo) {
          spanArr.value[pos] += 1
          spanArr.value.push(0)
        } else {
          spanArr.value.push(1)
          pos = index
        }
      }
    });

  });
相关推荐
YHHLAI2 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
weixin_BYSJ19872 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
沪飘大军3 小时前
ll-llm:一个零依赖、可插拔的 OpenAI 兼容 LLM 代理
javascript
leoZ2313 小时前
Claude 驱动的全栈开发:Spring Boot + Vue 的 BS 架构实践
vue.js·spring boot·架构
山河木马4 小时前
GPU自动处理专题3-NDC怎么映射成屏幕像素坐标(视口变换)
javascript·webgl·图形学
Appthing6 小时前
在 TanStack Start 中使用 VitePWA 的正确配置
javascript
前端炒粉7 小时前
手写promise
java·前端·javascript
mONESY7 小时前
Node.js fs 文件系统模块 四种读写方案全解析
javascript·后端
Larcher7 小时前
从回调地狱到优雅异步:Node.js 文件操作进化史
javascript·后端·架构
荒诞英雄7 小时前
从 17MB Vendor 大包到按需加载:Vite 多入口 Vue 组件库首屏优化实践
vue.js·vite