vue+element处理前端分页

需求:后台返回所有数据,前端实现分页效果。

由于数据量太大,加载很慢,页面也会造成卡顿现象,做成滚动条形式的不太合适

 

<div class="same-table">
       <el-table
              :data="dataShow"
              border
              ref="recordTable"
              :header-cell-style="{textAlign: 'center'}"
              :cell-style="{ textAlign: 'center' }"
              style="width: 100%;"
              height="400">
              <el-table-column prop="projectName" label="项目名称" fixed></el-table-column>
        </e-table>
</div>

  

data(){
    return {
        rightsList: [],
        totalPageData: [],  //数组内套数组,每个数组就是一页数据
        currentPage: 1,     //当前显示页码
        pageSize: 10,       //每页显示的数量
        pageNum: 1,         //总页数
       totals: 0,          //总数量
       dataShow: [],       //当前要显示的数据 
    }
},
created() {
     this.getSystemDataSource();
},
methods() {
     //获取本月数据来源具体信息
       getSystemDataSource() {
          systemDataSourceApi.systemDataSource().then(res => {
              this.loginUser = res.result.loginUser;
              this.rightsList = res.result.pushData;
              this.totals = res.result.pushData.length;
              this.calcPageData();
          })
      },
      //计算页数
      calcPageData() {
             if (this.rightsList.length > 1) {
                 this.pageNum = Math.ceil(this.rightsList.length / this.pageSize) || 1;
                   console.log(this.pageNum, '总页数');
                }
             for(let i = 0; i< this.pageNum; i++) {
                    //每一页都是一个数组,根据每页显示数量 将后台的数据分割到 每一页,假设pageSize为10, 则第一页是1-10条,即slice(0,10)
                    this.totalPageData[i] = this.rightsList.slice(this.pageSize * i, this.pageSize * (i+1));
              }
              //获取到数据后显示第一页内容,数组下标是从0开始,所以要减1
              this.dataShow = this.totalPageData[this.currentPage - 1];
              console.log(this.rightsList, '要显示的数据')
            },
            //每页显示的条数改变时候触发
            handleSizeChange(newPageSize) {
                this.pageSize = newPageSize;
                this.calcPageData();
            },
            //当前页改变时候触发
            handleCurrentChange(newPageSize) {
                this.currentPage  = newPageSize;
                this.dataShow = this.totalPageData[newPageSize - 1];
            }
}

  

posted @ 2021-06-24 15:23  紫诺花开  阅读(716)  评论(0编辑  收藏  举报