表格分页优化:

<template>
<el-pagination
small
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="pageSizes"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pageTotal"
/>
</template>
<script>
export default {
props: {
resetPageSize: {// 重置页面
type: Boolean,
default: false
},
dataTotal: {// 总条数
type: [String, Number],
default: 0
},
tableBegin: {// 总数据
type: Array,
default () {
return []
}
},
pageSizes: {// 分页条数:自定义[10,20,30]
type: Array,
default () {
return [15, 25, 50, 100]
}
}
},
data () {
return {
currentPage: 1,
pageSize: 15
}
},
computed: {
pageTotal () { // 分页前总条数:后台读取或直接计算传入数据
return this.dataTotal || this.tableBegin.length
}
},
watch: {
tableBegin: {
immediate: true,
handler () { // 加载数据:初始化、更新数据
this.resetSize()
this.updateData()
}
},
resetPageSize: {
immediate: false,
handler () { // 切换路由等:重置分页
this.resetSize()
}
}
},
methods: {
// 跳转到第几页
handleCurrentChange (val) {
this.currentPage = val
this.updateData()
},
// 设置分页条数
handleSizeChange (val) {
this.resetSize()
this.pageSize = val
this.updateData()
},
// 重置分页
resetSize(){
this.currentPage = 1
this.pageSize = this.pageSizes[0] || 15
},
// 更新数据
updateData(){
const begin = (this.currentPage - 1) * this.pageSize
const end = this.currentPage * this.pageSize
const tableData = this.tableBegin.slice(begin, end)
if (this.dataTotal) { // 后台请求:不返回数据
this.$emit('table-pagination-update', this.currentPage, this.pageSize)
} else {
this.$emit('table-pagination-change', tableData, this.currentPage, this.pageSize)
}
this.$emit('change', tableData, this.currentPage, this.pageSize)
}
}
}
</script>

如何使用:

    <!-- 页码 -->
<pagination
style="margin-top:10px"
:page-sizes="pageSizes"
:table-begin="tableBegin"
@table-pagination-change="getTablePagination"
/>
</div>
</template> <script>
import pagination from 'module-comp/tablePagination'
export default {
components: {
pagination
}, // 分页方法
getTablePagination (data, currentPage, pageSize) {
this.tableData = data
this.currentPage = currentPage
this.pageSize = pageSize
},

后台控制返回:

     <pagination
ref="pager"
style="margin-top:20px"
:data-total="dataTotal"
:reset-page-size="resetPageSize"
@table-pagination-update="tablePaginationLoad"
/> // 表格分页:点击分页后拉新业务
tablePaginationLoad (pagenum, pagesize) {
this.pagenum = pagenum - 1
this.pagesize = pagesize
this.featureSearchChange(this.keyWords,this.businessIdSet,false)
}, // 搜索:所有数据的刷新
featureSearchChange (val, businessId, resetPageSize) {
if (resetPageSize) { // 搜索时切换业务
this.pagenum = 0
this.resetPageSize = !this.resetPageSize
}
const businessIdSet = businessId || ''
const paramet = {
'business.id': this.globalPage ? businessIdSet : this.businessIdSet,
'pagenum': this.pagenum,
'pagesize': this.pagesize,
'authority': this.authority, // 个人或公共
'keyword': val || ''
}
this.onLoadData(paramet)
},
// 重置分页
// resetSize(){
// this.$refs.pager.resetSize()
// },
// 加载数据getAllData()
onLoadData (paramet) {
if (paramet) {
this.loadingData = true
getAllData(paramet).then(res => {
if (res && res.data && res.data.err_code === '0' && res.data.info) {
const result = res.data.info
this.dataTotal = res.data.num || 0 // 总条数
const tableData = [] // 展示数据
if (result && result.length > 0) { // 省略遍历自定义result
this.tableBegin = tableData
this.loadingData = false
} else {
this.tableBegin = []
this.loadingData = false
}
} else {
this.tableBegin = []
this.dataTotal = 0 // 总条数
this.$message.error(res.data ? res.data.err_desc : '获取特征数据失败')
this.loadingData = false
}
}).catch(() => {
this.loadingData = false
this.$message.error('获取数据失败')
})
}
}
}

-end-

el-pagination分页优化的更多相关文章

  1. 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...

  2. 【MySQL】分页优化

    前段时间由于项目的原因,对一个由于分页而造成性能较差的SQL进行优化,现在将优化过程中学习到关于分页优化的知识跟大家简单分享下. 分页不外乎limit,offset,在这两个关键字中,limit其实不 ...

  3. Slider 滚动条 Pagination分页插件 JS Ajax 数据范围筛选 加载 翻页 笔记

    入职以后的第二个任务  根据用户所选的价格范围 筛选数据 修复BUG - 筛选数据后 总数没有更新.列表显示错误.翻页加载错误 用到的一些知识点 jquery插件系列之 - Slider滑块 max ...

  4. MySQL 百万级分页优化

    MySQL 百万级分页优化 http://www.jb51.net/article/31868.htm 一般刚开始学SQL的时候,会这样写 : , ; 但在数据达到百万级的时候,这样写会慢死 : , ...

  5. EasyUI基础入门之Pagination(分页)

    前言 对于一些企业级的应用来说(非站点),页面上最为基本的内容也就是表格和form了.对于类似于ERP这类系统来说数据记录比較大,前端表格展示的时候必需得实现分页功能了.恰巧EasyUI就提供了分页组 ...

  6. el表达式 分页提交 中文乱码

    el表达式 分页提交 中文乱码 网上找了很多资料,没能解决我的问题.并不是说网上的那些资料不好.而是不适用于我的问题吧. 看看的的问题: 原始页面 单击下一页 , 乱码. 引起的原因则是因为自己的js ...

  7. 使用Row_Number()分页优化

    记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题   最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且 ...

  8. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

    本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...

  9. python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理

    1.存储过程 delimiter // create procedure insert_data(in rows int) begin DECLARE n INT DEFAULT 1; drop ta ...

随机推荐

  1. laravel 解决 Please provide a valid cache path 问题

    这是因为laravel的缓存路径没有找到 laravel缓存文件路径是在 config/cache.php中设置,默认存在storage文件夹中 解决: 创建目录: mkdir -p storage/ ...

  2. matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...

  3. 【LeetCode算法-27】Remove Element

    LeetCode第27题 Given an array nums and a value val, remove all instances of that value in-place and re ...

  4. [LeetCode] 250. Count Univalue Subtrees 计算唯一值子树的个数

    Given a binary tree, count the number of uni-value subtrees. A Uni-value subtree means all nodes of ...

  5. LeetCode:复原IP地址【93】

    LeetCode:复原IP地址[93] 题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: [&qu ...

  6. mysql查询之上升的温度,有趣的电影,超过5名学生的课,大国,反转性别, 换座位

    最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 1.上升的温度 给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天 ...

  7. 为什么选择.NETCore

     为什么选择.NETCore? 学习新的开发框架是一项巨大的投资.您需要学习如何在新框架中编写,构建,测试,部署和维护应用程序.作为开发人员,有许多框架可供选择,很难知道什么是最适合的.即使您正在使用 ...

  8. Windows常用网络命令(3)

    5.Netstat Netstat命令可以帮助网络管理员了解网络的整体使用情况.它可以显示当前正在活动的网络连接的详细信息,例如显示网络连接.路由表和网络接口信息,可以统计目前总共有哪些网络连接正在运 ...

  9. C++ 读取一个文件下所有文件的文件名

    Windows: #include<iostream> #include<string> #include <io.h> void readFileNameInDi ...

  10. 46 容器(五)——Vector,线程安全版的ArrayList

    在List中,最常用的三个List为: ArrayList 频繁查询时推荐使用 LinkedList 频繁增删时推荐使用 Vector 线程安全时推荐使用 Vector的底层跟ArrayList相差无 ...