vue后台管理系统项目-table选择多行数据分页列表、一键全选重置功能

news2025/7/7 19:00:40

table选择多行数据

功能介绍:

1.列表分页功能;

2.一键全选,选中列表所有数据;

3.全选,选中当前页数据;

4.重置,清除选中状态;

5.列表搜索查询;

 效果:

 1.列表分页功能

<!-- 新建发送  船载终端 列表数据 -->
<el-table :data="newShipTableData" ref="newShipTableData" border highlight-current-row element-loading-text="拼命加载中"
            style="width: 100%;height:auto;" :header-cell-style="{textAlign: 'center',background:'#fafafa'}"
            :cell-style="{ textAlign: 'center' }" @selection-change="newShipSelectionChange" :row-key="shipRowKey">
            <el-table-column type="selection" :reserve-selection="true" width="55" :selectable="newShipCheckSelectable">
            </el-table-column>
            <el-table-column prop="shipName" label="船舶名称"></el-table-column>
            <el-table-column prop="type" label="船舶类型">
              <template slot-scope="scope">
                {{scope.row.type == 1?'集装箱':'散货'}}
              </template>
            </el-table-column>
            <el-table-column prop="mmsi" label="MMSI"></el-table-column>
            <el-table-column prop="tonnage" label="船舶吨位(t)"></el-table-column>
            <el-table-column prop="draft" label="吃水(m)"></el-table-column>
            <el-table-column prop="location" label="最后定位港口"></el-table-column>
            <el-table-column prop="shipStatus" label="空船期">
              <template slot-scope="scope">
                {{scope.row.shipStatus == 0?'是':'否'}}
              </template>
            </el-table-column>
</el-table>
<!-- 新建发送  船载终端 分页 -->
<el-row class='aic'>
            <el-col :span='6' class='pt20'>
                <!--一键全选/重置按钮-->
                <el-checkbox label="一键全选" v-model="newShipCheckAll" @change="newShipCheck" border></el-checkbox>
                <el-button @click='newShipResetCheck' class='ml20'>重置</el-button>
            </el-col>
            <el-pagination background @size-change="newShipSizeChange" @current-change="newShipCurrentChange"
              :current-page="newCreatShipPagination.page" :page-sizes="[5, 10, 15, 20,25]"
              :page-size="newCreatShipPagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
              :total="newCreatShipPagination.total">
            </el-pagination>
</el-row>  

注意事项:

 实现多选非常简单: 手动添加一个el-table-column,设type属性为selection即可;默认情况下若内容过多会折行显示,若需要单行显示可以使用show-overflow-tooltip属性,它接受一个Boolean,为true时多余的内容会在 hover 时以 tooltip 的形式显示出来。

 接口数据获取

// 新建 -- 船载终端 -- 获取表格数据
    getPushShipPageFun() {
      this.newShipRuleForm.pageNum = this.newCreatShipPagination.page;
      this.newShipRuleForm.pageSize = this.newCreatShipPagination.pageSize;
      getPushShipPage(this.newShipRuleForm)
        .then(res => {
          if (res.code == 200) {
            // this.$refs.newShipRuleForm.resetFields();//清除
            console.log(res, "新建 -- 船载终端 -- 分页列表");
            this.newShipTableData = res.data.records;
            this.newCreatShipPagination.total = res.data.total;
          } else {
            this.$message.error("数据加载失败,请稍后再试");
          }
        })
        .catch(err => {
          console.log(err);
        });
    },

分页切换跳转

    // 新建 -- 船载终端 -- 选择一页几条数据
    newShipSizeChange(val) {
      this.newCreatShipPagination.pageSize = val;
      this.newCreatShipPagination.page = 1;
      this.getPushShipPageFun();
    },
    // 新建 -- 船载终端 -- 选择第几页
    newShipCurrentChange(val) {
      this.newCreatShipPagination.page = val;
      this.getPushShipPageFun();
    },

2.一键全选、全选

点击一键全选,是选中全部的数据;

具体实现:

<el-col :span='6' class='pt20'>
                <!--一键全选/重置按钮-->
                <el-checkbox label="一键全选" v-model="newShipCheckAll" @change="newShipCheck" border></el-checkbox>
                <el-button @click='newShipResetCheck' class='ml20'>重置</el-button>
</el-col>
//data定义:

newShipCheckAll:false,//船载终端

watch监听newShipTableData数据

watch: {
    // 分页全选-监听穿在终端表格数据变化 -- (点击了全选后--翻页仍然选中)
    newShipTableData: {
      handler(value) {
        if (this.newShipCheckAll) {
          this.newShipTableData.forEach(row => {
            if (row) {
              this.$refs.newShipTableData.toggleRowSelection(row, true);
            }
          });
        }
      },
      deep: true
    },
}

selection-change 当选择项发生变化时会触发该事件

// 新建 -- 船载终端 -- 全选回调
    newShipSelectionChange(val) {
      //    val表示当前选择行的 item 对象信息,全选为选中的所有 item 的数组集合
      console.log(val, "终端全选/反选val");
      this.shipSelection = val;
      //   选择船载终端的 集合
      this.shipMmsiList = this.shipSelection.map(item => {
        return {
          mmsi: item.mmsi,
          longitude:item.longitude,
          latitude:item.latitude,
          location:item.location 
        }
      });
      // this.shipMmsiList = this.distinct(this.shipMmsiList);
      console.log(this.shipMmsiList, "选择船舶的mmsi集合");
      if (val.length == this.newShipLength) {
        this.newShipCheckAll = true;
      } else if (val.length == 0) {
        this.newShipCheckAll = false;
      }
    },
// 新建 -- 终端 --列表选择框 -- 翻页保留选中状态
    shipRowKey(row) {
      return row.shipId;
      console.log(row.shipId, "打印row.shipId");
    },

 selectable   仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选;

    // 船载终端全选-全选时禁用选择框
    newShipCheckSelectable(row, index){
      return !this.newShipCheckAll;
    },

一键全选功能逻辑处理

toggleRowSelection   用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中);

clearSelection  用于多选表格,清空用户的选择;

    // 一键全选
    newShipCheck(){
      //请求 终端 列表数据
      this.getPushShipPageFun();
      if (this.newShipCheckAll) {
        this.newShipTableData.forEach(row => {
          if (row) {
            this.$refs.newShipTableData.toggleRowSelection(row, true);
          }
        });
      } else {
        this.$refs.newShipTableData.clearSelection();
      }
    },
 

3.重置

    // 船载终端重置
    newShipResetCheck(){
      this.$refs.newShipTableData.clearSelection();
    },

4.列表搜索查询

<el-col :span="8">
                <div class="grid-content bg-purple-light">
                  <el-form-item>
                    <el-button type="primary" @click="newShipSubmitForm('newShipRuleForm')">查询</el-button>
                    <el-button @click="newShipResetForm('newShipRuleForm')">重置</el-button>
                  </el-form-item>
                </div>
</el-col>

查询 

// 新建 -- 终端 -- 查询
    newShipSubmitForm(newShipRuleForm) {
      if(this.newShipRuleForm.minTonnage&&this.newShipRuleForm.maxTonnage){
        if(parseFloat(this.newShipRuleForm.minTonnage)>parseFloat(this.newShipRuleForm.maxTonnage)){
          this.$message.warning("船舶吨位错误");
          return;
        }
      }
      
      this.$refs[newShipRuleForm].validate(valid => {
        if (valid) {
          this.newCreatShipPagination.page = 1;
          this.getPushShipPageFun();
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    

重置 

    // 新建 -- 终端 -- 重置
    newShipResetForm(newShipRuleForm) {
      this.shipMmsiList = [];
      this.shipSelection=[];
      this.$refs.newShipTableData.clearSelection();//清除选择
      this.newShipRuleForm.shipStatus="";
      this.newCreatShipPagination.page = 1;
      this.$refs[newShipRuleForm].resetFields();
      this.newShipRuleForm.pageSize = this.newCreatShipPagination.pageSize;
      this.getPushShipPageFun();
    },

⭐️⭐️⭐️  作者船长在船上
🚩🚩🚩  主页:来访地址船长在船上的博客
🔨🔨🔨  简介CSDN前端领域博客专家,CSDN前端领域优质创作者,资深前端开发工程师,专注web前端领域开发,在CSDN分享工作中遇到的问题以及问题解决方法和对项目开发的实际案例总结以及新技术的认识。
————————————————
版权声明:本文为CSDN博主「船长在船上」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

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

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

相关文章

剑指 Offer 28. 对称的二叉树

剑指 Offer 28. 对称的二叉树 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 请实现一个函数&#xff0c;用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样&#xff0c;那么它是对称的。 例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下…

项目管理中,如何制定一个好的项目计划?

项目计划&#xff0c;是一个项目的起点。计划不清晰&#xff0c;执行力再强也只会让项目跑偏。 制定一个好的项目计划有哪些要点&#xff1a; 1、确定目标 项目目标是项目所要达到的期望结果&#xff0c;拥有明确的目标能够帮助我们做好规划&#xff0c;用有效的方式做正确…

一文带你看透前端世界里的日期时间,对就是Date

很高兴我们能够通过不同空间&#xff0c;不同时间&#xff0c;通过这篇博客相识&#xff0c;那一定是一种缘分&#xff0c;一种你和狗哥的缘分。今天我希望通过这篇博客对我所熟知的前端世界里的日期时间做一个汇总&#xff0c;不止是代码上的汇总哦&#xff01; 目录 一、时区…

​一致魔芋在北交所上市:市值突破11亿元,吴平夫妇为实控人​

2月21日&#xff0c;湖北一致魔芋生物科技股份有限公司&#xff08;下称“一致魔芋”&#xff0c;BJ:839273&#xff09;在北京证券交易所上市。本次上市&#xff0c;一致魔芋的发行价为11.38元/股&#xff0c;发行1350万股&#xff0c;募资总额约为1.54亿元。 本次发行后&…

【语音之家】AI产业沙龙—动手体验语音AI开发利器 - NVIDIA NeMo代码实战

由CCF语音对话与听觉专委会 、中国人工智能产业发展联盟&#xff08;AIIA&#xff09;评估组、NVIDIA、语音之家、希尔贝壳共同主办的【语音之家】AI产业沙龙—动手体验语音AI开发利器 - NVIDIA NeMo代码实战&#xff0c;将于2023年2月28日19:00-20:30线上直播&#xff0c;同时…

详解matplotlib的color配置

详解matplotlib的color配置 Matplotlib可识别的color格式 格式举例RGB或RGBA&#xff0c;由[0, 1]之间的浮点数组成的元组&#xff0c;分别代表红色、绿色、蓝色和透明度(0.1, 0.2, 0.5), (0.1, 0.2, 0.5, 0.3不区分大小写的十六进制RGB或RGBA字符串。‘#0f0f0f’, ‘#0f0f0f…

图像质量的评价指标【PSNR/SSIM/LIPIS/IE/NIE/Prepetual loss】

前言 做插帧这么久了&#xff0c;这几个指标还没系统的研究过&#xff0c;这次开一个博客写下这几个指标的区别 这里贴一个比较全的评价指标的库https://github.com/csbhr/OpenUtility/tree/c9cf713c99523c0a2e0be6c2afa988af751ad161 以以下两张图为例 预测图片 真实图片 …

el-form表单初始化赋值表单dataForm,,校验有问题,校验必填的也校验成功了

大家好啊,今天写表单发现我直接赋值对象 导致初始化校验必填校验成功以及validator校验有误的问题我的其企业名称 在初始化的时候 竟然都校验了 并且看起来像校验成功我在点击下一步的时候validator的时候&#xff0c;竟然也是校验成功&#xff0c;也不提示必填的错误最后检查我…

用 tensorflow.js 做了一个动漫分类的功能(一)

前言&#xff1a;浏览某乎网站时发现了一个分享各种图片的博主&#xff0c;于是我顺手就保存了一些。但是一张一张的保存实在太麻烦了&#xff0c;于是我就想要某虫的手段来处理。这样保存的确是很快&#xff0c;但是他不识图片内容&#xff0c;最近又看了 mobileNet 的预训练模…

【Kafka】三.Kafka怎么保证高可用 学习总结

Kafka 的副本机制 Kafka 的高可用实现主要依赖副本机制。 Broker 和 Partition 的关系 在分析副本机制之前&#xff0c;先来看一下 Broker 和 Partition 之间的关系。Broker 在英文中是代理、经纪人的意思&#xff0c;对应到 Kafka 集群中&#xff0c;是一个 Kafka 服务器节…

Blazor入门100天 : 身份验证和授权 (4) - 自定义字段

目录 建立默认带身份验证 Blazor 程序角色/组件/特性/过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件,本地化资源freesql 生成实体类,freesql 管理ids数据表初始化 Roles,freesql 外键 > 导航属性完善 freesql 和 bb 特性 本节源码 https://github.com/…

数据备份学习笔记2

Linux实现本地备份的命令&#xff1a; mkdir -p /root/backup/date "%Y-%m-%d" tar -zcvPf /root/backup/date "%Y-%m-%d"/test20230221.tar.gz /root/test20230221/ 我们再看下tar命令选项&#xff1a; tar -czvf txt3.tar.gz txt3 tar -xvf txt4.tar.g…

二叉查找树(C++)

背景&#xff1a; 最近我要学习二叉平衡树了&#xff0c;在学习二叉平衡树之前&#xff0c;我需要学会二叉搜索树&#xff0c;因为二叉平衡树就是根据二叉搜索树的思想进行优化的。 二叉查找树简介&#xff1a; 二叉查找树是什么呢&#xff1f;&#xff08;也叫二叉搜索树&…

国产无线蓝牙耳机哪个好?2023国产无线蓝牙耳机排行

随着蓝牙耳机的快速发展&#xff0c;近几年国产蓝牙耳机更是呈指数式爆发&#xff0c;越来越多的国产蓝牙耳机品牌被人们看到、认可。那么&#xff0c;国产无线蓝牙耳机哪个好&#xff1f;下面&#xff0c;我来给大家推荐几款国产蓝牙耳机&#xff0c;一起来看看吧。 一、南卡…

C语言实现动态管理通讯录信息系统(静态通讯录plus版)

文章目录前言&#xff1a;一.动态管理思想1.通讯录结构体声明发生变化2.通讯录结构体初始化发生变化3.通讯录能够动态增容4.通讯录销毁数据二.优化通讯录可持续读写信息1.保存通讯录中的信息到文件中2.加载文件信息到通讯录中三.源码1.text.c2.contact.c3.contact.h前言&#x…

Kotlin新手教程七(委托)

委托模式是软件设计模式中的一项基本技巧。在委托模式中&#xff0c;有两个对象参与处理同一个请求&#xff0c;接受请求的对象将请求委托给另一个对象来处理。kotlin中使用by实现委托。 一、类委托 类的委托实际就是一个类中定义的方法实际是调用另一个类中的对象的方法来实现…

5.7 BGP属-ORIGIN

配置BGP ORIGIN属性控制选路 1. 实验目的 熟悉BGP ORIGIN属性控制选路的应用场景掌握BGP ORIGIN属性控制选路的配置方法2. 实验拓扑 实验拓扑如图5-7所示: 图5-7:BGP ORIGIN属性控制选路 3. 实验步骤 (1)配置IP地址 …

实验室通风橱通风柜的构成

一、实验室通风橱通风柜简介通风柜是一个密闭的同时又能排风的工作空间。其设计目的是为了控制、稀释以及排除这个密闭空间内产生制造的烟气、气雾和微粒&#xff0c;同时它也是实验室预防泄露控制的重要组成部分。在大多数实验室中&#xff0c;通风柜是保护实验室操作者免受有…

ubantu python完整安装示例(python3.7.1演示)

文章目录前言准备源码包1.下载2.解压准备工作&#xff08;重要&#xff09;1.下载cmake(用于编译源码&#xff09;2.下载必要的Module注意事项编译安装链接并验证配置环境变量1.移除原3.5link2.更换默认python3 的版本为3.73.添加路径前言 为什么需要使用源码编译安装&#xf…

分享项目 - Vue3 + TS + element-ui-plus 项目 -- Table表格表单

文章目录前言项目地址以及怎么阅读别人的代码整体代码分页数据作者是怎么处理的 usePagination顺藤摸瓜找到 api 接口的封装api 接口再往底层找全局请求封装与请求拦截器 service.ts前言 今天看一个 ts 项目的 table 模块&#xff0c;亲身体验这是公司后台管理系统一定会使用到…