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

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>

代码解析

  1. 数据切分

    • 使用 computed 属性 firstTableDatasecondTableData 来分别计算两个表格的数据。

    • firstTableData:通过 slice(0, this.tableData.length / 2) 获取数组的前半部分。

    • secondTableData:通过 slice(this.tableData.length / 2) 获取数组的后半部分。

  2. 表格绑定

    • 第一个表格绑定到 firstTableData

    • 第二个表格绑定到 secondTableData

  3. 弹窗控制

    • 使用 el-dialog 控制弹窗的显示与隐藏。

    • 在弹窗底部添加操作按钮,控制弹窗的关闭。

扩展功能

  • 动态分组: 如果需要根据某些条件动态分组数据,可以在 computed 属性中添加逻辑。例如,根据 namedate 将数据分组。

  • 筛选功能: 可以在弹窗中添加筛选功能,允许用户选择展示哪些数据。

  • 分页功能: 如果数据量较大,可以在每个表格下方添加 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>

代码解析

  1. 计算序号

    • computed 属性中,我们分别处理 firstTableDatasecondTableData

    • 使用 map 方法为每个表格的数据添加一个 index 属性。

    • 第一个表格的序号从 1 开始。

    • 第二个表格的序号从第一个表格的最后一个序号加 1 开始。

  2. 表格列绑定

    • 使用 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&#xff0c;我们希望在第一个表格中展示前半部分的数据&#xff0c;第二个表格中展示后半部分的数据。 <template><el-button type"primary" click"dialogVisible true&q…...

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》027-组件的高级配置和嵌套

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

一文讲解Java中Object类常用的方法

在Java中&#xff0c;经常提到一个词“万物皆对象”&#xff0c;其中的“万物”指的是Java中的所有类&#xff0c;而这些类都是Object类的子类&#xff1b; Object主要提供了11个方法&#xff0c;大致可以分为六类&#xff1a; 对象比较&#xff1a; public native int has…...

操作系统之输入输出

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

【Convex Optimization Stanford】Lec3 Function

【Convex Optimization Stanford】Lec3 Function 前言凸函数的定义对凸函数在一条线上的限制增值扩充&#xff1f; 一阶条件二阶条件一些一阶/二阶条件的例子象集和sublevel set关于函数凸性的扩展&#xff08;Jesen Inequality)保持函数凸性的操作非负加权和 & 仿射函数的…...

【Linux探索学习】第二十七弹——信号(一):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…...

SpringBoot或SpringAI对接DeekSeek大模型

今日除夕夜&#xff0c;deepseek可是出尽了风头&#xff0c;但是我看网上还没有这方面的内容对接&#xff0c;官网也并没有&#xff0c;故而本次对接是为了完成这个空缺 我看很多的博客内容是流式请求虽然返回时正常的&#xff0c;但是他并不是实时返回&#xff0c;而是全部响应…...

Funnel-Transformer:通过过滤序列冗余实现高效语言处理

摘要 随着语言预训练的成功&#xff0c;开发更具扩展性且能高效利用大量未标注数据的架构变得尤为重要。为了提高效率&#xff0c;我们研究了在维持完整token级别表示时的冗余问题&#xff0c;尤其是对于仅需要序列单向量表示的任务。基于这一直觉&#xff0c;我们提出了Funne…...

【搜索回溯算法】:BFS的魔力--如何使用广度优先搜索找到最短路径

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索&#xff08;BFS&#xff09;解决最短路…...

【算法】经典博弈论问题——威佐夫博弈 python

目录 威佐夫博弈(Wythoff Game)【模板】 威佐夫博弈(Wythoff Game) 有两堆石子&#xff0c;数量任意&#xff0c;可以不同&#xff0c;游戏开始由两个人轮流取石子 游戏规定&#xff0c;每次有两种不同的取法 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】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…...

《剪映5.9官方安装包》免费自动生成字幕

&#xff08;避免失效建议存自己网盘后下载&#xff09;剪映5.9官方Win.Mac 链接&#xff1a;https://pan.xunlei.com/s/VOHc-Fg2XRlD50MueEaOOeW1A1?pwdawtt# 官方唯一的免费版&#xff0c;Win和Mac都有&#xff0c;此版本官方已下架&#xff0c;觉得有用可转存收藏&#xf…...

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 版本之前&#xff0c;构建一个完备的开发环境至关重要。Visual Studio 2022 作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为 Brave 浏览器的编译提供了坚实的工具链和技术支持。它不仅提供了高效的代码编辑…...

DBO-高斯回归预测matlab

蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法&#xff0c;在2022年底提出&#xff0c;主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 本次研究使用的是 Excel 格式的股票预测数据。数据集按照 8&#xff1a;1&#xff1a;1 的比例&#x…...

2025美国大学生数学建模竞赛美赛E题成品参考论文(48页)(含模型,可运行代码,求解结果)

2025美国大学生数学建模竞赛E题成品参考论文 目录 一、问题重述 二、问题分析 三、模型假设 四、模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1代码&#xff08;仅供参考&#xff09; 4.1.4问题1求解结果&#xff08;仅供参考&…...

VMware 中Ubuntu无网络连接/无网络标识解决方法【已解决】

参考文档 Ubuntu无网络连接/无网络标识解决方法_ubuntu没网-CSDN博客 再我们正常使用VMware时&#xff0c;就以Ubuntu举例可能有时候出现无网络连接&#xff0c;甚至出现无网络标识的情况&#xff0c;那么废话不多说直接上教程 环境&#xff1a;无网络 解决方案&#…...

Vuex中的getter和mutation有什么区别

在现代前端开发中&#xff0c;状态管理是一个不可忽视的话题&#xff0c;而Vuex作为Vue.js的官方状态管理库&#xff0c;在大型应用中扮演着至关重要的角色。当我们使用Vuex进行状态管理时&#xff0c;getter和mutation是两个重要的概念。虽然它们都是用来处理状态的&#xff0…...

笔试-二维数组2

应用 现有M(1<M<10)个端口组&#xff0c;每个端口组是长度为N(1<N<100)&#xff0c;元素均为整数。如果这些端口组间存在2个及以上的元素相同&#xff0c;则认为端口组可以关联合并&#xff1b;若可以关联合并&#xff0c;请用二位数组表示输出结果。其中&#xf…...

基于RIP的MGRE VPN综合实验

实验拓扑 实验需求 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有IP地址&#xff1b; 2、R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方&#xff1b; R2与R5之间使用ppp的CHAP认证&#xff0c;R5为主认证方&#xff1b; R3与R5之间使用HDLC封…...

十三先天记

没有一刻&#xff0c;只有当下在我心里。我像星星之间的空间一样空虚。他们是我看到的第一件事&#xff0c;我知道的第一件事。 在接下来的时间里&#xff0c;我意识到我是谁&#xff0c;我是谁。我知道星星在我上方&#xff0c;星球的固体金属体在我脚下。这个支持我的世界是泰…...

Autosar-Os是怎么运行的?(Os基础模块)

写在前面&#xff1a; 入行一段时间了&#xff0c;基于个人理解整理一些东西&#xff0c;如有错误&#xff0c;欢迎各位大佬评论区指正&#xff01;&#xff01;&#xff01; 书接上文 Autosar-Os是怎么运行的&#xff1f;&#xff08;一&#xff09;-CSDN博客 目录 1.Resourc…...

OPencv3.4.1安装及配置教程

来到GitHub上opencv的项目地址 https://github.com/opencv/opencv/releases/tag/3.4.1 以上资源包都是 OpenCV 3.4.1 版本相关资源&#xff0c;它们的区别如下&#xff1a; (1). opencv-3.4.1-android-sdk.zip&#xff1a;适用于 Android 平台的软件开发工具包&#xff08;SDK…...

选择困难?直接生成pynput快捷键字符串

from pynput import keyboard# 文档&#xff1a;https://pynput.readthedocs.io/en/latest/keyboard.html#monitoring-the-keyboard # 博客(pynput相关源码)&#xff1a;https://blog.csdn.net/qq_39124701/article/details/145230331 # 虚拟键码(十六进制)&#xff1a;https:/…...

Vue.js组件开发-如何实现带有搜索功能的下拉框

创建 Vue 项目&#xff1a; 如果还没有创建一个 Vue 项目&#xff0c;可以使用 Vue CLI 来创建一个新的项目。 vue create my-project cd my-project安装依赖&#xff1a; 如果需要使用第三方组件库&#xff0c;比如 Element UI 或 Ant Design Vue&#xff0c;可以安装相应的…...

java 字符串日期字段格式化前端显示

在 Java 应用程序中&#xff0c;如果你有一个字符串类型的日期字段&#xff0c;并希望将其格式化后显示在前端&#xff0c;可以通过多种方式实现。这通常涉及到在后端将字符串转换为 Date 或 LocalDateTime 等对象&#xff0c;然后使用适当的注解或配置来确保它们以正确的格式序…...

LeetCode题练习与总结:安装栅栏--587

一、题目描述 给定一个数组 trees&#xff0c;其中 trees[i] [xi, yi] 表示树在花园中的位置。 你被要求用最短长度的绳子把整个花园围起来&#xff0c;因为绳子很贵。只有把 所有的树都围起来&#xff0c;花园才围得很好。 返回恰好位于围栏周边的树木的坐标。 示例 1: 输…...

< OS 有关 > 阿里云 几个小时前 使用密钥替换 SSH 密码认证后, 发现主机正在被“攻击” 分析与应对

信息来源&#xff1a; 文件&#xff1a;/var/log/auth.log 因为在 sshd_config 配置文件中&#xff0c;已经定义 LogLevel INFO 部分内容&#xff1a; 2025-01-27T18:18:55.68272708:00 jpn sshd[15891]: Received disconnect from 45.194.37.171 port 58954:11: Bye Bye […...

使用八爪鱼爬虫和Web Scraper抓取数据实战案例,附详细教程

最近有不少小伙伴咨询怎么抓取抖音视频或者评论的数据&#xff0c;他们多是自媒体或者商家&#xff0c;想要模仿爆火视频或者分析视频评论区的舆情信息&#xff0c;确实呀&#xff0c;现在抖音是流量高地&#xff0c;淘金的地方&#xff0c;真的是一个值得挖掘的宝藏。当然我一…...