vue3后台管理系统之实现分页功能

news2024/11/28 14:47:04

例子:用户

请求格式

返回数据类型

{
    "code": 200,
    "message": "获取所有用户成功",
    "total": 19,
    "totalPages": 2,
    "currentPage": 1,
    "data": [
        {
            "id": 1,
            "username": "ljz",
            "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
            "realname": "卢浩辰",
            "gender": "meal",
            "age": 18,
            "email": "255677899@qq.com",
            "userId": 1,
            "status": 0,
            "created_time": "2023-10-27T16:19:25.000Z",
            "update_time": "2023-11-02T12:08:47.000Z"
        }
    ]
}

设置返回数据类型

//定义获取全部用户数据类型
export interface allUser {
  id: number
  avatar: string
  username: string
  gender: string
  age: number
  email: string
  userId: number
  created_time: string
  code: number
}
export interface allUserReponseData {
  code: number
  message: string
  total: number
  totalPages: number
  currentPage: number
  data: allUser[]
}

属性

首先我们先要了解分页器的属性

v-model:current-page当前页码

v-model:page-size设置每页展示数据的条数

page-sizes每页显示个数选择器的个数

small是否使用小型分页样式

disabled 是否禁用分页

background 是否为分页按钮添加背景色

total 总条目数

layout 组件布局,子组件名用逗号分隔

size-change下拉菜单发生变化的时候

current-change当前页面发生改变事件

需求

需求:当每页显示条数发生变化时,页数(数据足够)可能还在当前页,或者最后一页(数据不够)

需求:当每页显示条数发生变化时,页数回归第一页

页面代码

<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { reqAllUser } from '@/api/user/index'
import type { allUser, allUserReponseData } from '@/api/user/type'
const userData = ref<allUser[]>([])
//分页器当前页码
const page = ref<number>(1)
//每一页展示几条数据
const pageSize = ref<number>(10)
const total = ref<number>(0)
//处理分页模块
const handleSizeChange = () => {
  getAllUser()
}
//处理分页模块结束
//获取所有用户模块
const getAllUser = async (pager = 1) => {
  page.value = pager
  const res: allUserReponseData = await reqAllUser(page.value, pageSize.value)
  console.log(res, '111')
  if (res.code == 200) {
    total.value = res.total
    userData.value = res.data
  }
}
onMounted(() => {
  //获取所有用户模块
  getAllUser()
})
</script>

<template>
  <div class="card">
    <el-card class="box-card">
      <el-form :inline="true" class="form">
        <el-form-item label="用户名">
          <el-input placeholder="请你搜索用户名" />
        </el-form-item>
        <el-form-item>
          <el-button type="primary">搜索</el-button>
          <el-button type="primary" plain>重置</el-button>
        </el-form-item>
      </el-form>
    </el-card>
    <el-card style="margin: 10px 0">
      <!-- 添加按钮 -->
      <el-button type="primary" size="default">添加</el-button>
      <el-button type="danger" size="default">批量删除</el-button>
      <!-- 表格 -->
      <el-table :data="userData" style="margin-top: 10px">
        <el-table-column type="selection" width="80px" align="center" />
        <el-table-column prop="id" label="id" width="80px" align="center" />
        <el-table-column prop="username" label="用户名字" width="120px" align="center" />
        <el-table-column prop="avatar" label="用户头像" width="120px" align="center">
          <template #default="scope">
            <img :src="scope.row.avatar" style="width: 36px; margin: 0px 10px" alt="加载失败" />
          </template>
        </el-table-column>
        <el-table-column prop="gender" label="用户性别" width="120px" align="center" />
        <el-table-column prop="age" label="用户年龄" align="center" />
        <el-table-column prop="email" label="用户邮箱" align="center" />
        <el-table-column fixed="right" label="操作" width="180">
          <template #default>
            <el-button link type="primary" size="small">Detail</el-button>
            <el-button link type="primary" size="small">Edit</el-button>
          </template>
        </el-table-column>
      </el-table>
      <!-- 分页按钮 -->
      <!-- v-model:current-page当前页码 
              v-model:page-size设置每页展示数据的条数
              page-sizes每页显示个数选择器的个数
              small是否使用小型分页样式
              disabled 是否禁用分页
          -->
      <el-pagination
        v-model:current-page="page"
        v-model:page-size="pageSize"
        :page-sizes="[3, 5, 7, 9]"
        :small="false"
        :disabled="false"
        :background="false"
        layout="  prev, pager, next, jumper,->,sizes, total"
        :total="total"
        @size-change="handleSizeChange"
        @current-change="getAllUser"
      />
    </el-card>
  </div>
</template>

<style scoped lang="scss">
.form {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
</style>

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

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

相关文章

6-8 最宽层次结点数 分数 10

文章目录 1.题目描述2.本题ac答案2.1法一: 代码复用2.2法二: 顺序队列实现层序遍历 3.C层序遍历求最大宽度3.1层序遍历代码3.2求最大宽度 1.题目描述 2.本题ac答案 2.1法一: 代码复用 //二叉树第i层结点个数 int LevelNodeCount(BiTree T, int i) {if (T NULL || i < 1)re…

CleanMyMacX4.16破解版激活码

CleanMyMac X是一款颇受欢迎的专业清理软件&#xff0c;拥有十多项强大的功能&#xff0c;可以进行系统清理、清空废纸篓、清除大旧型文件、程序卸载、除恶意软件、系统维护等等&#xff0c;并且这款清理软件操作简易&#xff0c;非常好上手&#xff0c;特别适用于那些刚入手苹…

卡尔曼家族从零解剖-(04)贝叶斯滤波→细节讨论,逻辑梳理,批量优化

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/133846882 文末正下方中心提供了本人 联系…

C++虚表与虚表指针详解

类的虚表 每个包含了虚函数的类都包含一个虚表。 当一个类&#xff08;B&#xff09;继承另一个类&#xff08;A&#xff09;时&#xff0c;类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数&#xff0c;那么其继承类也可调用这些虚函数&#xff0c;换句话说&…

系统设计中的缓存技术:完整指南

Image.png 缓存是软件工程中用于提高系统性能和用户体验的基本技术。它通过临时存储频繁访问的数据在缓存中&#xff0c;缓存比数据的原始来源更容易访问。 作为一名软件工程师&#xff0c;了解缓存以及它在不同类型的系统中的工作方式是至关重要的。在本文中&#xff0c;我们将…

linux 查看当前目录下每个文件夹大小

要在 Linux 中查看当前目录下每个文件夹的大小&#xff0c;可以使用 du 命令&#xff08;磁盘使用情况&#xff09;结合其他一些选项。下面是几个常用的命令示例&#xff1a; 显示当前目录下每个文件夹的大小——只显示一层文件夹&#xff1a; du -h --max-depth1该命令会以人…

微信小程序授权登录获取用户的openid

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内的用户体系然而因为小程序中的openid不可以直接使用需要用code&#xff08;登录凭证&#xff09;去换取openid 获取openid的思路 获取openid首先需要调用小程序的login方法…

佳易王配件进出库开单打印进销存管理系统软件下载

用版配件进出库开单打印系统&#xff0c;可以有效的管理&#xff1a;供货商信息&#xff0c;客户信息&#xff0c;进货入库打印&#xff0c;销售出库打印&#xff0c;进货明细或汇总统计查询&#xff0c;销售出库明细或汇总统计查询&#xff0c;库存查询&#xff0c;客户往来账…

web:[CISCN2019 华北赛区 Day2 Web1]Hack World

题目 打开页面&#xff0c;页面提示为&#xff0c;想要的都在‘flag’表和‘flag’列里 随便输入一个数字看回显&#xff08;1 2 3&#xff09;&#xff0c;发现回显不一样 输入1 输入2 输入3 输入4 输入单引号&#xff0c;显示bool&#xff08;false&#xff09; 尝试一下万能…

Leetcode 73 矩阵置0

class Solution {//1.用矩阵的第一行和第一列来标记该行或该列是否应该为0,但是这样的话忽视了第一行或第一列为0的情况//2.用标记row0和column0来标记第一行或第一列是否该为0public void setZeroes(int[][] matrix) {int n matrix.length;int m matrix[0].length;boolean r…

华为升腾C92安装windows NAS

华为升腾C92安装windows NAS NAS&#xff08;Network Attached Storage&#xff1a;网络附属存储&#xff09;&#xff0c;我们之前所了解的群晖&#xff0c;也仅仅是NAS当中的一个品牌运营而已。 这次&#xff0c;我决定在C92上面试着安装Windows NAS。虽然群晖NAS是基于Linu…

Tomcat10 简单地enable Https

通常来讲&#xff0c; 建站后要启用https 有下面3个步骤 1.购买域名 2.绑定域名和 服务器的外部IP地址 3.为这域名购买SSL 证书 &#xff08;还有其密码&#xff09; 4.在Tomcat上启用https 和安装这个证书 但是其实没有域名也可以在tomcat 中enable https的&#xff0c; 至于…

【Linux】多路IO复用技术③——epoll详解如何使用epoll模型实现简易的一对多服务器(附图解与代码实现)

在正式阅读本篇博客之前&#xff0c;建议大家先按顺序把下面这两篇博客看一下&#xff0c;否则直接来看这篇博客的话估计很难搞懂 多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器http://t.csdnimg.cn/BiBib多路IO复用技术②——poll…

2.10 CSS BFC

1.简介 BFC是Block Formatting Context(块级格式上下文)&#xff0c;可以理解成元素的一个“特异功能”。该“特异功能”&#xff0c;在默认的情况下处于关闭状态;当元素满足了某些条件后&#xff0c;该"特异功能被激活。所谓激活"特异功能”&#xff0c;专业点说就…

Java线程的基本概念和五种状态

1. 线程 1.1 创建线程 创建线程通常有以下三种方式&#xff1a; 实现 Runnable 接口&#xff0c;并重写其 run 方法&#xff1a; public class J1_Method01 {public static void main(String[] args) {System.out.println("Main线程的ID为&#xff1a;" Thread.curr…

shell综合项目

主菜单 http和Nginx分别的install的菜单&#xff0c;安装过程通过重定向到/dev/null达到看不见的效果 输入非整数或者大于4的数字都会提示错误 代码如下: [rootserver ~]# vim install_menu.sh #!/bin/bash function menu() { cat << EOF …

GraphQL入门与开源的GraphQL引擎Hasura体验

背景 Hasura 是一个开源的 GraphQL 引擎&#xff0c;它可以帮助开发人员快速构建和部署现代应用程序的后端。它提供了一个自动化的 GraphQL API &#xff0c;可以直接连接到现有的数据库&#xff0c;并提供实时数据推送和订阅功能。 Hasura 团队总部位于印度。 下载安装 脚本…

产品经理入门学习(三):产品解决方案

参考引用 黑马-产品经理入门基础课程 1. 需求分析 1.1 需求分析的目的 1.2 需求分析的方法 案例分析 福特公司的创始人亨利福特说&#xff1a;如果我当年去问顾客他们想要什么&#xff0c;他们肯定会告诉我&#xff1a;一匹更快的马 1.3 需求分析的实际应用 人性七宗罪&#…

计网note

其他 未分类文档 CDMA是码分多路复用技术 和CMSA不是一个东西 UPD是只确保发送 但是接收端收到之后(使用检验和校验 除了检验的部分相加 对比检验和是否相等。如果不相同就丢弃。 复用和分用是发生在上层和下层的问题。通过比如时分多路复用 频分多路复用等。TCP IP 应用层的…

css 图片好玩的一个属性,添加滤镜

鼠标经过效果对比&#xff1a; 上图是改变了图片的饱和度&#xff0c;代码如下&#xff1a; .img-box .v-image:hover {filter: saturate(1.75); }其他滤镜说明如下图&#xff1a;