【VUE】el-table表格 实现滚动到底部加载更多数据

废话不多说,直接上代码

<template></template>部分代码

<!-- 表格 -->
<el-tableid="mytable"v-loading="listLoading"highlight-current-rowrow-key="project_id":data="tableData"border:reload="reload"ref="myTable"style="width: 100%"show-summary:summary-method="getSummaries1":span-method="arraySpanMethod"height="calc(100vh - 275px)":load-more-disabled="disabledLoad"
><el-table-columntype="index"label="序号":row-style="rowstyles"align="center":fixed="true"width="50"/><el-table-columnlabel="项目名称"prop="project_name":show-overflow-tooltip="true"align="left":fixed="true"width="400"><template slot-scope="{ row }"><span>{{ row.project_name }}</span></template></el-table-column><el-table-columnlabel="项目进度及百分比"prop="progress_percentage"align="center"width="180":show-overflow-tooltip="true"><template slot-scope="{ row }"><el-selectv-if="LockStatus == 0 && row.is_my_project == 1"v-model.lazy="row.progress_percentage"style="width: 175px"><el-option label="招标阶段10%" value="招标阶段10%"></el-option><el-option label="合同签订并开工50%" value="合同签订并开工50%"></el-option><el-option label="转运维100%" value="转运维100%"></el-option></el-select><span v-else>{{ row.progress_percentage }}</span></template></el-table-column><el-table-columnlabel="合同签订金额"prop="contract_signing_amount"align="center"width="100":show-overflow-tooltip="true"><template slot-scope="{ row }"><textareav-if="LockStatus == 0 && row.is_my_project == 1"v-model.lazy="row.contract_signing_amount"rows="1"cols="30"style="width: 98px;border: none;resize: none;margin-top: 7px;text-align: center;"class="pass_input"/><span v-else>{{ row.contract_signing_amount }}</span></template></el-table-column><el-table-columnlabel="备注"prop="info"align="center"width="100":show-overflow-tooltip="true"><template slot-scope="{ row }"><textareav-if="LockStatus == 0 && row.is_my_project == 1"v-model.lazy="row.info"rows="1"style="width: 98px;border: none;resize: none;margin-top: 7px;text-align: center;"class="pass_input"/><span v-else>{{ row.info }}</span></template></el-table-column><el-table-columnfixed="right":label="'操作'"align="center"width="100"><template #default="{ row }"><divclass="table-btn-box"v-if="LockStatus == 0 && row.is_my_project == 1"><el-button type="primary" @click="submitRow(row)">提交</el-button></div></template></el-table-column><divv-if="tableData.length >= 50"slot="append"style="margin-top: 10px;margin-bottom: 10px;text-align: center;font-size: 15px;">{{ content }}</div>
</el-table>

其他部分的代码

data() {return {listLoading: false, // Loading状态tableData: [], // 表格展示数据allData: [], // 接口返回的所有表格数据currentPage: 1, // 第几页pageSize: 50, // 每页展示多少条reload: 0,}
},
mounted() {// 表格添加滚动事件this.$refs.myTable.bodyWrapper.addEventListener('scroll', this.handleScroll)
},
beforeDestroy() {// 销毁滚动事件this.$refs.myTable.bodyWrapper.removeEventListener('scroll', this.handleScroll)
},
watch: {allData: {deep: true,immediate: true,handler(newValue) {const currentPage = this.currentPage || 1const total = currentPage * this.pageSizethis.tableData = newValue.slice(0, total)}},// 强制刷新变量reload() {this.total = this.allData.lengththis.currentPage = 0this.$refs.myTable.bodyWrapper.scrollTop = 0this.fetchData()this.loop()}
},
methods: {// 滚动加载下一页,将下一页数据和之前数据进行累加handleScroll(event) {const { scrollTop, scrollHeight, clientHeight } = event.targetif (Math.ceil(scrollTop) + clientHeight >= scrollHeight) {// 如果数据已全部加载,则跳出if (this.tableData.length == this.total) {return}this.fetchData()}},fetchData() {this.currentPage += 1const start = (this.currentPage - 1) * this.pageSizeconst end = start + this.pageSizeconst newData = this.allData.slice(start, end)this.tableData =this.currentPage == 1 ? newData : this.tableData.concat(newData)},// 如果滚动高度小于可视范围高度,则继续加载下一页,直至可视区域填充满loop() {this.$nextTick(() => {const { scrollHeight, clientHeight } = this.$refs.myTable.bodyWrapperif (scrollHeight && clientHeight && scrollHeight <= clientHeight) {if (this.tableData.length == this.total) {return         }this.fetchData()this.loop()}})},
},

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

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

相关文章

java中的三种拷贝方法

在Java编程中&#xff0c;理解深拷贝&#xff08;Deep Copy&#xff09;、浅拷贝&#xff08;Shallow Copy&#xff09;和引用拷贝&#xff08;Reference Copy&#xff09;是非常重要的。这三种拷贝方式涉及对象复制和内存管理。以下是对它们的详细解释&#xff1a; 1. 引用拷…

数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班&#xff01;小班教学&#xff01;目前还有3个名额&#xff0c;招满为止&#xff01;有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课&#xff01; 这个课程支持升级成双核A…

服务器禁止密码登陆

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/139444224 文章目录 一、前言二、编辑sshd_config文件三、重启服务四、总结 一、前言 复杂的密码&#xff0c;登陆服务器的时候&#xff0c;也是很不方便的。并且频繁登陆&#xff0c;暴露给外界&am…

事件总线vueEvent

一个组件结束后要更新另一个组件数据&#xff0c;但是另一个组件和这个组件没有上下级关系 在 Vue 中&#xff0c;非父子组件之间进行通信通常需要使用事件总线或者其他的全局事件管理器。在你的代码片段中&#xff0c;vueEvent 似乎是一个事件总线对象&#xff0c;通过 emit 方…

c++ 里函数选择的优先级:普通函数、模板函数、万能引用,编译器选择哪个执行呢?

看大师写的代码时&#xff0c;除了在类里定义了 copy 构造函数&#xff0c;移动构造函数&#xff0c;还定义了对形参采取万能引用的构造函数&#xff0c;因此有个疑问&#xff0c;这时候的构造函数优先级是什么样的呢&#xff1f;简化逻辑测试一下&#xff0c;如下图&#xff0…

如何实现JavaScript中的寄生组合式继承?

在JavaScript中&#xff0c;寄生组合式继承是一种继承机制&#xff0c;它结合了寄生式继承和组合继承的特点。其核心思想是通过构造函数来继承属性&#xff0c;同时通过原型链来继承方法。以下是实现寄生组合式继承的基本步骤&#xff1a; 首先定义一个辅助函数 inheritProtot…

Pygame:新手指南与入门教程

在游戏开发领域,pygame 是一个广受欢迎的 Python 库,它提供了开发二维游戏的丰富工具和方法。这个库让开发者可以较少地关注底层图形处理细节,更多地专注于游戏逻辑和玩法的实现。本文将详细介绍 pygame,包括其安装过程、基本概念、主要功能和一个简单游戏的开发流程。 一…

【Vue】路由的封装抽离

问题&#xff1a;所有的路由配置都在main.js中合适吗&#xff1f; 目标&#xff1a;将路由模块抽离出来。 好处&#xff1a;拆分模块&#xff0c;利于维护 路径简写&#xff1a; 脚手架环境下 指代src目录&#xff0c;可以用于快速引入组件 完整代码 router/index.js // 但…

探索贷款交易平台的技术架构与创新应用

随着金融科技的快速发展&#xff0c;贷款交易平台作为金融行业的重要组成部分&#xff0c;正扮演着越来越重要的角色。本文将深入探讨贷款交易平台的技术架构和创新应用&#xff0c;从前端设计、后端系统、安全保障和智能化服务等方面进行全面解析&#xff0c;帮助读者更好地了…

【Python报错】已解决AttributeError: list object has no attribute ’shape‘ ( Solved )

解决Python报错&#xff1a;AttributeError: ‘list’ object has no attribute ‘shape’ (Solved) 在Python中&#xff0c;AttributeError表明你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: list object has no attribute shape的错误&#xff0c;这…

为什么要用Git

1. Git是什么 1.1. 概述 Git是分布式版本控制系统&#xff0c;与SVN类似的集中化版本控制系统相比&#xff0c;集中化版本控制系统如果中央服务器宕机则会影响数据和协同开发。 Git是分布式的版本控制系统&#xff0c;客户端不只是提取最新版本的快照&#xff0c;而且将整个…

【Java毕业设计】基于Java的特色美食推荐网站的设计与实现

文章目录 摘 要ABSTRACT目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 Java编程语言1.4.2 SpringBoot框架1.4.3 MySQL数据库1.4.4 B/S结构1.4.5 MVC模式 2 系统需求分析2.1 可行性分析2.2 任务概述2.3 功能性需求3.2.2 数据库逻辑结构设…

全面解析如何租用免备案海外服务器

租用免备案海外服务器是许多企业和个人在全球范围内开展业务或访问国际互联网资源时选择的一种方式。这种服务具有无需经过中国互联网备案流程的优势&#xff0c;能够快速部署并使用。下面将详细介绍免备案海外服务器租用的相关信息&#xff0c;rak部落为您整理发布。 1. **国外…

外汇天眼:FSCS确认TenetConnect Services Ltd已任命管理人

2024年6月5日&#xff0c;Tenet Group Ltd的董事们任命了Interpath Ltd的Ed Boyle、Howard Smith和Rob Spence为联合管理人。Ed Boyle和Rob Spence也被任命为其子公司Tenet Ltd、TenetConnect Ltd和TenetConnect Services Ltd的联合管理人。Tenet Mortgage Services Ltd和Tenet…

【计算机视觉(8)】

基于Python的OpenCV基础入门——图像直方图 直方图图像直方图 图像直方图代码以及实现效果 直方图 直方图是一种用于描述图像亮度分布的统计工具。它将图像的像素亮度值按照不同的亮度等级进行计数&#xff0c;并以直方图的形式呈现出来。图像直方图可以显示图像中每个亮度级别…

点击式的excel电子表格查找修改功能,比xlookup和vlookup简单,多列关联查询速度更快

经过实际测试&#xff0c;excel的xlookup确实非常简单&#xff0c;有部分功能也非常快。但是有的人不会公式&#xff0c;或者不喜欢用公式&#xff0c;或者没有excel2021以上的版本。而且xlookup确实也有些还不是很完美的地方&#xff0c;比如对多列关联查询很慢。所以我们还是…

MVC前端怎么写:深入解析与实战指南

MVC前端怎么写&#xff1a;深入解析与实战指南 在Web开发领域&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;是一种广泛使用的架构模式&#xff0c;它将应用程序的数据、界面和控制逻辑分离&#xff0c;使得代码更加清晰、易于维护。本文将详细探讨MVC前端如何…

selenium非全新的方式同时启动多个浏览器又互不影响的一种实现方法,欢迎讨论!

最近在做模拟浏览器批量定时自动点击实现批量操作功能&#xff0c;主要使用selenium&#xff0c;但是发现selenium直接调用本地浏览器&#xff0c;启动的是一个全新的&#xff08;与手动打开的不一致&#xff09;&#xff0c;网站可以检测到&#xff0c;每次都要双重验证(密码登…

Windows系统中不同Java版本共存

Windows系统中不同Java版本共存的方法 在Windows系统中&#xff0c;有时我们需要同时运行多个Java应用&#xff0c;而这些应用可能依赖于不同版本的Java Development Kit (JDK) 或 Java Runtime Environment (JRE)。为了实现这种需求&#xff0c;我们需要在Windows中配置多个J…

我应该如何使用 Python 的 NLTK 库进行词频统计?

使用Python的NLTK&#xff08;Natural Language Toolkit&#xff09;库进行词频统计&#xff0c;你可以遵循以下步骤&#xff1a; 安装NLTK库&#xff1a; 如果你还没有安装NLTK&#xff0c;可以通过pip安装&#xff1a; pip install nltk导入必要的模块&#xff1a; 在Python脚…