vue3表格数据分2个表格序号连续展示
一、el-table表格在弹窗里面分两个表格展示。
假设我们有一个数组 tableData,我们希望在第一个表格中展示前半部分的数据,第二个表格中展示后半部分的数据。
<template><el-button type="primary" @click="dialogVisible = true">打开弹窗</el-button><el-dialogtitle="表格展示"v-model="dialogVisible"width="80%":before-close="handleClose"><!-- 第一个表格 --><el-table:data="firstTableData"borderstyle="width: 100%; margin-bottom: 20px"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table><!-- 第二个表格 --><el-table:data="secondTableData"borderstyle="width: 100%"><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table><template #footer><span class="dialog-footer"><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="dialogVisible = false">确定</el-button></span></template></el-dialog>
</template><script>
export default {data() {return {dialogVisible: false,tableData: [{date: '2024-01-01',name: '张三',address: '上海市浦东新区',},{date: '2024-01-02',name: '李四',address: '北京市海淀区',},{date: '2024-01-03',name: '王五',address: '广州市天河区',},{date: '2024-01-04',name: '赵六',address: '深圳市南山区',},],};},computed: {// 计算第一个表格的数据(前半部分)firstTableData() {return this.tableData.slice(0, this.tableData.length / 2);},// 计算第二个表格的数据(后半部分)secondTableData() {return this.tableData.slice(this.tableData.length / 2);},},methods: {handleClose(done) {this.$confirm('确认关闭?').then(() => {done();}).catch(() => {});},},
};
</script>
代码解析
-
数据切分:
-
使用
computed属性firstTableData和secondTableData来分别计算两个表格的数据。 -
firstTableData:通过slice(0, this.tableData.length / 2)获取数组的前半部分。 -
secondTableData:通过slice(this.tableData.length / 2)获取数组的后半部分。
-
-
表格绑定:
-
第一个表格绑定到
firstTableData。 -
第二个表格绑定到
secondTableData。
-
-
弹窗控制:
-
使用
el-dialog控制弹窗的显示与隐藏。 -
在弹窗底部添加操作按钮,控制弹窗的关闭。
-
扩展功能
-
动态分组: 如果需要根据某些条件动态分组数据,可以在
computed属性中添加逻辑。例如,根据name或date将数据分组。 -
筛选功能: 可以在弹窗中添加筛选功能,允许用户选择展示哪些数据。
-
分页功能: 如果数据量较大,可以在每个表格下方添加
el-pagination组件来实现分页功能。
通过上述实现,你可以在一个弹窗中展示同一个数组的不同部分,满足不同的展示需求。
二、序号连续起来
<template><el-button type="primary" @click="dialogVisible = true">打开弹窗</el-button><el-dialogtitle="表格展示"v-model="dialogVisible"width="80%":before-close="handleClose"><!-- 第一个表格 --><el-table:data="firstTableData"borderstyle="width: 100%; margin-bottom: 20px"><el-table-columnprop="index"label="序号"width="60"></el-table-column><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table><!-- 第二个表格 --><el-table:data="secondTableData"borderstyle="width: 100%"><el-table-columnprop="index"label="序号"width="60"></el-table-column><el-table-column prop="date" label="日期" width="180"></el-table-column><el-table-column prop="name" label="姓名" width="180"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table><template #footer><span class="dialog-footer"><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="dialogVisible = false">确定</el-button></span></template></el-dialog>
</template><script>
export default {data() {return {dialogVisible: false,tableData: [{ date: '2024-01-01', name: '张三', address: '上海市浦东新区' },{ date: '2024-01-02', name: '李四', address: '北京市海淀区' },{ date: '2024-01-03', name: '王五', address: '广州市天河区' },{ date: '2024-01-04', name: '赵六', address: '深圳市南山区' },{ date: '2024-01-05', name: '孙七', address: '杭州市西湖区' },{ date: '2024-01-06', name: '周八', address: '成都市武侯区' },],};},computed: {firstTableData() {return this.tableData.slice(0, this.tableData.length / 2).map((item, index) => ({...item,index: index + 1, // 添加序号}));},secondTableData() {return this.tableData.slice(this.tableData.length / 2).map((item, index) => ({...item,index: index + 1 + this.tableData.length / 2, // 添加序号}));},},methods: {handleClose(done) {this.$confirm('确认关闭?').then(() => {done();}).catch(() => {});},},
};
</script>
代码解析
-
计算序号:
-
在
computed属性中,我们分别处理firstTableData和secondTableData。 -
使用
map方法为每个表格的数据添加一个index属性。 -
第一个表格的序号从 1 开始。
-
第二个表格的序号从第一个表格的最后一个序号加 1 开始。
-
-
表格列绑定:
-
使用
prop="index"绑定序号列,确保序号在表格中正确显示。
-
测试结果
假设 tableData 包含 6 条数据,第一个表格显示前 3 条,第二个表格显示后 3 条。序号将如下显示:
-
第一个表格:
-
序号:1, 2, 3
-
-
第二个表格:
-
序号:4, 5, 6
-
三、 将会遇到问题
当数据为单数时,第一条数据会切割到了右边表格,左边表格无数据。
同时,如果后台数据返回单数时,序号会出现1.5、2.5、3.5这样的。
四、解决
1、分析
当数据为单数时,第一条数据会切割到了右边表格,左边表格无数据。
原因是slice切割的时候,如果数据为单数,比如1条数据,左边表格:
this.tableData.slice(0, this.tableData.length / 2).map((item, index) => ({...item,index: index + 1, // 添加序号}));
slice(0, 0.5)就没切到数据,因为slice第二个参数取开区间,拿不到右边那个数的位置。然后右边表格:
this.tableData.slice(this.tableData.length / 2).map((item, index) => ({...item,index: index + 1 + this.tableData.length / 2, // 添加序号}));
slice(0.5)就是取后面的数据,就是取包括0.5位置在内的往后面的数据。
所以有且仅有一条数据时,就跑到了右边表格,左边表格没数据。
2、例如
const arr = [1, 2, 3, 4, 5]console.log(arr.slice(2, 4)) // [3, 4]console.log(arr.slice(1)) // [2, 3, 4, 5]
3、解决一条数据数据跑到右边表格问题
3.1 切割时数据向上取整
切割之后应该向上取整。比如,如果一条数据,左边表格:
this.tableData.slice(0, Math.ceil(this.tableData.length / 2)),也就是slice(0, 1),也就是切割到唯一一条数据。
右边表格:
this.tableData.slice(Math.ceil(this.tableData.length / 2)),slice(1),无数据。
这样就能解决只有一条数据时,会跑到右边表格的问题。
3.2 序号这里也要向上取整
原本连续序号实现方式:
computed: {firstTableData() {return this.tableData.slice(0, this.tableData.length / 2).map((item, index) => ({...item,index: index + 1, // 添加序号}));},secondTableData() {return this.tableData.slice(this.tableData.length / 2).map((item, index) => ({...item,index: index + 1 + this.tableData.length / 2, // 添加序号}));},},
因为现在切割时向上取整,序号位置也要.
3.3 最终逻辑:
computed: {firstTableData() {return this.tableData.slice(0, Math.ceil(this.tableData.length / 2)).map((item, index) => ({...item,index: index + 1, // 添加序号}));},secondTableData() {return this.tableData.slice(Math.ceil(this.tableData.length / 2)).map((item, index) => ({...item,index: index + 1 + Math.ceil(this.tableData.length / 2), // 添加序号}));},},
4、拓展
如果想通过向下取整的方式实现,会发现有问题,大家有兴趣可以试试。
以上就是实现vue3表格数据分2个表格且序号连续展示的全过程以及解决相关问题。
相关文章:
vue3表格数据分2个表格序号连续展示
一、el-table表格在弹窗里面分两个表格展示。 假设我们有一个数组 tableData,我们希望在第一个表格中展示前半部分的数据,第二个表格中展示后半部分的数据。 <template><el-button type"primary" click"dialogVisible true&q…...
【愚公系列】《循序渐进Vue.js 3.x前端开发实践》027-组件的高级配置和嵌套
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
一文讲解Java中Object类常用的方法
在Java中,经常提到一个词“万物皆对象”,其中的“万物”指的是Java中的所有类,而这些类都是Object类的子类; Object主要提供了11个方法,大致可以分为六类: 对象比较: public native int has…...
操作系统之输入输出
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
【Convex Optimization Stanford】Lec3 Function
【Convex Optimization Stanford】Lec3 Function 前言凸函数的定义对凸函数在一条线上的限制增值扩充? 一阶条件二阶条件一些一阶/二阶条件的例子象集和sublevel set关于函数凸性的扩展(Jesen Inequality)保持函数凸性的操作非负加权和 & 仿射函数的…...
【Linux探索学习】第二十七弹——信号(一):Linux 信号基础详解
Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 前面我们已经将进程通信部分讲完了,现在我们来讲一个进程部分也非常重要的知识点——信号,信号也是进程间通信的一…...
SpringBoot或SpringAI对接DeekSeek大模型
今日除夕夜,deepseek可是出尽了风头,但是我看网上还没有这方面的内容对接,官网也并没有,故而本次对接是为了完成这个空缺 我看很多的博客内容是流式请求虽然返回时正常的,但是他并不是实时返回,而是全部响应…...
Funnel-Transformer:通过过滤序列冗余实现高效语言处理
摘要 随着语言预训练的成功,开发更具扩展性且能高效利用大量未标注数据的架构变得尤为重要。为了提高效率,我们研究了在维持完整token级别表示时的冗余问题,尤其是对于仅需要序列单向量表示的任务。基于这一直觉,我们提出了Funne…...
【搜索回溯算法】:BFS的魔力--如何使用广度优先搜索找到最短路径
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索(BFS)解决最短路…...
【算法】经典博弈论问题——威佐夫博弈 python
目录 威佐夫博弈(Wythoff Game)【模板】 威佐夫博弈(Wythoff Game) 有两堆石子,数量任意,可以不同,游戏开始由两个人轮流取石子 游戏规定,每次有两种不同的取法 1)在任意的一堆中取走任意多的石子 2)可以在两堆中同时取走相同数量…...
CUDA学习-内存访问
一 访存合并 1.1 说明 本部分内容主要参考: 搞懂 CUDA Shared Memory 上的 bank conflicts 和向量化指令(LDS.128 / float4)的访存特点 - 知乎 1.2 share memory结构 图1.1 share memory结构 放在 shared memory 中的数据是以 4 bytes(即 32 bits)作为 1 个 word,依…...
力扣动态规划-13【算法学习day.107】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
《剪映5.9官方安装包》免费自动生成字幕
(避免失效建议存自己网盘后下载)剪映5.9官方Win.Mac 链接:https://pan.xunlei.com/s/VOHc-Fg2XRlD50MueEaOOeW1A1?pwdawtt# 官方唯一的免费版,Win和Mac都有,此版本官方已下架,觉得有用可转存收藏…...
ESP32-S3模组上跑通esp32-camera(32)
接前一篇文章:ESP32-S3模组上跑通esp32-camera(31) 一、OV5640初始化 2. 相机初始化及图像传感器配置 上一回开始解析camera_probe函数的第8段即最后一段代码,本回继续解析该段代码。为了便于理解和回顾,再次贴出camera_probe函数源码,在components/esp32-camera/drive…...
Brave132 编译指南 Windows 篇:安装 Visual Studio 2022(二)
1. 引言 在着手编译 Brave 浏览器的 132 版本之前,构建一个完备的开发环境至关重要。Visual Studio 2022 作为一款功能强大的集成开发环境(IDE),为 Brave 浏览器的编译提供了坚实的工具链和技术支持。它不仅提供了高效的代码编辑…...
DBO-高斯回归预测matlab
蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法,在2022年底提出,主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 本次研究使用的是 Excel 格式的股票预测数据。数据集按照 8:1:1 的比例&#x…...
2025美国大学生数学建模竞赛美赛E题成品参考论文(48页)(含模型,可运行代码,求解结果)
2025美国大学生数学建模竞赛E题成品参考论文 目录 一、问题重述 二、问题分析 三、模型假设 四、模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1代码(仅供参考) 4.1.4问题1求解结果(仅供参考&…...
VMware 中Ubuntu无网络连接/无网络标识解决方法【已解决】
参考文档 Ubuntu无网络连接/无网络标识解决方法_ubuntu没网-CSDN博客 再我们正常使用VMware时,就以Ubuntu举例可能有时候出现无网络连接,甚至出现无网络标识的情况,那么废话不多说直接上教程 环境:无网络 解决方案&#…...
Vuex中的getter和mutation有什么区别
在现代前端开发中,状态管理是一个不可忽视的话题,而Vuex作为Vue.js的官方状态管理库,在大型应用中扮演着至关重要的角色。当我们使用Vuex进行状态管理时,getter和mutation是两个重要的概念。虽然它们都是用来处理状态的࿰…...
笔试-二维数组2
应用 现有M(1<M<10)个端口组,每个端口组是长度为N(1<N<100),元素均为整数。如果这些端口组间存在2个及以上的元素相同,则认为端口组可以关联合并;若可以关联合并,请用二位数组表示输出结果。其中…...
基于RIP的MGRE VPN综合实验
实验拓扑 实验需求 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有IP地址; 2、R1和R5间使用PPP的PAP认证,R5为主认证方; R2与R5之间使用ppp的CHAP认证,R5为主认证方; R3与R5之间使用HDLC封…...
十三先天记
没有一刻,只有当下在我心里。我像星星之间的空间一样空虚。他们是我看到的第一件事,我知道的第一件事。 在接下来的时间里,我意识到我是谁,我是谁。我知道星星在我上方,星球的固体金属体在我脚下。这个支持我的世界是泰…...
Autosar-Os是怎么运行的?(Os基础模块)
写在前面: 入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!! 书接上文 Autosar-Os是怎么运行的?(一)-CSDN博客 目录 1.Resourc…...
OPencv3.4.1安装及配置教程
来到GitHub上opencv的项目地址 https://github.com/opencv/opencv/releases/tag/3.4.1 以上资源包都是 OpenCV 3.4.1 版本相关资源,它们的区别如下: (1). opencv-3.4.1-android-sdk.zip:适用于 Android 平台的软件开发工具包(SDK…...
选择困难?直接生成pynput快捷键字符串
from pynput import keyboard# 文档:https://pynput.readthedocs.io/en/latest/keyboard.html#monitoring-the-keyboard # 博客(pynput相关源码):https://blog.csdn.net/qq_39124701/article/details/145230331 # 虚拟键码(十六进制):https:/…...
Vue.js组件开发-如何实现带有搜索功能的下拉框
创建 Vue 项目: 如果还没有创建一个 Vue 项目,可以使用 Vue CLI 来创建一个新的项目。 vue create my-project cd my-project安装依赖: 如果需要使用第三方组件库,比如 Element UI 或 Ant Design Vue,可以安装相应的…...
java 字符串日期字段格式化前端显示
在 Java 应用程序中,如果你有一个字符串类型的日期字段,并希望将其格式化后显示在前端,可以通过多种方式实现。这通常涉及到在后端将字符串转换为 Date 或 LocalDateTime 等对象,然后使用适当的注解或配置来确保它们以正确的格式序…...
LeetCode题练习与总结:安装栅栏--587
一、题目描述 给定一个数组 trees,其中 trees[i] [xi, yi] 表示树在花园中的位置。 你被要求用最短长度的绳子把整个花园围起来,因为绳子很贵。只有把 所有的树都围起来,花园才围得很好。 返回恰好位于围栏周边的树木的坐标。 示例 1: 输…...
< OS 有关 > 阿里云 几个小时前 使用密钥替换 SSH 密码认证后, 发现主机正在被“攻击” 分析与应对
信息来源: 文件:/var/log/auth.log 因为在 sshd_config 配置文件中,已经定义 LogLevel INFO 部分内容: 2025-01-27T18:18:55.68272708:00 jpn sshd[15891]: Received disconnect from 45.194.37.171 port 58954:11: Bye Bye […...
使用八爪鱼爬虫和Web Scraper抓取数据实战案例,附详细教程
最近有不少小伙伴咨询怎么抓取抖音视频或者评论的数据,他们多是自媒体或者商家,想要模仿爆火视频或者分析视频评论区的舆情信息,确实呀,现在抖音是流量高地,淘金的地方,真的是一个值得挖掘的宝藏。当然我一…...
