当前位置: 首页 > news >正文

特殊三列布局需求

实现完成的功能:

1.三列布局:使用 flex 布局,三列等宽展示

2.第一页特殊布局:

  • 左列:显示 tableDataOne(table1)的数据(最多15条)
  • 中列:显示 tableData(table2)的第 1-15 条
  • 右列:显示 tableData(table2)的第 16-30 条

3.后续页布局(table2 超过 30 条时)

  • 左列:table2 的第 31-45 条
  • 中列:table2 的第 46-60 条
  • 右列:table2 的第 61-75 条
  • 以此类推,每页45条(3列 × 15条)

4.分页功能:当 table2 数据超过 30 条时,自动显示分页器

实现html部分

 <div class="table-container"><!-- 左列 --><div class="table-column"><el-table :data="leftColumnData" border stripe style="width: 100%" height="100%"><el-table-column prop="id" label="ID" align="center" width="80"></el-table-column><el-table-column prop="name" label="名称" align="center"></el-table-column><el-table-column prop="deviceNo" label="设备编号" align="center"></el-table-column><el-table-column prop="status" label="状态" align="center"><template slot-scope="scope"><span :style="{color: scope.row.status == '1' ? '#67C23A' : '#F56C6C'}">{{ scope.row.status == '1' ? '在线' : '离线' }}</span></template></el-table-column></el-table></div><!-- 中列 --><div class="table-column"><el-table :data="middleColumnData" border stripe style="width: 100%" height="100%"><el-table-column prop="id" label="ID" align="center" width="80"></el-table-column><el-table-column prop="name" label="名称" align="center"></el-table-column><el-table-column prop="deviceNo" label="设备编号" align="center"></el-table-column><el-table-column prop="status" label="状态" align="center"><template slot-scope="scope"><span :style="{color: scope.row.status == '1' ? '#67C23A' : '#F56C6C'}">{{ scope.row.status == '1' ? '在线' : '离线' }}</span></template></el-table-column></el-table></div><!-- 右列 --><div class="table-column"><el-table :data="rightColumnData" border stripe style="width: 100%" height="100%"><el-table-column prop="id" label="ID" align="center" width="80"></el-table-column><el-table-column prop="name" label="名称" align="center"></el-table-column><el-table-column prop="deviceNo" label="设备编号" align="center"></el-table-column><el-table-column prop="status" label="状态" align="center"><template slot-scope="scope"><span :style="{color: scope.row.status == '1' ? '#67C23A' : '#F56C6C'}">{{ scope.row.status == '1' ? '在线' : '离线' }}</span></template></el-table-column></el-table></div></div><!-- 分页 --><div class="pagination-container" v-if="totalPages > 1"><el-pagination@current-change="handleCurrentChange":current-page="currentPage":page-size="1":total="totalPages"layout="prev, pager, next"></el-pagination></div>

实现css部分

/* 三列表格布局 */.table-container {display: flex;justify-content: space-between;gap: 2%;width: 100%;height: calc(100% - 10vh);}.table-column {flex: 1;min-width: 0;overflow: auto;}.pagination-container {margin-top: 1vh;text-align: center;}

js实现部分

computed: {// 计算总页数totalPages() {// table2 超过30条才需要分页,第一页显示 table1 + table2前30条// 后续每页45条(3列 × 15条)if (this.tableDataTwo.length <= 30) {return 1;}// 第一页:table1 + table2的前30条// 后续页:每页45条 table2 的数据const remainingData = this.tableDataTwo.length - 30;return 1 + Math.ceil(remainingData / 45);},// 左列数据leftColumnData() {if (this.currentPage === 1) {// 第一页:左列显示 table1(设备状态数据)return this.tableData.slice(0, this.itemsPerColumn);} else {// 后续页:左列显示 table2 的数据// 第一页已显示30条,所以从第31条开始// (currentPage - 2) 表示跳过第一页,从第二页开始计算const startIndex = 30 + (this.currentPage - 2) * 45;return this.tableDataTwo.slice(startIndex, startIndex + this.itemsPerColumn);}},// 中列数据middleColumnData() {if (this.currentPage === 1) {// 第一页:中列显示 table2 的第1-15条return this.tableDataTwo.slice(0, this.itemsPerColumn);} else {// 后续页:中列显示 table2 的数据const startIndex = 30 + (this.currentPage - 2) * 45 + this.itemsPerColumn;return this.tableDataTwo.slice(startIndex, startIndex + this.itemsPerColumn);}},// 右列数据rightColumnData() {if (this.currentPage === 1) {// 第一页:右列显示 table2 的第16-30条return this.tableDataTwo.slice(this.itemsPerColumn, this.itemsPerColumn * 2);} else {// 后续页:右列显示 table2 的数据const startIndex = 30 + (this.currentPage - 2) * 45 + this.itemsPerColumn * 2;return this.tableDataTwo.slice(startIndex, startIndex + this.itemsPerColumn);}}},

http://www.dtcms.com/a/577159.html

相关文章:

  • js(DOM)基础:11、DOM定义、事件、文档的加载、DOM查询1、DOM实现轮播图、DOM查询2、DOM实现全选
  • 想做个电影网站该怎么做阳春ycqq人才招聘信息
  • JavaScript的Web APIs 入门到实战(day4):DOM 进阶与日期对象(附巩固练习和案例讲解)
  • AtCoder Educational DP Contest 刷题记录Ⅰ
  • WPF CalcBinding简化判断逻辑
  • HarmonyOS NFC应用开发:构建分布式近场通信解决方案
  • Robinhood的再进化:从零佣金交易到链上金融超级应用
  • Rust开发实战之简单游戏开发(piston游戏引擎)
  • MK9019 Buck降压电路设计笔记(光伏发电应用优化版 - UVLO 7V设置)
  • 5118网站的功能郑州网站优化公司排名
  • MQTT协议之QoS0(<=1)、QoS1(>=1)、QoS2(=1)详解
  • Dify使用02-Dify集成Ollama
  • [免费]基于Python的Flask酒店客房管理系统【论文+源码+SQL脚本】
  • LeetCode 219.存在重复元素2
  • 【CS224N】《深度学习自然语言处理》完整版笔记
  • 广东企业网站建设推荐网站做收录
  • XC7Z020-1CLG484I Xilinx AMD FPGA Zynq-7000 SoC
  • 论文分享 | BARD-GS:基于高斯泼溅的模糊感知动态场景重建
  • FPGA—ZYNQ学习spi(六)
  • 多智能体医疗会诊系统
  • ETCD 压力测试脚本
  • kali的下载和安装【ISO安装】
  • 从标签到数据流:BarTender让“可追溯”更简单
  • 零基础学AI大模型之Embedding与LLM大模型对比全解析
  • 7.游戏逆向-pxxx-TUObjectArray分析
  • web214-web220
  • 通州北苑网站建设程序开发的基本步骤是什么?
  • 专题:2025中国制造业出海与出海品牌社媒影响力洞察报告|附300+份报告PDF、数据、绘图模板汇总下载
  • 【 C/C++ 算法】入门动态规划 ----- 简单多状态 dp 问题》打家劫舍 和 股票买卖问题
  • (114页PPT)华为FusionCloud私有云最佳实践RegionTypeII(附下载方式)