vue3封装分页组件

news2024/12/24 18:33:29

1.新建Pagination文件以及该文件夹下新建index.vue

2.在index.vue文件中编写一下代码

<template>
  <div :class="{ 'hidden': hidden }" class="pagination-container">
    <el-pagination
      :background="background"
      v-model:current-page="currentPage"
      v-model:page-size="pageSize"
      :layout="layout"
      :page-sizes="pageSizes"
      :pager-count="pagerCount"
      :total="+total"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
  </div>
</template>

<script setup>
import { scrollTo } from '@/utils/scroll-to'

const props = defineProps({
  total: {
    required: true,
    type: Number
  },
  page: {
    type: Number,
    default: 1
  },
  limit: {
    type: Number,
    default: 20
  },
  pageSizes: {
    type: Array,
    default() {
      return [30, 60, 100]
    }
  },
  // 移动端页码按钮的数量端默认值5
  pagerCount: {
    type: Number,
    default: document.body.clientWidth < 992 ? 5 : 7
  },
  layout: {
    type: String,
    default: 'total, sizes, prev, pager, next, jumper'
  },
  background: {
    type: Boolean,
    default: true
  },
  autoScroll: {
    type: Boolean,
    default: true
  },
  hidden: {
    type: Boolean,
    default: false
  }
})

const emit = defineEmits();
const currentPage = computed({
  get() {
    return props.page
  },
  set(val) {
    emit('update:page', val)
  }
})
const pageSize = computed({
  get() {
    return props.limit
  },
  set(val){
    emit('update:limit', val)
  }
})
function handleSizeChange(val) {
  if (currentPage.value * val > props.total) {
    currentPage.value = 1
  }
  emit('pagination', { page: currentPage.value, limit: val })
  if (props.autoScroll) {
    scrollTo(0, 800)
  }
}
function handleCurrentChange(val) {
  emit('pagination', { page: val, limit: pageSize.value })
  if (props.autoScroll) {
    scrollTo(0, 800)
  }
}

</script>

<style scoped>
.demo-pagination-block {
  position: fixed;
  bottom: 20px;
  right: 20px;
  width: 50vw;
  padding-bottom: 20px;
  background: #fff;
  z-index: 99;

  .pagination-container {
    margin-top: 0;
  }
}
.pagination-container {
  background: #fff;
  padding: 0 16px 20px;
}
.pagination-container.hidden {
  display: none;
}
</style>

3.使用封装的组件

<div class="demo-pagination-block">
 <pagination :total="data.total" v-model:page="searchParams.pageNum" v-model:limit="searchParams.pageSize"
 @pagination="getList" />
</div>

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

import { pageList } from '@/api/dataScheduling/portDataList'

const searchParams = reactive({
    containerNo: '', // 集装箱号
    searchDate: '', // 筛选时间
    dataStatus: '', // 状态
    shipName: '', // 船名
    destinationPort: '', // 目的港
    pageNum: 1, // 页码
    pageSize: 30, // 条数
});

const data = reactive({
    total: 10, // 总条数
    tableData: [], // 数据列表
});
onMounted(() => {
    getList();
});

// 获取数据列表
const getList = () => {
    let params = { ...searchParams }
    pageList(params).then(res => {
        console.log('获取列表', res);
        data.tableData = res.rows
        data.total = res.total
    })
};

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

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

相关文章

全国快递查询接口,快递,全球快递,配送,物流管理,物流数据,电子商务

一、接口介绍 支持国内外1500快递物流公司的物流跟踪服务&#xff0c;包括顺丰、圆通、申通、中通、韵达等主流快递公司。同时&#xff0c;支持单号识别快递物流公司、按次与按单计费、物流轨迹返回等功能&#xff0c;以满足企业对快递物流查询多维度的需求。 二、使用案例截…

IDEA中.gitignore配置不生效的解决方案

一、创建项目 二、执行以下Git命令 git rm -r --cached . git add . git commit -m "update .gitignore"

接口测试的几种方法

其实无论用那种测试方法&#xff0c;接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文&#xff0c;服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端&#xff0c;客户端接收应答报文这一个过程。 方法一、用LoadRunner实现接口测试 大家都知…

风光十几年的MIUI要无了,小米自研MIOS即将就位

今年8月小米新品发布会上&#xff0c;K60 至尊版亮相的同时带来了下一代系统&#xff08;或者说UI &#xff09;的名字&#xff1a;MIUI 15 。 好家伙不知不觉已经要更到 15 了&#xff0c;大家用过几个版本呢&#xff1f; 回想起 MIUI V1 内测发布、MIUI V5 全民刷机、MIUI 8…

显卡、SSD二合一,华硕这波「技术革命」给我看傻了

通常来讲&#xff0c;高端、低端主板除了芯片组、用料、供电规格等差异&#xff0c;在接口拓展性方面也存在着明显分级。 最常用的 USB 接口倒还好&#xff0c;即便目前最入门级主板基本也能保证至少 4 个&#xff1b; 加上机箱前面板拓展 USB 口&#xff0c;保证一般用户需求…

Android studio安装详细教程

Android studio安装详细教程 文章目录 Android studio安装详细教程一、下载Android studio二、安装Android Studio三、启动Android Studio 一、下载Android studio Android studio安装的前提是必须保证安装了jdk1.8版本以上 1、打开android studio的官网&#xff1a;Download…

3D模型格式转换工具HOOPS Exchange:模型数据自由导入和导出

HOOPS Exchange是一套高性能软件库&#xff0c;可以为软件开发人员提供导入和导出3D文件格式的能力。HOOPS Exchange导入3D数据后&#xff0c;会将3D数据转换为PRC格式存放到内存中&#xff0c;最后导出成为其他3D格式。&#xff08;点击申请HOOPS Exchange免费试用&#xff09…

互动设计:深入了解用户体验的关键

交互是人与计算机系统之间的互动过程。在计算机领域中&#xff0c;交互是人机交互技术的核心内容之一。交互设计是一种基于人类行为科学、心理学、人体工程学等领域的专业设计&#xff0c;目的是创造用户友好的、易于使用的计算机软件、网络、移动应用等。交互的本质在于用户的…

JUC并发编程:Monitor和对象结构

JUC并发编程&#xff1a;Monitor和对象结构 1. Monitor1.1 对象的结构1.1.1 MarkWord1.1.2 Klass Word1.1.3 数组长度1.1.4 &#x1f330; 1. Monitor Monitor官方文档 我们可以把Monitor理解为一个同步工具&#xff0c;也可以认为是一种同步机制。它通常被描述为一个对象&…

零基础Linux_15(基础IO_文件)软硬链接+动静态库详解

目录 1. 软硬链接 1.1 创建软链接 1.2 创建硬链接 1.3 硬链接数和unlink 2. 动静态库 2.1 制作静态库 2.2 查看和打包静态库 2.3 使用静态库 2.3.1 安装在默认搜索路径 2.3.2 告知路径库路径库名 2.4 制作动态库 2.5 使用动态库 2.5.1 安装在默认搜索路径 2.5.2 …

轻松虚拟gps定位 AnyGo中文 for mac

AnyGo是一款旨在帮助用户模拟和改变iPhone的GPS位置&#xff0c;以实现虚拟定位的功能。该软件适用于iOS设备&#xff0c;并提供了一系列强大的功能&#xff0c;让用户能够自由地模拟不同地理位置&#xff0c;以满足各种需求。 以下是AnyGo可能提供的一些主要功能和特点&#…

设置全局滚动条样式

需求&#xff1a;统一滚动条样式&#xff0c;不需要每次都要在页面一个一个的设置&#xff0c;整个项目只要内容超出了显示滚动条了就会是自己设置的那个滚动条样式显示 1.效果 2. 创建scroll.scss文件 滚动条样式如下&#xff0c;可以自行更改 /* // 滚动条样式重写-chrome …

新闻api接口,新闻资讯,社交媒体,体育赛事,全国热门带正文新闻查询API接口

一、接口介绍 解决同一类新闻在不同平台上的内容获取问题&#xff0c;在归档主流新闻平台的内容数据基础上&#xff0c;对外提供统一的调用方式来完成实时、最新的相关新闻的获取&#xff0c;极大方便各类企业在自有软件中集成新闻内容的功能。支持200余个新闻大站&#xff0c;…

官网安装Python包太慢?教你三种Pytorch的下载安装方式,保证你再也不用出现Error

这一期教大家如何在Anaconda中使用CUDA来进行加速、神经网络依赖cuDNN的下载安装&#xff0c;以及下载和安装Pytorch-GPU安装包的三种方式&#xff08;conda、pip、轮子&#xff09;。 还未下载安装 CUDA 和 Anaconda&#xff0c;请看往期文章&#xff0c;是全套系列的总结&am…

@Scope 注解失效了?咋回事

scope 属性&#xff0c;相信大家都知道&#xff0c;一共有六种&#xff1a; 取值含义生效条件singleton表示这个 Bean 是单例的&#xff0c;在 Spring 容器中&#xff0c;只会存在一个实例。prototype多例模式&#xff0c;每次从 Spring 容器中获取 Bean 的时候&#xff0c;才…

如何解决MidJourney错过付费后被暂停

问题 假定你已经成功订阅购买了 MidJourney 一段时间&#xff0c;下个月扣费周期到了。 如果你卡里余额不足&#xff0c;卡被封或失效了&#xff0c;或者你想着最近没啥用得上 MidJourney 的地方先省着不续费&#xff0c;等要用的时候就用不了。 如果想要去官网的续费页&…

软文撰写技巧:中小企业品牌形象塑造新方法

在激烈的市场竞争中&#xff0c;企业仅靠产品质量和服务态度很难站稳脚跟&#xff0c;在互联网时代下&#xff0c;品牌形象才是中小企业的取胜法宝&#xff0c;良好的品牌形象能够赢得消费者的信赖&#xff0c;还能让企业占据市场资源优势&#xff0c;软文推广就是帮助企业塑造…

机器人控制算法——两轮差速驱动运动模型

1.Introduction 本文主要介绍针对于两轮差速模型的逆运动学数学推导。因为在机器人控制领域&#xff0c;决策规划控制层给执行器输出的控制指令v(车辆前进速度)和w(角速度)&#xff0c;因此&#xff0c;我们比较关心&#xff0c;当底层两个驱动电机接收到此信息&#xff0c;如何…

企业可以申请ov泛域名SSL证书吗

OV泛域名SSL证书是企事业单位和其他组织合法申请的数字证书&#xff0c;具有组织实名认证和域名解析授权的双重功能。与DV泛域名SSL证书相比&#xff0c;它的申请流程更加复杂&#xff0c;需要提交更多的资质和证明文件&#xff0c;当然&#xff0c;OV泛域名证书的安全等级也更…

如何提取视频文件中的元数据

最近在用gyroflow做视频稳定&#xff0c;但需要校准镜头&#xff0c;而校准需要知道拍摄时的一些设置参数&#xff0c;而用一些普通的工具获取到的视频元数据不全&#xff0c;所以就希望能有什么工具能获取到所有的元数据。找来找去发现Exiftool满足我的需求。 ExifTool 这是个…