el-table一样的行合并
import { getRowSpanMethod } from './use-span-method'; <el-table row-key="id" v-loading="tableLoading" :data="tableListData" :max-height="tableHeight" :span-method="spanMethod" > </el-table> const spanMethod = computed(() => { return getRowSpanMethod(tableListData.value, ['orgName', 'instanceCode']); });
use-span-method.js
/** * 合并相同数据,导出合并列所需的方法(只适合el-table) * @param {Object} data * @param {Object} rowSpanArray */ export function getRowSpanMethod(data, rowSpanArray) { /** * 要合并列的数据 */ const rowSpanNumObject = {}; //初始化 rowSpanNumObject rowSpanArray.map(item => { rowSpanNumObject[item] = new Array(data.length).fill(1, 0, 1).fill(0, 1); rowSpanNumObject[`${item}-index`] = 0; }); //计算相关的合并信息 for (let i = 1; i < data.length; i++) { rowSpanArray.map(key => { const index = rowSpanNumObject[`${key}-index`]; if (data[i][key] === data[i - 1][key]) { rowSpanNumObject[key][index]++; } else { rowSpanNumObject[`${key}-index`] = i; rowSpanNumObject[key][i] = 1; } }); } //提供合并的方法并导出 const spanMethod = function({ row, column, rowIndex, columnIndex }) { if (rowSpanArray.includes(column['property'])) { const rowspan = rowSpanNumObject[column['property']][rowIndex]; if (rowspan > 0) { return { rowspan: rowspan, colspan: 1 } } return { rowspan: 0, colspan: 0 } } return { rowspan: 1, colspan: 1 } }; return spanMethod; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现