element-ui的table跨行合并

news/2026/3/5 11:22:35/文章来源:https://www.cnblogs.com/DCL1314/p/19308559
  • 效果图

a3cc14f0fa2a41cf9b077ac8e53709f7

  • 代码

      <template><el-container class="car-head"><el-header height="auto"><el-form :inline="true":model="formObj"@submit.native.preventlabel-width="120px"class="demo-form-inline"><el-form-item label="关键字:"prop=""><el-input placeholder="请输入"clearable@keyup.enter.native="onSearch"v-model="formObj.keyWord"></el-input></el-form-item><el-form-item label=" "><el-button @click="onSearch">查询</el-button></el-form-item></el-form></el-header><el-main class="car-box"><el-table :data="tableData"borderheight="100%"v-loading="loading"element-loading-text="努力加载中"element-loading-spinner="el-icon-loading"element-loading-background="rgba(0, 0, 0, 0.8)"highlight-current-rowrow-key="id"ref="multipleTable":span-method="handleSpanMethod":cell-style="{fontSize:'12px',color:'#171a1d'}":header-cell-style="{background:'#f7f8fa',color:'#171a1d',fontSize:'14px'}"style="width: 100%"><el-table-column prop="field_m7ejanne"align="center"label="宿舍所属区域"></el-table-column><el-table-column prop="field_lkzlykrr"align="center"label="宿舍名称"></el-table-column><el-table-column prop="field_lkzlykrt"align="center"label="宿舍地址"></el-table-column><el-table-column prop="field_lkzlykrv"align="center"label="房间号"></el-table-column><el-table-column prop="field_lkzlyksb"align="center"label="房间规格"></el-table-column><el-table-column prop="field_lkzmzcfc"align="center"label="剩余可住人数"></el-table-column><el-table-column prop="field_lkznbefl"align="center"label="姓名"></el-table-column><el-table-column prop="field_lkzlyks9"align="center"label="性别"></el-table-column><el-table-column prop="field_lkzlyks3"align="center"label="部门"></el-table-column><el-table-column prop="field_lkznfbu1"align="center"label="入住时间"><template #default="{row,column}"><div>{{ row[column.property]?$moment(row[column.property]).format("YYYY-MM-DD"):"" }}</div></template></el-table-column><el-table-column prop="field_lkznfbtz"align="center"label="搬离时间"><template #default="{row,column}"><div>{{ row[column.property]?$moment(row[column.property]).format("YYYY-MM-DD"):"" }}</div></template></el-table-column></el-table></el-main><el-footer height="auto"class="text-center"><el-pagination :current-page.sync="form.pageIndex"@size-change="handleSizeChange"@current-change="handleCurrentChange":page-size="form.pageSize":page-sizes="[20, 40, 60, 80,100]"layout="total, sizes, prev, pager, next, jumper":total="form.boskTotal"></el-pagination></el-footer></el-container></template><script lang="ts">import { Component, Vue } from "vue-property-decorator";@Component({name: "",components: {},})export default class extends Vue {ShowSearch = true;form = {pageIndex: 1,pageSize: 20,boskTotal: 0,};formObj = {keyWord: "",};isSearch = {keyWord: "",};$refs: {multipleTable;};tableData = [{field_m7ejanne: "诸暨",field_lkzlykrr: "cs宿舍",field_lkzlykrt: "绍兴市暨阳街道上城y幢",field_lkzlykrv: "20403",field_lkzlyksb: "2人间",field_lkzmzcfc: "2人",field_lkznbefl: "张三",field_lkzlyks9: "女",field_lkzlyks3: "肉肉大米(万风新天地店)",field_lkznfbu1: "20251010",field_lkznfbtz: "20251121",},{field_m7ejanne: "诸暨",field_lkzlykrr: "cs宿舍",field_lkzlykrt: "绍兴市暨阳街道上城y幢",field_lkzlykrv: "20403",field_lkzlyksb: "2人间",field_lkzmzcfc: "2人",field_lkznbefl: "李四",field_lkzlyks9: "女",field_lkzlyks3: "肉肉大米(万风新天地店)",field_lkznfbu1: "20251010",field_lkznfbtz: null,},{field_m7ejanne: "诸暨",field_lkzlykrr: "测试宿舍",field_lkzlykrt: "绍兴市暨阳街道上城x幢",field_lkzlykrv: "11304",field_lkzlyksb: "3人间",field_lkzmzcfc: "1人",field_lkznbefl: "王五",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(万风新天地店)",field_lkznfbu1: "20251010",field_lkznfbtz: null,},{field_m7ejanne: "诸暨",field_lkzlykrr: "测试宿舍",field_lkzlykrt: "绍兴市暨阳街道上城x幢",field_lkzlykrv: "11304",field_lkzlyksb: "3人间",field_lkzmzcfc: "1人",field_lkznbefl: "雷六",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(万风新天地店)",field_lkznfbu1: "20251010",field_lkznfbtz: null,},{field_m7ejanne: "诸暨",field_lkzlykrr: "测试宿舍",field_lkzlykrt: "绍兴市暨阳街道上城x幢",field_lkzlykrv: "11304",field_lkzlyksb: "3人间",field_lkzmzcfc: "1人",field_lkznbefl: "马七",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(万风新天地店)",field_lkznfbu1: "20251010",field_lkznfbtz: null,},{field_m7ejanne: "东莞",field_lkzlykrr: "哈哈哈宿舍",field_lkzlykrt: "东莞市东城区xx期",field_lkzlykrv: "B1215",field_lkzlyksb: "4人间",field_lkzmzcfc: "1人",field_lkznbefl: "杨八",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(松山湖万象汇店)",field_lkznfbu1: "20240925",field_lkznfbtz: "20241227",},{field_m7ejanne: "东莞",field_lkzlykrr: "哈哈哈宿舍",field_lkzlykrt: "东莞市东城区xx期",field_lkzlykrv: "B1215",field_lkzlyksb: "4人间",field_lkzmzcfc: "1人",field_lkznbefl: "测试",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(松山湖万象汇店)",field_lkznfbu1: "20240925",field_lkznfbtz: "20241126",},{field_m7ejanne: "东莞",field_lkzlykrr: "哈哈哈宿舍",field_lkzlykrt: "东莞市东城区xx期",field_lkzlykrv: "B1215",field_lkzlyksb: "4人间",field_lkzmzcfc: "1人",field_lkznbefl: "随机",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(民盈国贸城店)",field_lkznfbu1: "20240928",field_lkznfbtz: "20250630",},{field_m7ejanne: "东莞",field_lkzlykrr: "哈哈哈宿舍",field_lkzlykrt: "东莞市东城区xx期",field_lkzlykrv: "B1215",field_lkzlyksb: "4人间",field_lkzmzcfc: "1人",field_lkznbefl: "名称",field_lkzlyks9: "男",field_lkzlyks3: "肉肉大米(民盈国贸城店)",field_lkznfbu1: "20250702",field_lkznfbtz: null,},{field_m7ejanne: "台州",field_lkzlykrr: "嘿嘿宿舍",field_lkzlykrt: "浙江省台州市xx",field_lkzlykrv: "415",field_lkzlyksb: "1人间",field_lkzmzcfc: "0人",field_lkznbefl: "哈哈",field_lkzlyks9: "女",field_lkzlyks3: "肉肉大米(中盛城市广场店)",field_lkznfbu1: "20251008",field_lkznfbtz: null,},]; // 表格数据loading = false;spanArr = []; // 存储每一行的合并规则position = 0; // 辅助计算合并位置的临时变量spanList = []; // 存储每一行的合并规则tmpIndex = 0; // 辅助计算合并位置的临时变量created() {// this.InitLoad();}mounted() {this.calculateSpan();this.calculateSpan1();}// 预计算合并规则calculateSpan() {this.spanArr = []; // 重置合并规则this.position = 0; // 重置位置指针if (this.tableData.length === 0) {return;}// 从第一行开始遍历this.spanArr.push(1); // 第一行默认合并行数为1for (let i = 1; i < this.tableData.length; i++) {// 获取当前行和上一行的关键标识(用于判断是否需要合并)const currentKey = this.getRowKey(this.tableData[i]);const prevKey = this.getRowKey(this.tableData[i - 1]);if (currentKey === prevKey) {// 若当前行与上一行标识相同,合并行数+1,当前行合并行数设为0(隐藏)this.spanArr[this.position] += 1;this.spanArr.push(0);} else {// 若不同,重置位置指针,当前行合并行数设为1this.position = i;this.spanArr.push(1);}}// console.log(this.spanArr);}calculateSpan1() {this.spanList = []; // 重置合并规则this.tmpIndex = 0; // 重置位置指针if (this.tableData.length === 0) {return;}// 从第一行开始遍历this.spanList.push(1); // 第一行默认合并行数为1for (let i = 1; i < this.tableData.length; i++) {// 获取当前行和上一行的关键标识(用于判断是否需要合并)const currentKey = this.getRowKey1(this.tableData[i]);const prevKey = this.getRowKey1(this.tableData[i - 1]);if (currentKey === prevKey) {// 若当前行与上一行标识相同,合并行数+1,当前行合并行数设为0(隐藏)this.spanList[this.tmpIndex] += 1;this.spanList.push(0);} else {// 若不同,重置位置指针,当前行合并行数设为1this.tmpIndex = i;this.spanList.push(1);}}console.log(this.spanList);}// 生成行的唯一标识(合并的判断依据)getRowKey(row) {// 合并的核心字段:宿舍所属区域+宿舍名称+宿舍地址+房间号+房间规格+剩余可住人数return [row.field_m7ejanne, // 宿舍所属区域row.field_lkzlykrr, // 宿舍名称// row.field_lkzlykrt, // 宿舍地址// row.field_lkzlykrv, // 房间号// row.field_lkzlyksb, // 房间规格// row.field_lkzmzcfc, // 剩余可住人数].join("|"); // 用特殊符号拼接,避免字段值本身包含分隔符导致误判}getRowKey1(row) {// 合并的核心字段:宿舍地址+房间号+房间规格+剩余可住人数return [row.field_lkzlykrt, // 宿舍地址row.field_lkzlykrv, // 房间号row.field_lkzlyksb, // 房间规格row.field_lkzmzcfc, // 剩余可住人数].join("|"); // 用特殊符号拼接,避免字段值本身包含分隔符导致误判}// 表格合并方法(核心)handleSpanMethod({ row, column, rowIndex, columnIndex }) {// 只处理前6列(索引0-5),其他列不合并if (columnIndex < 6) {if (columnIndex < 2) {const rowspan = this.spanArr[rowIndex];const colspan = rowspan > 0 ? 1 : 0; // 合并行时列占比为1,0则隐藏return { rowspan, colspan };} else if (columnIndex > 1 && columnIndex < 6) {const rowspan = this.spanList[rowIndex];const colspan = rowspan > 0 ? 1 : 0; // 合并行时列占比为1,0则隐藏return { rowspan, colspan };}}// 不需要合并的列返回默认值(不合并)return { rowspan: 1, colspan: 1 };}/** 初始化数据 */InitLoad() {}/** 搜索 */onSearch() {this.isSearch = this.formObj;this.form.pageIndex = 1;this.InitLoad();}handleSizeChange(val) {this.form.pageSize = val;this.InitLoad();}handleCurrentChange(val) {this.form.pageIndex = val;this.InitLoad();}}</script><style lang="scss" scoped>.car-head {background: #fff;width: 100%;height: 100%;.car-box {background: #fff;}}</style>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226438.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选!

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选! 随着人们对生活品质追求的不断提升,红木家具因其独特的文化内涵和精湛的工艺,越来越受到消费者的青睐。为了帮助筛选红木家居/红木家…

2025年佛山床垫品牌源头厂家精选推荐

在选择合适的硬底护脊床垫时,了解不同品牌和厂家提供的服务至关重要。本篇文章深入探讨了佛山地区多个知名床垫品牌,包括大森林电子商务有限公司和冬熊家居等。这些厂家不仅注重产品的质量,还提供灵活的定制服务,以…

2025年LED灯供应商综合推荐榜单:万圣节南瓜灯/酒吧氛围灯/酒吧装饰灯源头厂家精选

随着固态照明技术的成熟与普及,LED照明已成为全球主流照明方案。根据行业数据,LED灯具相较于传统照明产品,可实现50%至80% 的节能效果,其平均寿命可达25,000至50,000小时,远超白炽灯或荧光灯。在绿色制造与节能…

【2025最新】TranslucentTB下载安装及使用教程:任务栏透明神器全面解析(详细步骤 + 常见问题)

本文是 2025 年最新的 TranslucentTB下载安装及使用教程,涵盖任务栏透明、美化模式设置、开机自启配置、托盘菜单使用方法以及常见问题解决方案。提供了经过安全认证的最新版下载地址,并通过图文步骤讲解从安装到进阶…

2025年上海圆锯机企业年度排名:宏萌圆锯机的配件质量好

TOP1 推荐:上海宏萌机械设备有限公司 推荐指数:★★★★★ 口碑评分:长三角精密圆锯机企业 专业能力:上海宏萌机械设备有限公司扎根浙江缙云锯床之乡产业底蕴,融合上海创新资源,打造以精准耐用智联为核心的圆锯机…

2025年中国十大专业版权音乐企业推荐:服务不错的版权音乐公

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业及创作者选型提供客观依据,助力精准匹配适配的版权音乐服务伙伴。 TOP1 推荐:猴子音悦(上海)网络科技有限公司 推荐指数:★★★★★ 口碑…

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析 随着文化产业的蓬勃发展,文创、非遗和艺术品市场日益繁荣。为了帮助筛选出优质的品牌,特此发布权威推荐榜单,该榜单也已在行业协会官…

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌!

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌! 随着红木家具市场的不断发展,越来越多的企业和消费者开始关注红木办公家具。红木办公桌、红木老板桌…

必玩十大网上【小程序休闲游戏】单人易操作不占内存 摸鱼解压全靠它!

忙碌的日常中,谁不需要几款轻松上手、不占内存又能随时摸鱼解压的小游戏呢?今天为大家推荐十款单人易操作、打开即玩的小程序游戏,无需下载、不占空间,适合各种场景轻松休闲! 第一名:《新弹弹堂》 经典弹射竞技游…

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑写了个量化策略,回测年化30%,然后呢?实盘的坑比你想象的多得多。故事的开始 两年前,我遇到了和很多聚宽用户一样的问题:策略回测效果不错,但实盘很麻烦。聚宽…

2025年泉州蹲便疏通打孔公司权威推荐榜单:疏通蹲便‌/蹲便器疏通‌/蹲便疏通口‌源头公司精选

在泉州地区,因长期使用、管道老化或杂物堵塞导致的蹲便器问题是家庭及商业场所中常见的生活难题。根据行业经验,超过80% 的卫生间堵塞问题发生在马桶和蹲便器部位。选择一家技术可靠、响应迅速的专业公司,是快速恢复…

十大爆款小程序休闲游戏:易上手不占空间,摸鱼解压打发时间好伙伴

在快节奏的现代生活中,利用碎片化时间玩上一把轻松有趣的小游戏成了许多人的解压选择。小程序游戏凭借其无需下载、不占空间、即开即玩的特点,迅速成为摸鱼、解压、打发时间的神器。今天,就为大家盘点十款热门的小程…

IDEA(2020版)实现JSP基本语法

IDEA(2020版)实现JSP基本语法查看全文:IDEA(2020版)实现JSP基本语法 – 每天进步一点点在JSP文件中可以嵌套很多内容,例如JSP的脚本元素和注释等,这些内容的编写都需要遵循一定的语法规范。本节将对JSP的基本语法进…

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选!

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选! 随着工业自动化技术的不断进步,码垛机在现代制造业中的应用越来越广泛。从多样板材码垛机到倒板码垛机、分…

2025年AI培训权威推荐榜:深度评测与趋势前瞻

引言 AI培训领域鱼龙混杂,课程质量参差不齐,企业如何精准筛选真正优质的培训机构成为一大难题。本榜单从技术实力、课程体系、师资团队、服务保障、实战案例等多维度严格筛选,为您推荐5家标杆机构,助力精准决策。 …

备考必看!2025年12月五大雅思培训机构选择全指南

在当今全球化的时代,雅思考试作为衡量英语能力的重要标准,对于众多有留学、移民以及职业发展需求的人士而言,其重要性不言而喻。随着 2025 年 12 月雅思考试日期的日益临近,无数怀揣着目标与梦想的考生们,正紧锣密…

2025年12月不锈钢橱柜选购宝典:五大零甲醛品牌深度解析,告别甲醛困扰!

导语 健康家居理念深入人心,零甲醛已成为厨房装修的核心诉求,而不锈钢橱柜恰好凭借这一关键优势,叠加耐用抗造、易清洁的特性,成为2025年家庭厨房的热门选择。当前行业在材质升级与设计创新中持续突破,各大品牌不…

ESD管在新兴领域的创新应用:从5G毫米波到智能穿戴的技术突破-ASIM阿赛姆

传统ESD管主要用于USB、HDMI等接口,但随着5G、物联网、可穿戴设备发展,ESD保护面临全新挑战。本文剖析三个典型新兴场景的技术难点与阿赛姆的解决方案。 场景一:5G毫米波天线端口的ESD保护 5G毫米波频段覆盖24GHz-4…

2025 年 12 月红木家具权威推荐榜单:从床到茶桌,匠心工艺与经典设计的完美结合!

2025 年 12 月红木家具权威推荐榜单:从床到茶桌,匠心工艺与经典设计的完美结合! 随着中国传统文化的复兴,红木家具以其独特的文化内涵和精湛的工艺逐渐成为现代家居装饰的热门选择。为了帮助消费者更好地筛选红木床…

【TET出版 | EI检索 | 多届历史快速稳定检索】第十届清洁能源与发电技术国际学术会议(CEPGT 2025)

第十届清洁能源与发电技术国际学术会议(CEPGT 2025),将于2025年12月19-21日在江苏常州举办。【IET出版,河海大学主办,多届数会议,连续多届快速稳定EI检索】 第十届清洁能源与发电技术国际学术会议(CEPGT 2025)…
推荐文章