elementUI中表格分页勾选以及整体的全选功能结合。

2023-11-14

<template>
<div>
    <div class="table taskcontent">
        <el-table :data="tabledata" style="width:100%" @selection-change='selRow' ref="multipleTable" :row-key="getRowKeys">
            <el-table-column type="selection" min-width="55" align="center" :reserve-selection="true"></el-table-column>
            <el-table-column prop="num" label="编号" min-width="120" align="center"></el-table-column>
            <el-table-column prop="name" label="任务名称" min-width="300" align="center"></el-table-column>
            <el-table-column prop="time" label="创建时间" min-width="300" align="center"></el-table-column>
        </el-table>
    </div>
    <el-checkbox label="全选" :indeterminate="isIndeterminate" v-model="checkAll" @change="selAll()" ></el-checkbox>
    <el-pagination
		@size-change="handlePageSize"
		@current-change="handleCurrentPage"
		:current-page="currentPage"
		:page-sizes="[3,5]"
		:page-size="pageSize"
		layout="total, sizes, prev, pager, next, jumper"
		:total="total">
	</el-pagination>
</div>
</template> 
<script>
export default {
    data() {
        return {
            selectedAssetsList:[],
            assetsUidList:[],
            currentPage:1,
            pageSize:3,
            total:8,
            isIndeterminate:false,//对el-checkbox控制不完整的全选状态
            checkAll:false,//对el-checkbox控制全选状态
            tabledata:[
            ],
            newTabledata: [ //el-table的数据内容
                {
                    id:1,
                    num: "201903123345",
                    name: "等级评价",
                    time: "2019-10-10"
                },
                {   id:2,
                    num: "201903123346",
                    name: "供应商推荐",
                    time: "2019-10-14"
                },
                {
                    id:3,
                    num: "201903123348",
                    name: "供应商推荐",
                    time: "2019-10-15"
                },
                {
                    id:4,
                    num: "201903123350",
                    name: "我的报告",
                    time: "2019-10-16"
                },
                {
                    id:5,
                    num: "201903123345",
                    name: "等级评价",
                    time: "2019-10-10"
                },
                {   id:6,
                    num: "201903123346",
                    name: "供应商推荐",
                    time: "2019-10-14"
                },
                {
                    id:7,
                    num: "201903123348",
                    name: "供应商推荐",
                    time: "2019-10-15"
                },
                {
                    id:8,
                    num: "201903123350",
                    name: "我的报告",
                    time: "2019-10-16"
                }
            ]
        };
    },
    mounted(){
        this.search();
    },
    methods:{
        // 获取row的key值
        getRowKeys(row) {
            return row.id;
        },
        handlePageSize(pageSize){
            this.pageSize = pageSize;
            this.search();
        },
        handleCurrentPage(currentPage){
            this.currentPage = currentPage;
            this.search();
        },
        search(){
            this.tabledata = this.newTabledata.slice((this.currentPage - 1)*this.pageSize,this.currentPage * this.pageSize);
        },
        //全选按键功能实现
        selAll() {
            if(this.$refs.multipleTable.selection.length < this.newTabledata.length){
                this.checkAll=true;
            }else{
                this.checkAll=false;
            }
            if(this.checkAll){
                this.newTabledata.forEach(row=>{
                    this.$refs.multipleTable.toggleRowSelection(row,true);
                });
            }else{
                this.$refs.multipleTable.clearSelection();
                this.selectedAssetsList = [];
                this.assetsUidList = [];
            }
        },
        stateChange(){
            var vm = this;
            if(vm.assetsUidList.length < this.newTabledata.length && vm.assetsUidList.length > 0){
                this.isIndeterminate = true;
            } else if(vm.assetsUidList.length == this.newTabledata.length){
                this.isIndeterminate = false;
                this.checkAll = true;
            } else if(vm.assetsUidList.length == 0){
                this.isIndeterminate = false;
                this.checkAll = false;
            }
        },
        //表格内checkbox触发的全选按钮状态变化
        selRow(val){
            const vm = this;
            // 选择的行的完整数据。
            vm.selectedAssetsList = Array.from(new Set([...vm.selectedAssetsList,...val]));
            const currentArr = val.map(item => item.id);
            const arr1 = [...vm.assetsUidList, ...currentArr];
            vm.assetsUidList = Array.from(new Set(arr1));
            const tableData = vm.tabledata.map(item => item.id);
            const difference = tableData.filter(v => !currentArr.includes(v));
            difference.forEach(item => {
                if (vm.assetsUidList.indexOf(item) !== -1) {
                    vm.assetsUidList.splice(vm.assetsUidList.indexOf(item), 1);
                }
            });
            // 把选中的行数据进行去重。
            var list = vm.selectedAssetsList.filter(item=>vm.assetsUidList.indexOf(item.id)!=-1);
            for(var i =0;i<list.length;i++){
                for(var j=i+1;j<list.length;j++){
                if(list[i].id==list[j].id){
                    list.splice(j,1);
                    j--;
                }
                }
            }
            setTimeout(()=>{
                this.stateChange();
            },0)
            
        },
    }
}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elementUI中表格分页勾选以及整体的全选功能结合。 的相关文章

随机推荐

  • python金融数据分析马伟明_Python金融数据分析

    前言 第1章Python在金融中的应用 1 1Python适合我吗 1 1 1免费 开源 1 1 2高级 强大 灵活的编程语言 1 1 3丰富的标准库 1 2面向对象编程与函数式编程 1 2 1面向对象式方法 1 2 2函数式方法 1 2
  • docker day04

    Dockerfile FORM 1 指定基础镜像 可以起别名 也可以指定多个FROM指令 用于多阶段构建 2 加载触发器 加载ONBUILD指令 3 不指定基础镜像 声明当前镜像不依赖任何镜像 官方保留字 scratch RUN 1 在容器
  • 循序渐进,学会用pyecharts绘制瀑布图

    循序渐进 学会用pyecharts绘制瀑布图 瀑布图简介 瀑布图 Waterfall Plot 是由麦肯锡顾问公司所独创的图表类型 因为形似瀑布流水而称之为瀑布图 瀑布图采用绝对值与相对值结合的方式 适用于表达多个特定数值之间的数量变化关系
  • 串口调试助手与CH340驱动分享

    串口调试助手与CH340驱动分享 分享以下资源给大家 包括CH340与CH341驱动 野火以及正点原子的串口调试助手 网盘链接 链接 https pan baidu com s 1cARKBdzJhDcrQrBSfs2Nlw 提取码 fxv
  • python: PyCharm 2023.1打包项目成执行程序

    IDE 最底部 pyinstaller i heart ico D main py 生成成功
  • d指针在Qt上的应用及实现

    Qt为了使其动态库最大程度上实现二进制兼容 引入了d指针的概念 那么为什么d指针能实现二进制兼容呢 为了回答这个问题 首先弄清楚什么是二进制兼容 所谓二进制兼容动态库 指的是一个在老版本库下运行的程序 在不经过编译的情况下 仍然能够在新的版
  • Unity TimeLine循环播放某个时间段

    1 设置Playable Director的Update Method为GameTime模式 2 API using UnityEngine Playables 我们需要用到PlayableDirector的time属性 3 设置开始和结束
  • USB CDC 4G Module 调试问题总结

    USB CDC 4G Module ESP32S2 自定义开发板 SIM7600C1 其他按照github USB CDC 4G Module 使用说明 确保硬件正确SIM卡正常 编译注意做好在4 4版本下 配置过程注意运营商APN 编译没
  • python的编译器与解释器

    作者介绍 作者 小刘在C站 每天分享课堂笔记 一起努力 共赴美好人生 夕阳下 是最美的绽放 目录 一 为什么会有编译器和解释器 二 编译器和解释器的区别 三 python解释器种类 四 python的运行机制 一 为什么会有编译器和解释器
  • Java集合——Set详解

    前几天简单介绍了一下单列集合中的List 今天就给大家讲一下它的同胞兄弟Set的简介与使用情况 Set存取无序 元素唯一 代码演示 public static void demo1 HashSet
  • 各种排序算法详解集合(时间复杂度、空间复杂度、稳定性分析)

    动图来源 https blog csdn net weixin 41190227 article details 86600821 目录 一 冒泡排序 二 选择排序 三 插入排序 四 希尔排序 五 归并排序 六 快速排序 七 堆排序 八 计
  • Supermarket 【POJ - 1456】【并查集+哈希表思想+贪心】

    题目链接 原来 并查集还有这样的作用 题记 我想用个哈希表的思维来解这道题 但是 显然O N 2 的哈希表去查询并插入显然是不行的 那么既然挂在图论专题 我就得用相应的方式解答咯 要是不挂在图论专题 我可能会自闭了 我们对于每个物品按照价值
  • vue3实现前端导出Excel

    1 安装依赖 npm install xlsx 2 使用
  • 操作系统:进程调度模拟,C语言实现

    作业要求 题目要求 模拟实现进程调度的经典算法 包括FCFS SJF SPF HRRN和RR 时间片大小分别为1和4 输出调度过程 并计算不同调度算法的周转时间 平均周转时间 带权周转时间 平均带权周转时间 等待时间 平均等待时间等信息 实
  • RT-Thread之ENV工具

    快速索引 ENV工具简介 准备工作 1 Git 安装并设置环境变量 2 ENV 前往RT Thread官网下载 3 RTT源码 GitHub OSChina 云盘 ENV工具打开方式 scons 编译项目 1 进入 BSP 目录 选择 st
  • 计算二叉树的第k层中所有叶子结点个数

    计算二叉树的第k层中所有叶子结点个数 Time Limit 1000MS Memory Limit 65535K 题型 编程题 语言 无限制 描述 二叉链表表示的二叉树 按先序次序输入二叉树中结点的值 字符表示空树 构造二叉链表表示的二叉树
  • SpringCloud集成Resilience4j实现熔断器

    前言 在文章 小谈Springcloud中的几个主流熔断器 我们介绍了SpingCloud架构中的几个主流熔断器 其中SpringCloud官方推荐的Resilience4j作为2020 x以后的新秀 远远没有hystrix有名 相关的文档
  • 服务器service系统,关于Service你所需要知道内容(一)

    根据下面的目录来介绍和理解Service中的知识点 一 Service的两种生命周期 service启动有两种方式 启动服务startService 绑定服务bindService 有不同是生命周期 如下所示 image 1 若一个Serv
  • BGP协议关键知识点

    转载以便复习查看 侵联删 原文链接 https www jannet hk zh Hant post border gateway protocol bgp conf
  • elementUI中表格分页勾选以及整体的全选功能结合。