el-pagination分页优化
表格分页优化:
<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分页优化的更多相关文章
- 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...
- 【MySQL】分页优化
前段时间由于项目的原因,对一个由于分页而造成性能较差的SQL进行优化,现在将优化过程中学习到关于分页优化的知识跟大家简单分享下. 分页不外乎limit,offset,在这两个关键字中,limit其实不 ...
- Slider 滚动条 Pagination分页插件 JS Ajax 数据范围筛选 加载 翻页 笔记
入职以后的第二个任务 根据用户所选的价格范围 筛选数据 修复BUG - 筛选数据后 总数没有更新.列表显示错误.翻页加载错误 用到的一些知识点 jquery插件系列之 - Slider滑块 max ...
- MySQL 百万级分页优化
MySQL 百万级分页优化 http://www.jb51.net/article/31868.htm 一般刚开始学SQL的时候,会这样写 : , ; 但在数据达到百万级的时候,这样写会慢死 : , ...
- EasyUI基础入门之Pagination(分页)
前言 对于一些企业级的应用来说(非站点),页面上最为基本的内容也就是表格和form了.对于类似于ERP这类系统来说数据记录比較大,前端表格展示的时候必需得实现分页功能了.恰巧EasyUI就提供了分页组 ...
- el表达式 分页提交 中文乱码
el表达式 分页提交 中文乱码 网上找了很多资料,没能解决我的问题.并不是说网上的那些资料不好.而是不适用于我的问题吧. 看看的的问题: 原始页面 单击下一页 , 乱码. 引起的原因则是因为自己的js ...
- 使用Row_Number()分页优化
记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题 最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且 ...
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
- python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理
1.存储过程 delimiter // create procedure insert_data(in rows int) begin DECLARE n INT DEFAULT 1; drop ta ...
随机推荐
- Mysql 插入自增的最大版本号
有一个需求,在历史表中,一条数据,在最大版本号上进行自增 INSERT Biz_CourseStudyHistory ( contentStudyID, courseWareID, versionNO ...
- Spring MVC -- JSP标准标签库(JSTL)
JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭 ...
- MySQL之SQL语句的使用
SQL使用 mysql中的基本逻辑对象 mysql有这么几种对象 mysqld--->库---->表---->记录(由行和列组成)一条记录中的一列叫做字段 什么是关系型数据库 表与表 ...
- mongoDB杂项
密码更改:db.changeUserPassword('tank2','test'); 在这里我遇到了一个问题: mongod: error while loading shared librarie ...
- QT QML与C++混搭
"那些杀不死我的必使我更加强大"----尼采 QML与C++混合编程就是使用QML高效便捷地构建UI,而C++则用来实现业务逻辑和复杂算法. ML访问C++Qt集成了QML引擎和Q ...
- java8新特性五-Stream
继上次学习过Java8中的非常重要的Lambda表达式之后,接下来就要学习另一个也比较重要的知识啦,也就如标题所示:Stream,而它的学习是完全依赖于之前学习的Lambda表达式. Java 8 A ...
- TCP协议的11种状态及其变化过程?传输的内容又是什么?
在TCP的11种状态变迁中,我们需要用到TCP头部的三个标志位: 1.SYN,SYN=1表示这是一个连接请求报文或者连接接受报文 2.ACK,ACK=1,表示确认号生效 3.FIN,FIN=1表示发送 ...
- Linux08 文件系统
对于磁盘等各类存储设备中所有的数据都以0和1的概念,但对于用户来说,0和1是没有任何意义的,这时候就需要一种类似于“翻译”的机制存在于用户和磁盘之间,Linux中采用的是文件系统+虚拟文件系统(Vir ...
- Django重新添加字段然后迁移给定默认值依然迁移不生效
1.将对应app下的migrations文件夹下面的除了__init__.py文件外全部删除 2.delete from django_migrations where app='当前模型的app名称 ...
- python 之 前端开发( jQuery事件、动画效果、.each()、 .data())
11.58 事件 11.581 事件绑定方法与解绑 绑定事件: // 绑定方式一: $('.box1').click(function () { alert('绑定方式一') }); // 绑定方 ...