elementui分页二次封装以及前端假分页+页面序号

后端没有返回序号,前端可根据:
当前页面 * 每页展示的条数 - 每页展示的条数 + 当前下标index +1
以展示序号

在这里插入图片描述


      pageParamsRight: {
    
    
        total: 0,
        pageNum: 1,
        pageSize: 9,
      },
   <el-col >{
    
    {
    
    pageParamsRight.pageNum * 9 - 9 + index + 1}}</el-col>

前端分页

前端是接口返回全部内容,然后用js来分
后端是指前端通过请求页码 每页展示多少条数据,后端直接返回当前页的参数

前端分页缺点:第一次显示慢,加载时用户体验不好。数据不是实时的
优点:换页时用户体验好

基本代码:


   pageParamsRight: {
    
    
        total: 0,
        pageNum: 1,
        pageSize: 9,
      },

//网路请求后的AllList 
//pageParamsRight的pageNum表示当前是第几页   9表示该页面展示的多少条
  this.list = this.AllList.slice(
          (this.pageParamsRight.pageNum - 1) * 9,
          this.pageParamsRight.pageNum * 9
        );

结合element-ui分页 可达到分页效果,当点击下一页时,再次对请求回的全部数据进行截取,代码如上.

下面是我对element-ui分页进行了二次封装

新建myPagination.vue文件

<template>
  <div id="my_page">
    <el-pagination
      background
      :pager-count="5"
      class="pageCls"
      :page-sizes="pageSizes"
      :current-page.sync="pageParams.pageNum"
      :page-size="pageParams.pageSize"
      :total="pageParams.total"
      @size-change="onPageSizeChange"
      @current-change="onCurrentPageChange"
      layout="prev, pager, next, total,jumper"
    ></el-pagination>
  </div>
</template>

<script>
/**接收的参数:
 * pageParams:{
 *      pageNum: 1,
        pageSize: 10,
        total: 0,
 * }
 pageSizes
 * 
 */
const PAGE_SIZES = [10, 20, 30, 40, 50, 100];

export default {
    
    
  name: "Pagination",
  props: {
    
    
    pageParams: {
    
    
      type: Object,
      default: {
    
    
        pageNum: 1,
        pageSize: 10,
        total: 0,
      },
    },
    pageSizes: {
    
    
      type: Array,
      default() {
    
    
        return PAGE_SIZES;
      },
    },
  },
  data() {
    
    
    return {
    
    
      PAGE_SIZES,
    };
  },
  computed: {
    
    },
  watch: {
    
    },
  methods: {
    
    
    onPageSizeChange(val) {
    
    
      this.$emit("pageParamsChange", {
    
    
        ...this.pageParams,
        pageSize: val,
      });
    },
    onCurrentPageChange(val) {
    
    
      this.$emit("pageParamsChange", {
    
    
        ...this.pageParams,
        pageNum: val,
      });
    },
  },
};
</script>

<style lang="scss" >
.pagination-container {
    
    
  background: #fff;
  padding: 32px 16px;
}
.pagination-container.hidden {
    
    
  display: none;
}

#my_page {
    
    
  font-weight: 400;
  .el-input__inner {
    
    
    color: #fff;
    height: 28px;
    border-radius: 3px;
    border: 1px solid rgba($color: #a6bd2c, $alpha: 0.4);
    background: transparent;
  }
  .el-pagination__jump {
    
    
    font-size: 12px;
    font-family: MicrosoftYaHei;
    color: #ffffff;
    line-height: 28px;
    margin-left:9px ;
  }
  .el-pagination__total {
    
    
    display: inline-block;
    font-size: 12px;
    line-height: 28px;
    font-family: MicrosoftYaHei;
    color: #cad7eb;
    padding-left: 10px;
    margin: 0;
  }
  .number {
    
    
    font-weight: 400;
    padding: 0;
    width: 25px;
    height: 28px;
    background: rgba($color: #abbb49, $alpha: 0.4);
    color: #fff;
    border-radius: 50%;
    font-size: 14px;
    font-family: MicrosoftYaHei;
    color: #ffffff;
    line-height: 28px;
  }
  .active {
    
    
    background: #dd8f00;
  }
  // 省
  .el-icon-more {
    
    
    background: transparent;
    color: #fff;
  }
  .btn-prev,
  .btn-next {
    
    
    background: rgba($color: #abbb49, $alpha: 0.4);
    color: #fff;
    border-radius: 60%;
    height: 28px;
  }
}
</style>

在main.js中以入,并注册成全局组件

import Pagination from "@/components/myPagination.vue";
// 全局组件挂载
Vue.component("Pagination", Pagination);

在局部组件中,就可以使用了

     <Pagination
        :pageParams="pageParamsRight"
        @pageParamsChange="CurrentTaskChange"
      />

data(){
    
    
	return:{
    
    
	      pageParamsRight: {
    
    
	         total: 0,
	         pageNum: 1,
	         pageSize: 9,
     	},
	}
}


    // 切换分页  做出相应操作等等
    CurrentTaskChange(val) {
    
    
      // this.initQuery.pagenum = val.pageNum;
    },

猜你喜欢

转载自blog.csdn.net/qq_38594056/article/details/118539987