el-table 多选回显,分页回显

实现el-table多选分页回显功能,左侧是分页的数据源,右侧是选择后的人员数据,切换下一页,选中的数据会在左侧表格回显。

实现:

<template><el-dialog :title="title" :visible.sync="show" :before-close="cancel" centerwidth="1050px" custom-class="bind-dialog"><div  class="content"><div class="left-user" ><el-table ref="table" :data="tableData" border :row-key="getRowKeys" style="width: 100%;height: 100%"class="cust-table" size="mini"   @select="handleSelectionChange" @select-all="selectAll"><el-table-column :reserve-selection="true" type="selection" width="50" align="center" center></el-table-column><el-table-column v-for="(item, index) in tableTitle" :label="item.label" :prop="item.prop" :key="index"align="center" center :width="item.width"><template slot-scope="scope"><div v-if="scope.row[item.prop]==null || scope.row[item.prop] ===''">-</div><div v-else>{{ scope.row[item.prop] }}</div></template></el-table-column></el-table></div><div class="right-user"><el-tagv-for="tag in selectedUsers":key="tag.userId"class="mr8 mb8"@close="delUser(tag)"closable>{{ tag.nickName }}</el-tag></div></div><paginationclass="mt12"v-show="total>0":total="total":page.sync="page.pageNum":limit.sync="page.pageSize"@pagination="queryList"/><span slot="footer" class="dialog-footer"><el-button @click="cancel">取消</el-button><el-button type="primary" @click="confirm">确定</el-button></span></el-dialog>
</template>

el-table的ref、row-key、select、select-all、type="selection"、:reserve-selection="true"都是需要设置的,并且表格绑定的data初始值不能为null,可以设置[]

设置row-key

  getRowKeys(row) {return row.userId},

表格选择数据,@select="handleSelectionChange" @select-all="selectAll"  选择单个和全选都要写

 handleSelectionChange(arr, row) {const bool = this.selectedUsers.some(user => user.userId === row.userId) // 存在返回true 否则返回falseif (bool) {// 存在删除this.selectedUsers = this.selectedUsers.filter(user => user.userId !== row.userId)} else {// 添加this.selectedUsers.push(row)}},selectAll(arr){if (arr.length !== 0) {// 全选arr.forEach(item => {const bool = this.selectedUsers.some(user => user.userId === item.userId) // 存在返回true 否则返回falseif (!bool) {// 不存在添加this.selectedUsers.push(item)}})} else {// 取消全选this.tableData.forEach(item => {this.selectedUsers = this.selectedUsers.filter(user => user.userId !== item.userId)})}},

删除右侧选中数据的时候,不仅要对右侧选中数组处理,还要把左侧数组的选中状态设为未选中;

 delUser(node) {this.selectedUsers = this.selectedUsers.filter(user => user.userId !== node.userId)this.tableData.forEach(item => {if (node.userId === item.userId) {// 存在添加this.$refs.table.toggleRowSelection(item, false)}})},

在数据编辑的时候,回显设置。注意切换table的page的时候要清除table的选中状态,重新设置选中状态,因为当右侧删除选中的数据不是当前页,分页切换的时候要刷新table的选中状态。

    queryList() {this.loading = truelet queryParams = {pageNum: this.page.pageNum,pageSize: this.page.pageSize,}queryUserData(queryParams).then((res) => {if (res.code === 200) {this.tableData = res.rowsthis.total = res.total// 切换分页的时候要清楚table的选中状态,在根据selectedUsers的值设置table选中状态this.$refs.table.clearSelection()if (this.selectedUsers.length > 0) {this.$nextTick(()=>{for (let i = 0; i < this.tableData.length; i++) {this.selectedUsers.forEach(item=>{if (item.userId == this.tableData[i].userId){this.$refs.table.toggleRowSelection(this.tableData[i], true);}})}})}}}).finally(() => {this.loading = false})},

css样式设置

<style lang="scss" scoped>
.bind-dialog {.content {display: flex;height: 406px;.left-user {flex: 1;margin-right: 12px;}.right-user {width: 310px;padding: 12px;height: 100%;box-sizing: border-box;border: 1px solid #dfe6ec;border-radius: 6px;overflow: hidden auto;}}.mt12{margin-bottom: 12px;}.mr8{margin-right: 8px;}.mb8{margin-bottom: 8px;}
}
</style>

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

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

相关文章

如何将ai集成到项目中,方法二

上一篇文章&#xff1a;如何将ai集成到radsystems项目中&#xff0c;在项目中引入ai-CSDN博客 上一篇文章内容主要针对于未实现权限分离的项目&#xff0c;这篇文章主要来说一下权限分离的项目怎么做&#xff0c;以及注意的细节。 一、编写前端router.js 二、编写前端askai.vu…

Android启动流程

目标&#xff1a; 1.zygote怎么创建进程&#xff1f; fork进程&#xff1a;fork复制一份进程&#xff0c;对应的返回值有两个&#xff0c;pid0&#xff0c;子进程&#xff1b;pid!0父进程 写时拷贝&#xff1a; fork的子进程以后&#xff0c;子进程和父进程公用一份内存空间…

使用ShinyCell展示你的单细胞数据

在我参与发表我的第一篇植物单细胞文章中&#xff0c;我用Shiny开发了一个简单的单细胞可视化网站&#xff0c;目前已经运行了5年了&#xff0c;有上万的访问&#xff0c;唯一的不足就是太简陋。我一直想着能不能找个一个更好的工具进行展示&#xff0c;最近发现了一个工具&…

每日5题Day24 - LeetCode 116 - 120

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;116. 填充每个节点的下一个右侧节点指针 - 力扣&#xff08;LeetCode&#xff09; /* // Definition for a Node. class Node {public int val;public Node left;…

【数据质量人人有责】数据质量是什么?

引言&#xff1a;数据是当代企业的核心资源之一&#xff0c;对于支持业务决策、优化运营和增强竞争力至关重要。然而&#xff0c;仅仅拥有数据并不意味着能够充分发挥其潜在价值。只有先确保数据质量&#xff0c;才能保证后续数据分析和挖掘的正确的结果对管理和业务有价值&…

LabVIEW 与组态软件在自动化系统中的应用比较与选择

LabVIEW 确实在非标单机设备、测试和测量系统中有着广泛的应用&#xff0c;特别是在科研、教育、实验室和小型自动化设备中表现突出。然而&#xff0c;LabVIEW 也具备一定的扩展能力&#xff0c;可以用于更复杂和大型的自动化系统。以下是对 LabVIEW 与组态软件在不同应用场景中…

Mysql中使用where 1=1有什么问题吗

昨天偶然看见一篇文章&#xff0c;提到说如果在mysql查询语句中&#xff0c;使用where 11会有性能问题&#xff1f;&#xff1f; 这着实把我吸引了&#xff0c;因为我项目中就有不少同事&#xff0c;包括我自己也有这样写的。为了不给其他人挖坑&#xff0c;赶紧学习一下&…

关于JavaScript技术的基础内容汇总

目录 JavaScript 基础知识1. JavaScript 基本语法2. 变量和常量3. 数据类型4. 运算符5. 控制结构6. 函数7. 对象8. 数组9. 事件处理10. DOM 操作 JavaScript 基础知识 学习 JavaScript&#xff08;简称 JS&#xff09;是前端开发的重要组成部分&#xff0c;它是一种动态的、弱…

【总线】AMBA总线架构的发展历程

目录 引言 发展历程 第一代AMBA&#xff08;AMBA 1&#xff09; 第二代AMBA&#xff08;AMBA 2&#xff09; 第三代AMBA&#xff08;AMBA 3&#xff09; 第四代AMBA&#xff08;AMBA 4&#xff09; 第五代AMBA&#xff08;AMBA 5&#xff09; AMBA协议简介 ASB&#x…

【Linux】常见指令的使用

文章目录 which指令stat 指令wc指令echo指令tree 指令whoami指令clear指令alias指令ls指令pwd指令cd 指令touch指令mkdir指令&#xff08;重要&#xff09;rmdir指令 && rm 指令&#xff08;重要&#xff09;man指令&#xff08;重要&#xff09;cp指令&#xff08;重要…

Redis原理篇——分布式锁

Redis原理篇——分布式锁 分布式锁是什么&#xff1f;分布式锁有哪些特性&#xff1f;分布式锁常用实现方式Redis 实现分布式锁一、简单的 Redis 锁二、带过期时间的 Redis 锁三、加上 Owner 的 Redis 锁四、Lua 脚本确保原子性 分布式锁是什么&#xff1f; 分布式锁是在分布式…

数据中台:生产制造产业链的“智慧大脑”!

在当今激烈竞争的生产制造领域&#xff0c;数据中台正扮演着至关重要的角色&#xff0c;它就像是产业链的“智慧大脑”&#xff0c;引领着产业的发展方向&#xff01;数据中台在生产制造产业链、生态链中起到以下关键作用&#xff1a; 1. 数据整合与共享&#xff1a;将产业链各…

R可视化:R语言基础图形合集

R语言基础图形合集 欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 基础图形可视化 数据分析的图形可视化是了解数据分布、波动和相关性等属性必…

物业客服“逆袭”记:从被质疑到被点赞,只因用了这款小程序

作为物业服务企业来说&#xff0c;物业客服人员是物业公司的核心部门。客服人员不仅仅要进行各部门之间的工作协调沟通&#xff0c;而且也是物业与业主沟通的主要桥梁。但是&#xff0c;往往客服人员经常被传统的报修方式所困扰&#xff0c;导致业主对物业客服人员存在质疑与谩…

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…

OpenCV读取和显示和保存图像

# 导入 OpenCV import cv2 as cv # 读取图像 image cv.imread(F:\\mytupian\\xihuduanqiao.jpg) # 创建窗口 #显示图像后&#xff0c;允许用户随意调整窗口大小 cv.namedWindow(image, cv.WINDOW_NORMAL) # 显示图像 cv.imshow(image, image)# 将图像保存到文件 success cv…

Linux之网络编程

Linux之网络编程 TCP协议 TCP(Transmission ControlProtocol) : 传输控制协议&#xff0c;是一个 面向连接的、可靠的、基于字节流的传输层的协议。TCP 协议建立的是一种点到点的&#xff0c;一对一的可靠连接协议 特点&#xff1a; 数据无丢失数据无失序数据无错误数据无重…

Zynq7000 系列FPGA模块化仪器

• 基于 XilinxXC7Z020 / 010 / 007S • 灵活的模块组合 • 易于嵌入的紧凑型外观结构 • 高性能的 ARM Cortex 处理器 • 成熟的 FPGA 可编程逻辑 &#xff0c;基于 IP 核的软件库 FPGA 控制器 Zynq7000 系列模块是基于 Xilinx XC7Z020/010/007S 全可编程片上系统 (SoC) 的…

Opengauss开源4年了,都谁在向其贡献代码?

2020 年 6 月 30 日&#xff0c;华为将Opengauss正式开源&#xff0c;截止目前已经过去4年时间&#xff0c;社区力量对这款数据库产品都起到了哪些作用&#xff0c;谁的代码贡献更大一些&#xff1f; 根据社区官网信息统计&#xff0c;截止目前&#xff08;2024年6月12日&…

【Java基础】OkHttp 超时设置详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…