elementui实现当前页全选+所有全选+翻页保持选中状

在这里插入图片描述
原文来自:https://blog.csdn.net/sumimg/article/details/121693305?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121693305-blog-127570059.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121693305-blog-127570059.235%5Ev38%5Epc_relevant_anti_t3&utm_relevant_index=2

//代码可直接复制看效果,
<template><div><div class="common-wrapper"><el-checkboxv-model="allCheck":indeterminate="indeterminate"label="全选"@change="handleCheck"/><!--列表--><el-tableref="table"v-loading="listLoading":data="lists"highlight-current-rowstyle="width: 100%":row-key="getRowKeys"@select="handleSelectRow"@select-all="handleSelectAll"><el-table-column type="selection" :reserve-selection="true" /><el-table-column prop="id" label="id" /><el-table-column prop="time" label="time" /></el-table><!--工具条--><el-col :span="24" class="toolbar"><el-pagination:current-page="this.page"layout="total , prev, pager, next":page-size="10":total="total"style="float: right"@current-change="handleCurrentChange"/></el-col><div class="clearfix" /></div></div>
</template><script>
export default {data() {return {lists: [{ id: "1", time: "2019-09-09 12:12:12" },{ id: "2", time: "2019-09-09 12:12:12" },{ id: "3", time: "2019-09-09 12:12:12" },{ id: "4", time: "2019-09-09 12:12:12" },{ id: "5", time: "2019-09-09 12:12:12" },{ id: "6", time: "2019-09-09 12:12:12" },{ id: "7", time: "2019-09-09 12:12:12" },{ id: "8", time: "2019-09-09 12:12:12" },{ id: "9", time: "2019-09-09 12:12:12" },{ id: "10", time: "2019-09-09 12:12:12" },],total: 13, // 得到的列表总数page: 1,listLoading: false,getRowKeys(row) {return row.id;},checkedList: [], // 选中列表uncheckedList: [], // 未选中列表indeterminate: false, // indeterminate属性控制样式allCheck: false,};},watch: {// 监听列表,如果为所有全选,翻页时保持状态lists: {handler(value) {if (this.allCheck) {if (this.uncheckedList.length === 0) {this.$nextTick(() => {// 这里一定要用$nextTickvalue.forEach((row) => {this.$refs.table.toggleRowSelection(row, true);});});} else {this.$nextTick(() => {value.forEach((row) => {for (let i = 0; i < this.uncheckedList.length; i++) {if (row.id === this.uncheckedList[i].id) {this.$refs.table.toggleRowSelection(row, false);break;} else {this.$refs.table.toggleRowSelection(row, true);}}});});}}},deep: true,},// 监听未选中的数组uncheckedList: {handler(value) {// 1.未选中数组长度和总数相等,取消选中状态,取消样式if (value.length === this.total) {this.allCheck = false;this.indeterminate = false;}// 2.未选中数组长度为0,取消样式if (value.length === 0) {this.indeterminate = false;}},deep: true,},// 监听选中数组checkedList: {handler(value) {// 选中数组长度等于总数,代表全部选中,取消样式if (value.length === this.total) {this.allCheck = true;this.indeterminate = false;}},},},mounted() {},methods: {handleSelectRow(rows, row) {// 单行选择if (this.allCheck) {// 多选框样式改变,allCheck依然为true,为了保持翻页状态this.indeterminate = true;// 判断勾选数据行是选中还是取消const selected = rows.length && rows.indexOf(row) !== -1;const lenFalse = this.uncheckedList.length;if (selected) {// 选中,从未选中数组中去掉if (lenFalse !== 0) {//for (let i = 0; i < lenFalse; i++) {if (this.uncheckedList[i].id === row.id) {this.uncheckedList.splice(i, 1);break;}}}} else {// 取消,当前取消的行push进去this.uncheckedList.push(row);}console.log(this.uncheckedList);} else {this.checkedList = rows;console.log(this.checkedList);}},handleSelectAll(rows) {if (this.allCheck) {this.indeterminate = true;const lenNow = this.lists.length;// 判断全选本页,是选中还是取消if (rows.indexOf(this.lists[0]) !== -1) {// 如果选中所有rows存在于tableList,或者判断rows长度不为0  证明是选中状态// uncheckedList要删除当前页tableListfor (let i = 0; i < lenNow; i++) {for (let n = 0; n < this.uncheckedList.length; n++) {if (this.uncheckedList[n].id === this.lists[i].id) {this.uncheckedList.splice(n, 1);}}}} else {// 取消 如果rows为空,当页是取消状态for (let j = 0; j < lenNow; j++) {if (this.uncheckedList.length !== 0) {// 如果uncheckedList已经有值if (this.uncheckedList.indexOf(this.lists[j]) === -1) {// 就把uncheckedList中没有的当前页tableList,push进去this.uncheckedList.push(this.lists[j]);}} else {// 如果为空,直接全部pushthis.uncheckedList.push(this.lists[j]);}}}} else {this.checkedList = rows;}},handleCheck() {if (this.indeterminate) {// 当不为全选样式时,点击变为全选this.allCheck = true;}// 只要点击了全选所有,这两个数组清空this.uncheckedList = [];this.checkedList = [];if (this.allCheck) {// 全选所有,列表全部选中,包括翻页this.lists.forEach((row) => {this.$refs.table.toggleRowSelection(row, true);});} else {// 取消列表全选状态,包括翻页this.$refs.table.clearSelection();}},// 分页handleCurrentChange(val) {this.page = val;if (val === 1) {this.lists = [{ id: "1", time: "2019-09-09 12:12:12" },{ id: "2", time: "2019-09-09 12:12:12" },{ id: "3", time: "2019-09-09 12:12:12" },{ id: "4", time: "2019-09-09 12:12:12" },{ id: "5", time: "2019-09-09 12:12:12" },{ id: "6", time: "2019-09-09 12:12:12" },{ id: "7", time: "2019-09-09 12:12:12" },{ id: "8", time: "2019-09-09 12:12:12" },{ id: "9", time: "2019-09-09 12:12:12" },{ id: "10", time: "2019-09-09 12:12:12" },];} else {this.lists = [{ id: "11", time: "2019-09-09 12:12:12" },{ id: "12", time: "2019-09-09 12:12:12" },{ id: "13", time: "2019-09-09 12:12:12" },];}},// tableList 为当前表格的数据checkPageStatus(lists) {lists.forEach((row) => {const findex = this.saveCheckList.findIndex((item) => {return item.id === row.id;});console.log("checkPageStatus", findex);if (findex >= 0) {this.$nextTick(() => {this.$refs["table"].toggleRowSelection(row);});}});},// 当表格是在弹出窗再作展示时,再次编辑多选的值时,是需要回显之前勾选的状态。// 一、加载表格数据展示,案例用模拟数据,开发需要调用接口getList() {// this.lists = res.data.data// this.total = res.data.count// this.$nextTick(() => {//       // console.log(this.lists)//       // 每一次执行数据请求的方法时,在请求成功的方法里执行回显//       this.checkedList.forEach((key) => {//         this.lists.forEach((row) => {//           if (row.id == key.id) {//             this.$refs.table.toggleRowSelection(row, true)//           }//         })//       })// }},},
};
</script>

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

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

相关文章

Linux —— 文件系统

目录 一&#xff0c;背景 二&#xff0c;文件系统 一&#xff0c;磁盘简介 磁盘分为SSD、机械磁盘&#xff1b;机械磁盘&#xff0c;即磁盘高速转动&#xff0c;磁头移动到读写扇区所在磁道&#xff0c;让磁头在目标扇区上划过&#xff0c;即可完成对扇区的读写操作&#xff…

nacos升级开启鉴权后,微服务无法连接的解决方案

版本&#xff1a; 软件版本号备注spring boot2.2.5.RELEASEspring-cloudHoxton.SR3spring-cloud-alibaba2.2.1.RELEASEnacos2.0.1从1.4.2版本进行升级。同时作为注册中心和配置中心 一、升级nacos版本&#xff0c;开启鉴权 1.在application.properties配置文件开启鉴权&…

thinkphp:分组查询(多条相同列的数据只展示一条)

例子&#xff1a;数据库中有trans_num、subinventory_from、transaction_type、creation_date有相同值&#xff0c;在查询该数据库使&#xff0c;只展示这几个值相同的一条 效果&#xff1a; 限制之前 限制之后 代码 限制前&#xff0c;后端代码 public function select_i…

Java之继承

继承 继承为什么使用继承继承是什么继承的语法访问父类成员访问父类成员变量访问父类成员方法 super关键字子类构造方法super和this异同分别的使用方法 继承的方式final关键字 作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等…

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…

机器学习、深度学习项目开发业务数据场景梳理汇总记录三

本文的主要作用是对历史项目开发过程中接触到的业务数据进行整体的汇总梳理&#xff0c;文章会随着项目的开发推进不断更新。 这里是续文&#xff0c;因为CSDN单篇文章内容太大的话就会崩溃的&#xff0c;别问我怎么知道的&#xff0c;问就是血泪教训&#xff0c;辛辛苦苦写了一…

C语言 ——指针数组与数组指针

目录 一、二维数组 二、指针数组 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;书写方式 &#xff08;3&#xff09;指针数组模拟二维数组 三、数组指针 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;使用数组指针打印一维数组 &#xff08;3&a…

2023牛客暑期多校训练营7

Beautiful Sequence 贪心&#xff0c;二进制&#xff0c;构造 Cyperation 模拟 &#xff0c;数学 We Love Strings 分块&#xff0c;二进制枚举&#xff0c;二进制容斥dp Writing Books 签到 根据相邻两个异或值B&#xff0c;因为前小于等于后&#xff0c;故从高到低遍历B的每一…

AT89C51单片机实现单片机串口互动(中断方式,单片机--单片机,应答)

说一下功能&#xff1a;客户机发送0x01到服务机 2服务单片机应答0xf2到客户机 3客户机接收到0xf2,发送信息153432这6个数字到服务机 4client发送完信息后发送0xaa结束通信 5server接收到0xaa后回复0xaa结束通信&#xff0c;从此老死不相往来 看代码&#xff1a; //发送端…

C语言 ——函数指针变量

1、概念&#xff1a; 数组指针 - 是指针-是指向数组的指针&#xff0c;是存放数组地址的指针 函数指针 - 是指针 是指向函数的指针 - 是存放函数地址的指针!! 如上所示&#xff0c;函数也是具有地址的&#xff0c;而存放函数地址的指针变量成为函数指针变量。 而有如上所示&a…

构建Docker容器监控系统(2)(Cadvisor +Prometheus+Grafana)

Cadvisor产品简介 Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息&#xff0c;并以图表的形式向用户展示。 接着上一篇来继续 部署Cadvisor 被监控主机上部署Cadvisor容器…

【Kafka】1.Kafka简介及安装

目 录 1. Kafka的简介1.1 使用场景1.2 基本概念 2. Kafka的安装2.1 下载Kafka的压缩包2.2 解压Kafka的压缩包2.3 启动Kafka服务 1. Kafka的简介 Kafka 是一个分布式、支持分区&#xff08;partition&#xff09;、多副本&#xff08;replica&#xff09;、基于 zookeeper 协调…

Qt5开发视频播放器

一、播放器界面UI设计 控件对象名位置&#xff08;坐标点&#xff09;对象名称组件名称备注Widget(0, 0, 809, 572)WidgetQWidgetlabellabelQLabel播放窗口label_2label_2QLabelvoice_controlvoice_controlQSlider音量滑动条btn_openbtn_openQPushButton打开文件按钮label_4la…

ThreadLLocal的学习

ThreadLocal的学习 ThreadLocal的学习1.ThreadLocal是什么&#xff1f;2.ThreadLocal的数据结构Java的四种引用类型 3.ThreadLocal为什么会出现内存泄露&#xff1f;既然会出现内存泄露为什么Entry的key还要使用弱引用&#xff1f;如何避免内存泄露&#xff1f; ThreadLocal的学…

最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架

最新版本的2023UI千月影视APP源码是一款开源的完美版应用程序&#xff0c;具备前后端完美匹配的特点。该应用的后端开发基于ThinkPHP框架&#xff0c;这是一个广泛使用的PHP开发框架&#xff0c;具有稳定性和安全性方面的优势。 2023UI千月影视APP是一款提供电影、电视剧、综艺…

Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算

笔者在近一两年接触了Clickhouse数据库&#xff0c;在项目中也进行了一些实践&#xff0c;但一直都没有一些技术文章的沉淀&#xff0c;近期打算做个系列&#xff0c;通过一些具体的场景将Clickhouse的用法进行沉淀和分享&#xff0c;供大家参考。 首先我们假设一个Clickhouse数…

智能合约 -- 常规漏洞分析 + 实例

1.重入攻击 漏洞分析 攻击者利用合约漏洞&#xff0c;通过fallback()或者receive()函数进行函数递归进行持续取钱。 刚才试了一下可以递归10次&#xff0c;貌似就结束了(version: 0.8.20)。 直接看代码: 银行合约&#xff1a;有存钱、取钱、查看账户余额等函数。攻击合约:…

第04天 Spring是如何解决循环依赖的

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

【VUE】7、VUE项目中集成watermark实现页面添加水印

在网站浏览中&#xff0c;常常需要网页水印&#xff0c;以便防止用户截图或录屏暴露敏感信息后&#xff0c;方便追踪用户来源。 1、安装 watermark 在 package.json 文件 dependencies 节点增加 watermark-dom 依赖 "watermark-dom": "2.3.0"然后执行命…

Petrel解释二维浅地层数据

Petrel是斯伦贝谢开发的一款地质解释和建模软件&#xff0c;有点像地理信息系统的ArcGIS&#xff0c;主要用于数据分析和展示。它不是用来处理原始数据的&#xff0c;而是集成各种处理后的结果数据进行特征分析和目标拾取。当然&#xff0c;它也能读取原始数据&#xff0c;比如…