Vue3+ElementPlus 表格分页组件封装

news/2024/7/10 3:09:59 标签: vue, elementui

vue_0">第一步新建公共组件pagination.vue

<template>
	<!-- 分页 -->
	<el-pagination
	   background
	  @size-change="handleSizeChange"
	  @current-change="handlePageChange"
	  :page-sizes="[10, 30, 100]"
	  :page-size="pagesize"
	  :layout="layout"
	  :total="total">
	</el-pagination>
</template>

<script>
	export default {
		name:'Pagination',
		 props: {
		  pagesize: [Number, String],//一页多少条
		  currentpage: [Number, String],//当前页
		  total:[Number, String],//总页数
		  options: [Object],  // 分页发生变化赋值给options
		  render: [Function], // 跳转触发的请求
		  layout: {
			type: String,
			default: 'total, sizes, prev, pager, next, jumper'
		  }
		},
		setup(props,context) {
			// 分页导航
			const handlePageChange = (val)=>{
				props.options.page = val;
				props.render();
			}
			//切换分页条数
			const handleSizeChange = (val) =>{
				props.options.limit = val;
				props.render();
			}
			return{
				handlePageChange,
				handleSizeChange
			}
		}
	}
	 
</script>

<style>
</style>

第二步使用

<template>
	<v-pagination
	:pagesize="query.limit"
	:total="pageTotal"
	:options="query"
	:render="getData">
	</v-pagination>
</template>
<script>
import {ref,reactive,getCurrentInstance} from "vue";
import vPagination from '../../components/pagination.vue';
export default {
		components: {
			vPagination,
		},
		setup() {
			const { proxy } = getCurrentInstance(); //获取上下文实例
			const tableData = ref([]),//表格数据
				  pageTotal = ref(0),总条数
				  query = reactive({//配置对应的查询参数
				  		appTimeStart:'',
						appTimeEnd:'',
						page: 1,
						limit:10,//page第几页,limit是一页几个
					});
		 	// 获取表格数据
			const getData = () => {
				 proxy.$request({
				  url: 'api/getList',
				  method: 'POST',
				  data:query
				}).then(res => {
					pageTotal.value = res.count;
					tableData.value = res.data;
				})
			};
			getData();	
			return {
				query,
				shortcuts,
				tableData,
				pageTotal,
				getData
			};		
		}
}
</script>

http://www.niftyadmin.cn/n/689732.html

相关文章

Mysql学习总结(32)——MySQL分页技术详解

1.什么是数据分页&#xff1a;数据分页就是将很多条记录像书本一样分页&#xff0c;每页显示多少行记录&#xff1b; 2.为什么要数据分页&#xff1a;当我们进行sql语句查询时&#xff0c;假如数据有成千上万行记录&#xff0c;如果在同一个页面去显示&#xff0c;那这个页面得…

ElementUi el-date-picker封装

前言&#xff1a;由于el-date-picker返回的是一个数组且没有格式化&#xff0c;使用起来并不是很方便&#xff0c;所有个人稍微封装了下&#xff0c;写的不好&#xff0c;有问题请多指教&#xff01; 第一步 新建vDatePicker.vue <template><el-date-picker v-model…

ACMUG

http://acmug.com/acmug-member/转载于:https://www.cnblogs.com/zengkefu/p/5072885.html

CMS本质上是什么

2015-121.数据可以任意取和构造&#xff0c;结构也很自由&#xff0c;不一定是“站点&#xff0d;栏目&#xff0d;文章&#xff0d;评论”。2.主要用于显示&#xff0c;前台不产生数据&#xff08;评论、浏览次数除外)。3.在模版进行循环、判断&#xff0c;也比后台写代码要方…

Java 面向对象编程_Java面向对象编程

面向对象的特点1.封装 2.继承 3.多态一、封装1. 类&#xff1a;把一类事物的静态属性和动态执行的操作组合在一起得到类。 抽象的2. 对象&#xff1a;类的实例 具体的 有生命周期3. 类的构造函数特点&#xff1a;函数名与类型相同&#xff1b;没有返回类型&#…

Vue3+ElementUi el-table简单封装

前言&#xff1a;一次简单的封装&#xff0c;还不够完善&#xff0c;主要是根据自己的需求封装的。。。直接贴代码&#xff01; 第一步 vTable.vue <template><el-table v-loading"config.loading"header-row-style"48px"height580border:class…

串联端接电阻对信号上升时间的影响

信号反射是信号完整性中一个最基本的问题&#xff08;因为阻抗不匹配产生反射波&#xff09;。串联端接是高速电路设计中是抑制信号反射最常用的措施。采用多大的端接电阻可以有效的解决信号反射的问题&#xff0c;通常采用仿真的方法来解决。也许你在做信号完整性仿真的时候会…

接收服务器返回的文件流并下载

下载或导出xlsx const exportExcel () >{proxy.$request({url: api/export,method: POST,responseType: arraybuffer,data:{//根据需求设置参数}}).then(response > {let fileName response.headers[content-disposition];//我们的fileName返回在headers&#xff0c;根…