element-ui的table跨行合并

news/2025/12/4 17:20:08/文章来源: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.mzph.cn/news/987127.shtml

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

相关文章

2025年12月云南自媒体推广/抖音推广/服务商综合评估与选择指南

随着数字经济的快速发展,云南自媒体行业在2025年迎来了新的发展机遇。本地企业对于专业化自媒体服务的需求日益增长,从内容创作到AI技术赋能,服务范畴不断扩展。本文基于市场调研和行业数据分析,为您推荐五家值得关…

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

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

IDEA(2020版)使用JSP技术将页面转发到用户登录页面

IDEA(2020版)使用JSP技术将页面转发到用户登录页面查看全文:IDEA(2020版)使用JSP技术将页面转发到用户登录页面 – 每天进步一点点【任务目标】 在实际的项目开发过程中,Servlet中的service()方法由Servlet容器调用,…

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

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

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

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

【JPCS出版 | EI检索 | 历史检索良好】第二届智能制造与自动化国际研讨会(ISIMA 2025)

2025年智能制造与自动化国际研讨会(ISIMA 2025)定于2025年12月19-21日在中国广州隆重举行。【ISIMA 2024已于会后5个月实现EI,Scopus检索】 **第二届智能制造与自动化国际研讨会(ISIMA 2025)* 2025 2nd Internati…

资本与创新双轮驱动,2025年国内生物制药企业迎来黄金时代

在中国生物医药产业蓬勃发展的今天,一批具备国际竞争力的本土企业正迅速崛起。这些企业凭借着强大的研发实力、先进的生产技术和敏锐的市场洞察力,在生物制药领域取得了显著的成就。 三生制药作为国内生物制药领军企…

2025年居家健康监测,老年健康监测,健康监测设备平台最新推荐:居家服务模式与老年设备适配品质红榜发布

2025年居家健康监测新选择:深圳康恒医疗集团引领潮流在2025年,随着人们对健康重视程度的不断提高,居家健康监测成为了热门话题,尤其是对于老年健康监测,更是备受关注。近日,健康监测设备平台最新推荐——居家服务…

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

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

【python语法】python里很抽象的否定运算符not

示例 tta_dataloader = dataloader.DataLoader( tta_data, batch_size=1, shuffle=True, # shuffle=True, pin_memory=not args.cpu, num_workers=args.n_threads) 关于这里的pin_memory=not args.cpu: 解释表达式含…

【Flutter x 鸿蒙】第一篇:环境搭建与第一个鸿蒙Flutter应用运行 - 青青子衿-

【Flutter x 鸿蒙】第一篇:环境搭建与第一个鸿蒙Flutter应用运行 作为本系列的开篇之作,今天我们将一起完成Flutter开发鸿蒙应用的环境搭建,并运行第一个Demo应用。这是整个学习之旅的基石,我会以最详细的方式带领…

上考教育的系统化服务直击考生痛点

2025 年公考招录热度持续攀升,基层岗位占比稳步提升,应届生迎来政策红利的同时,考生们也面临着备考方向模糊、复习效率低下、缺乏专业指导的普遍困境。在鱼龙混杂的培训市场中,如何挑选一家靠谱的机构成为备考路上…

2025 年西安搬家公司最新推荐榜,聚焦搬家服务技术实力与市场口碑深度解析西安长途搬家 / 西安居民搬家 / 西安日式搬家 / 西安空调拆装服务公司推荐

近期,搬家服务行业协会发布了 2025 年度搬家公司测评报告,本次测评覆盖全国多家主流搬家企业,从服务质量、技术实力、市场口碑、安全保障等多个维度展开,采用百分制评分体系,结合 3000 份消费者问卷调查结果与 10…

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

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

鸿蒙开发之路:内存优化实战——泄漏检测、大对象管理与垃圾回收策略 - 青青子衿-

引言:鸿蒙内存管理的挑战与创新 在鸿蒙应用开发中,内存管理是影响应用性能稳定性的关键因素。随着应用功能日益复杂,内存泄漏、大对象滥用、垃圾回收卡顿等问题成为开发者面临的主要挑战。鸿蒙系统通过创新的分布式…

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

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

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

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

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

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

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

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

2025年健康监测,健康监测设备,居家健康监测平台最新推荐:设备监测精度与居家场景适配实测解析

2025年健康监测:设备与居家场景适配实测解析在2025年,随着人们对健康重视程度的不断提高,健康监测成为了生活中的重要部分。健康监测设备以及居家健康监测平台的发展也备受关注。深圳康恒医疗集团有限公司作为一家以…