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 ...
随机推荐
- Software Engineering Continuous Integration Eclipse Mylyn
- nmon报告分析
nmon结果说明及分析 2018年09月29日 16:12:10 Jio_2018 阅读数 2334 使用nmon analyser生成的结果文件包含了N多个sheet页,下面只是结合个人经验对几 ...
- Jmeter里http接口的执行顺序是顺序执行
1,如果在一个线程组里则是顺序执行 2,如果不在一个线程组里,就勾选独立运行各个线程组,在一个运行结束后启动下一个线程组
- Microsoft OLE DB Provider for Oracle 在哪个安装包中
http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-098155.html oracle odbc downlo ...
- [LeetCode] 88. Merge Sorted Array 合并有序数组
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...
- 【Android Studio】Android实现跳转功能
最近在玩Esp32,需要APP,顺带学了下这方面的东西. 主要实现功能: 从主 mainActivity 跳转到otherActivity. 新建一个hello工程,添加 otherActivit ...
- FPGA程序编译后逻辑单元数为0
问题 FPGA代码写完后编译不报错,但是显示使用的逻辑单元数(Total logic elements)为0.当然程序也不工作. 我用的是Intel Altera FPGA,verilog语言,在Qu ...
- hexo 博客如何更换电脑
如何在更换电脑后继续使用Hexo部署博客 重要目录 _config.yml package.json scaffolds/ source/ themes/ 在新电脑上配置hexo环境:安装node.j ...
- [JAVA] maven 阿里云节点 settings.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...
- mycat实现读写分离
1 mysql已经配置好了主从 2 linux 安装java环境 3 linux 安装mycat cd /usr/local # 下载mycat wget http://dl.mycat.io/1.6 ...