代码实现展示:
<template> <div> <el-table :data="tableList" border style="width: 100%;"> <el-table-column align="center" type="index" label="序号" width="50" /> <el-table-column prop="id" header-align="center" align="center" label="缺陷ID" /> <el-table-column prop="name" header-align="center" align="center" label="名称" /> </el-table> <!-- 分页 --> <div class="pagination-container" align="center"> <el-pagination :current-page="pageData.currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pageData.size" :total="pageData.total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> </div> </template>
<script> export default { components: {}, data() { return { pageData: { total: 0,//总条数 size: 10,//默认每页显示10条 currentPage: 1,//默认显示第一页 }, start: 0, // 处理前端分页数据保存 end: 0, // 处理前端分页数据保存 tableData: [], tableList: [], //table前端分页后显示数据 dataVal: [ { id: 1, name: "测试1" }, { id: 2, name: "测试2" }, { id: 3, name: "测试3" }, { id: 4, name: "测试4" }, { id: 5, name: "测试5" }, { id: 6, name: "测试6" }, { id: 7, name: "测试7" }, { id: 8, name: "测试8" }, { id: 9, name: "测试9" }, { id: 10, name: "测试10" }, { id: 11, name: "测试11" }, ],//需要展示的所有数据 }; }, created() {}, mounted() {}, computed: {}, methods: { //获取数据的方法---假设现在获取到的数据就是dataVal,把this.dataVal赋给this.tableData,通过方法分段后,赋给this.tableList(table前端分页后显示数据)。 getTableData() { this.tableList = []; this.tableData = []; // table数据处理 this.tableData = this.dataVal; this.tableList = this.dataVal.slice(0, this.pageData.size); this.pageData.total = this.tableData.length; this.pageData.currentPage = 1; this.start = 0; this.end = this.pageData.size; }, // 分页点击方法 //改变每页展示的条数 handleSizeChange(val) { const preTable = this.tableData.slice(0, this.start); const LastTable = this.tableData.slice(this.end); this.tableData = preTable.concat(this.tableList).concat(LastTable); this.pageData.size = val; this.start = this.pageData.size * (this.pageData.currentPage - 1); this.end = this.pageData.size * (this.pageData.currentPage - 1) + this.pageData.size; this.tableList = this.tableData.slice( this.pageData.size * (this.pageData.currentPage - 1), this.pageData.size * (this.pageData.currentPage - 1) + this.pageData.size ); }, //改变页码 handleCurrentChange(val) { const preTable = this.tableData.slice(0, this.start); const LastTable = this.tableData.slice(this.end); this.tableData = preTable.concat(this.tableList).concat(LastTable); // 处理数据后分页 this.pageData.currentPage = val; this.start = this.pageData.size * (this.pageData.currentPage - 1); this.end = this.pageData.size * (this.pageData.currentPage - 1) + this.pageData.size; this.tableList = this.tableData.slice( this.pageData.size * (this.pageData.currentPage - 1), this.pageData.size * (this.pageData.currentPage - 1) + this.pageData.size ); console.log("显示tablelist", this.tableList); }, }, }; </script>
分页效果: