vue3封装分页组件以及回滚函数

vue3分页器组件 1.组件pagination。 阅读详情

分页组件

<template>
  <div class="pagination-container">
      <el-pagination
          background
          :hide-on-single-page="false"
          v-model:current-page="currentPage"
          v-model:page-size="pageSize"
          :page-sizes="pageSizes"
          :layout="layout"
          :total="total"
          :small="small"
          :prev-text="prevText"
          :next-text="nextText"
          v-bind="$attrs"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"/>
  </div>
</template>

<script setup>
 import { computed } from 'vue';
 import { scrollTo } from '@/utils/scrollTo';
 
 const props = defineProps({
      total: {
          type: Number,
          default: 0
      },
      page: {
          type: Number,
          default: 1
      },
      limit: {
          type: Number,
          default: 10
      },
      small: {
          type: Boolean,
          default: false
      },
      pageSizes: {
          type: Array,
          default() {
              return [10, 20, 30, 50, 100]
          }
      },
      prevText: {
          type: String,
          default: '上一页'
      },
      nextText: {
          type: String,
          default: '下一页'
      },
      layout: {
          type: String,
          default: 'prev, pager, next, jumper'  
      },
      autoScroll: {
          type: Boolean,
          default: true
      },
 })
 
  const emits = defineEmits(['update:page', 'update:limit', 'pagination']);
  const currentPage = computed({
    set(v) {
        console.log(v)
          emits('update:page', v)
      },
      get() {
          return props.page
      },
  })
  const pageSize = computed({
      set(v) {
          emits('update:limit', v)
      },
      get() {
          return props.limit
      },
  });
 const handleSizeChange = (val) =>{
    emits('pagination',{ page: currentPage.value, limit: val })
      if (props.autoScroll) {
          scrollTo(0, 800)
      }
  };
  const handleCurrentChange = (val)=> {
      emits('pagination',{ page: val, limit: pageSize.value })
      if (props.autoScroll) {
          scrollTo(0, 800)
      }
  };
</script>

<style lang="scss" scoped>
  .pagination-container {
      padding: 10px 10px;
      text-align: center;
      overflow-x: auto;
      border-radius: 4px;
      :deep(.el-pager li) {
          border-radius: 4px;
          background: #fff;
      }
      :deep(.el-pagination button) {
          border-radius: 4px;
          background: #fff;
      }
  }
</style>

回滚函数

Math.easeInOutQuad = function(t, b, c, d) {
  t /= d / 2
  if (t < 1) {
    return c / 2 * t * t + b
  }
  t--
  return -c / 2 * (t * (t - 2) - 1) + b
}

// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
var requestAnimFrame = (function() {
  return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) }
})()

// because it's so fucking difficult to detect the scrolling element, just move them all
function move(amount) {
  document.documentElement.scrollTop = amount
  document.body.parentNode.scrollTop = amount
  document.body.scrollTop = amount
}

function position() {
  return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop
}

export function scrollTo(to, duration, callback) {
  const start = position()
  const change = to - start
  const increment = 20
  let currentTime = 0
  duration = (typeof (duration) === 'undefined') ? 500 : duration
  var animateScroll = function() {
    // increment the time
    currentTime += increment
    // find the value with the quadratic in-out easing function
    var val = Math.easeInOutQuad(currentTime, start, change, duration)
    // move the document.body
    move(val)
    // do the animation unless its over
    if (currentTime < duration) {
      requestAnimFrame(animateScroll)
    } else {
      if (callback && typeof (callback) === 'function') {
        // the animation is done so lets callback
        callback()
      }
    }
  }
  animateScroll()
}

使用方法

<PagingDevice :total="total" 、、总条数
                v-model:page="pageNum" 、、页码
                v-model:limit="pageSize" 、、条数
                @pagination="getStrengtheningRecordsFn" /> 、、接口方法
import PagingDevice from '@/components/PagingDevice/index.vue';

基于Vue3的el分页器(el-pagination)的组件封装 以上就是所以代码,这里直接复制粘贴即可t=O83A。 阅读详情

相关推荐

SpringBoot+Vue家居物流管理系统:从架构设计到工程实践的毕业设计全解析

在软件开发领域,前后端分离架构已成为构建现代Web应用的主流范式。其核心原理在于将用户界面与业务逻辑解耦,前端专注于数据展示与交互,后端则提供稳定的API服务,两者通过RESTful接口进行通信。这种架构模式的技术价值在于提升了开发效率、增强了系统可维护性,并支持团队并行协作。它广泛应用于电商、管理后台、企业应用等多种场景。本文聚焦于一个典型的工程实践案例——家居物流管理系统,深入剖析如何运用SpringBoot高效构建后端服务,并结合Vue.js实现动态前端,为计算机专业学生提供一个涵盖完整技术栈、具备清

weixin_33834628的博客 399

Vue3后台管理系统(十八)分页组件

Vue3后台管理系统(十八)分页组件

Good Luck 903

Spring Boot+Vue构建客服快捷回复系统:从数据库设计到前后端实现

在软件工程实践中,提升人机交互效率是核心目标之一。快捷回复系统正是基于这一理念,通过预置文本模板库和智能检索技术,将重复性、模式化的交互流程自动化。其技术原理在于高效的数据结构设计与检索算法,核心价值在于显著提升客服等文本密集型工作的响应速度与一致性。这类技术广泛应用于电商客服、企业IM技术支持等场景,通过变量替换、快捷键绑定等工程实践,实现个性化与标准化的平衡。本文以Spring Boot和Vue.js技术栈为例,详细解析了如何从零构建一个支持**变量占位符**和**多级分类**的完整快捷回复系统,涵盖了

weixin_30619101的博客 392

Vue3 element-ui实现Pagination分页组件--封装分页

而且它自己里面已经封装的很好了,只需要简单的调用作用在标签上的函数就能够实现平滑的滚动,用起来非常的简便。假分页:一开始从后端发送请求获取所有的数据,前端通过在组件的方式对数据进行分页,再点击分页的按钮的时候,数据其实已经在浏览器缓存的缓存中了,不需要再请求后端接口。3、注册本地组件,并且因为在添加标签的时候,绑定的有属性和方法,所以要对属性进行声明,以及方法的实现。真分页:当你目前在首页的时候,点击“第二页”或“下一页”的时候,会重新向后端发送请求,请求第二页的数据。

coinisi_li的博客 1万+

基于Vue3和Spring Boot 3的农产品销售系统设计与实现

前后端分离架构是现代电商系统的主流设计范式,它将用户交互与业务逻辑解耦,大幅提升开发效率与维护性。作为该范式的典型技术组合,Vue3借助Composition API与Vite构建工具带来流畅的开发体验,而Spring Boot 3基于Spring Framework 6与JDK 17,为企业级应用提供了稳定可靠的后端底座。在电商领域,农产品销售场景具有鲜明的行业特性:商品规格不统一、库存时效性强、价格波动频繁,这对系统的商品模型、库存扣减及订单一致性提出了更高要求。通过设计SPU/SKU规格体系、原子化库

weixin_34037515的博客 341

花店销售系统全栈开发实战:SpringBoot+Vue+MySQL毕业设计解析

全栈开发是融合前端交互、后端服务与数据库存储的系统化工程实践。SpringBoot通过自动配置简化服务端搭建,Vue以组件化与响应式机制提升页面开发效率,MySQL提供稳定可靠的数据持久化支撑。前后端分离架构因职责清晰、生态成熟,已成为企业级应用的主流选择。在电商类业务场景中,花店销售系统完整涵盖商品管理、购物车、订单流转等核心模块,是深入理解全栈开发的典型实践项目。本文以该系统的设计开发为例,从技术选型、数据库设计、接口实现到前后端联调,系统拆解了基于SpringBoot与Vue的完整工程链路,并结合毕业

weixin_34364071的博客 298

Vue3分页(Pagination)

分页组件,支持:双向绑定 page 和 pageSize;自定义位置;三种尺寸;自定义 pageSize 切换选项;是否隐藏 pageSize 切换器;快速跳转;数据总数;禁用;自定义主题色等;总之,功能丰富,简单易用😁😁

Vue Amazing UI(Vue3 + TypeScript + Vite)组件库唯一开发维护者 8983

Java在线学习平台实战源码:SpringBoot后端 + Vue2前端 + MySQL数据库全套工程

直接可运行的Java编程学习平台完整项目,后端用SpringBoot 2.x搭建,搭配MyBatis-Plus快速操作MySQL 5.7+数据库;前端基于Vue 2.x和Element UI实现响应式界面,支持用户注册登录、权限控制、课程视频上传、图片素材管理等常用教学功能。项目结构规范,包含标准Maven配置(pom.xml)、完整的src目录(含controller/service/mapper/entity)、resources下的application.yml配置文件和初始化SQL脚本,以及带注释的

e1f2g的博客 211

Vue3+ElementUI实战:从零搭建外卖系统前端架构与员工管理模块

本文详细介绍了如何使用Vue3和ElementUI从零搭建外卖系统前端架构,重点解析了员工管理模块的实现技巧。涵盖前端环境搭建、分页查询优化、账号状态切换及组件复用等实战经验,帮助开发者快速掌握企业级后台开发的核心技术。

weixin_30823001的博客 354

Springboot+Vue敬老院管理系统毕设:从数据库到答辩的高分实现

在信息管理系统开发实践中,前后端分离架构已成为主流技术范式。SpringBoot通过自动配置大幅简化了后端工程搭建,Vue则利用组件化与响应式数据绑定提升前端开发效率,两者结合不仅降低了开发门槛,也为业务模块的清晰划分与后续维护提供了良好基础。以敬老院管理系统这一典型毕设课题为例,其核心价值在于将真实的业务场景转化为可落地的系统设计:从多角色权限控制(RBAC)、数据库建模、JWT认证,到床位分配的事务处理与费用统计SQL优化,每一个环节都体现工程化思维。理解这些基础原理,能够帮助开发者构建出逻辑完整、演示

weixin_34319374的博客 322

校园跑腿小程序毕设实战:SpringBoot+Vue+MySQL全栈解析与避坑指南

同城即时配送在校园场景中催生了校园跑腿小程序这一典型应用,其业务闭环涵盖下单、接单、配送、结算等多个环节。这类项目通常采用前后端分离架构,后端基于SpringBoot提供RESTful API,利用MyBatis操作MySQL保障数据事务一致性;前端以Vue构建后台管理系统,配合原生微信小程序实现C端交互。JWT用于无状态登录鉴权,订单状态流转则依赖事务与乐观锁设计。此类技术组合不仅覆盖Java后端开发的核心技能,也适用于毕业设计及企业级快速原型开发。从技术选型到数据库设计,再到联调部署,系统掌握这些要点能

weixin_33768481的博客 412

SpringBoot 3 + Vue 3 一小时搭建美食网站管理系统:从零到可运行项目

在Web应用开发领域,前后端分离架构已成为主流范式,它通过清晰的职责划分提升了开发效率和系统可维护性。其核心原理在于后端专注于提供RESTful API处理业务逻辑与数据安全,前端则负责用户界面渲染与交互,两者通过HTTP协议进行JSON数据通信。这种模式的技术价值在于支持并行开发、技术栈独立演进,并能轻松适配多端需求。在管理系统、电商平台等应用场景中,结合SpringBoot与Vue的技术栈组合尤为高效。SpringBoot凭借其约定大于配置的理念和自动装配能力,能快速集成MyBatis-Plus等组件,

weixin_34267123的博客 392

Spring Boot+Vue校园竞赛管理系统:从设计到部署的完整实战

在管理系统类项目开发中,前后端分离架构已成为主流范式。Spring Boot作为后端框架,凭借自动化配置和生态完善的特点,能够快速构建稳定的RESTful API;Vue则通过组件化开发与响应式数据绑定,极大地提升了后台界面的构建效率。两者结合,配合数据库设计、权限控制、事务处理等关键技术,可高效实现一个功能完整的管理系统。本文以校园竞赛管理系统为例,从需求分析、数据表设计、后端接口开发到前端页面实现,完整拆解系统落地全流程,并分享实际开发中遇到的问题与解决方案。无论你是准备毕业设计,还是初学管理系统开发,

weixin_33924220的博客 298

Spring Boot + Vue3 汽车租赁系统全栈开发实战:从环境搭建到核心模块解析

前后端分离架构是现代Web应用开发的主流模式,其核心在于通过清晰的接口定义实现前端与后端的解耦与协作。在技术实现上,后端通常采用Spring Boot框架构建RESTful API,处理业务逻辑与数据持久化;前端则使用Vue3等框架构建用户界面,并通过Axios等库调用后端服务。这种架构的价值在于提升开发效率、便于团队协作并增强系统的可维护性。其典型的应用场景包括各类管理系统、电商平台以及本文所聚焦的**汽车租赁管理系统**。理解此类项目的关键在于掌握如何将**Spring Boot**与**Vue3**进

weixin_30448603的博客 317

SpringBoot+Vue考试报名系统毕业设计全流程实战解析

在软件工程实践中,前后端分离架构已成为企业级应用开发的主流模式。SpringBoot作为后端框架,通过自动配置与内置容器大幅简化了项目搭建流程;Vue则凭借组件化开发与响应式数据绑定,为前端交互提供了高效解决方案。两者结合不仅提升了开发效率,也明确了系统分层与职责边界。在考试报名场景中,系统承载着用户管理、在线报名、审核流转等核心业务,其设计需重点关注事务一致性、并发控制及接口安全。本文从工程实践角度,完整讲解基于SpringBoot与Vue的考试报名系统的设计与实现,涵盖数据库建模、JWT认证、乐观锁应用

weixin_33766805的博客 453

【库卡机器人】接线步骤

准备X11插头接线,X11插头可以接入机器人外部安全回路接线,其中外部使能信号线也接在此接口上,如果机器人系统没有配置外部使能装置,那个此接口上的外部使能信号端须短接,短接规则为:20-21、23-22、31-30、33-32。持续按住使能键,保持使能上电状态,分别按住示教器右侧每个轴对应的+或-按键,测试机器人每一个轴是否能正常运行,如果一切正常,说明机器人控制正常,机器人可以正常使用。将一根黄绿色等电位线接入其中的一个接地端,并与机器人的接地端相连,使得控制柜与机器人等电位。

qq_45161762的博客 9440

Vue分页列表删除最后一页数据的解决方案

分页处理是Web开发中的常见需求,特别是在Vue.js等前端框架中实现数据列表展示时。其核心原理是通过计算总数据量与每页显示数量的比值确定分页逻辑,确保用户体验与数据一致性。在工程实践中,分页删除操作需要特别处理边界情况,例如当删除最后一页的唯一数据时,系统应自动跳转至前一页避免空白页面。本文以Vue 3和Element UI为例,探讨了三种技术方案:前端计算跳转、后端返回修正页码和全量重新加载,其中重点分析了前端计算方案的实现细节,包括响应式数据维护和边界条件处理。这些方案可广泛应用于后台管理系统、CRM

weixin_30325971的博客 733

KANO分析模型

KANO分析模型的基本概念,目的意义,应用场景,实现方法和示例等

JasonH2021的博客 3066

SpringBoot+Vue家具仓库管理系统:从环境搭建到出入库业务流程全解析

前后端分离架构已经成为现代Web系统的主流实践,SpringBoot与Vue的组合凭借其成熟稳定、生态完善,广泛应用于各类管理信息系统的开发。在库存管理场景中,仓库管理系统不仅要实现基础的数据增删改查,更要处理入库、出库、库存扣减、事务控制等关键业务逻辑。本文从通用技术视角切入,梳理了从环境准备、后端接口设计、前端页面组织到数据库表设计的完整链路,并针对跨域、依赖版本、库存异常等高频问题进行排查思路总结。无论是毕业设计选题、全栈项目练手,还是快速落地一个仓库出入库管理原型系统,本文都能提供清晰的技术参考与实

weixin_34203832的博客 386

UM2 3D 打印机 DIY 实践 (2) 电路篇

涉及到的东西非常多,实际上后面还会讲到。主要部件清单: 主板 mega2560 + Ramps1.4 + LCD12864 各一张 42 x38mm x3,xyz 轴各一台 42 x23mm x1,用在挤出机 泰坦远程挤出机 x1 TMC2225 驱动板 x4, 替代a4988、TMC2208,静音效果好,性价比高 s-250-12v 20A开关电源 x1。功率必须足够大,宁可选大一点的 大功率 MOS 管,25A x1 NTC .

afeiqiang的专栏 3601

MAX30102心率血氧传感器

估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。

qq_41861711的博客 1万+

从SpringBoot3+Vue3博客系统到个人项目:深度拆解与实战进阶指南

在软件开发领域,前后端分离架构已成为现代Web应用的主流范式,其核心在于通过清晰的职责划分提升开发效率和系统可维护性。其基本原理是前端负责用户界面与交互逻辑,后端专注于业务处理与数据持久化,两者通过定义良好的API接口进行通信。这种架构的技术价值在于支持团队并行开发、技术栈灵活选型以及更好的用户体验。典型的应用场景包括内容管理系统、电商平台及各类中后台管理系统。本文聚焦于一个采用SpringBoot3与Vue3构建的博客论坛系统,深入探讨如何超越基础的CRUD操作,理解其背后的RBAC权限模型设计、JWT鉴

weixin_32183107的博客 218

机器人动力学仿真软件:PyBullet_(10).案例分析:双足机器人行走仿真

在本节中,我们将详细探讨如何使用PyBullet进行双足机器人的行走仿真。双足机器人行走仿真是一个复杂的动力学问题,涉及多个关节的协调运动和环境交互。通过本节的学习,您将了解如何创建和控制双足机器人模型,设置仿真环境,以及实现基本的行走算法。首先,我们需要创建一个双足机器人模型。PyBullet支持多种模型格式,包括URDF(Unified Robot Description Format)和MJCF(MuJoCo XML Format)。URDF是一种广泛使用的机器人模型描述格式,我们将使用URDF来创建

kkchenjj的博客 913
上一篇: 文件流下载部署
下一篇: 数组切割分页以及滚动加载数据
Circle_Key
博客等级 码龄4年 107粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值