pagination.vue 3.81 KB
<template>

  <div class="pagination m-20-0">
    <div v-if='pageFalg' class="mb-20">
      <em class="page">共【{{ totalPages }}】页</em> 
      <em class="page ml-5">跳转到<input type="text" class="t-center" style='width:40px;margin:0px 5px;height:30px;' v-model='pageS' @keyup.enter='goPage(pageS*1)'></em>
      <em class="page text-color-blue ml-10" style='cursor:pointer;' @click='goPage(pageS*1)' >Go>></em>  
    </div>
    
    <ul>

      <li>
        <a v-if="pageNo !=1" href="javascript:;" 
        @click="goPage(1)" class="page">首页</a>
        <span v-else class="page">首页</span>

      </li>

      <li>
        <a v-if="pageNo > 1" href="javascript:;" @click="goPage(pageNo - 1)" class="page">上一页</a>
        <span v-else class="page">上一页</span>
      </li>

      <li v-for="index in totalPages" v-show="totalPages<11">
        <a v-bind:class="{ 'active': pageNo == index*1 + 1 }" href="javascript:;" v-if="pageNo != index*1 + 1" @click="goPage(index*1 + 1)">{{index + 1}}</a>
        <span v-bind:class="{ 'active': pageNo == index*1 + 1 }" v-else>{{index*1 + 1}}</span>
      </li>

      <li v-for="index in prevnum" v-show="totalPages>10">
          <a v-bind:class="{ 'active': pageNo == index  }" 
          href="javascript:;" v-if="pageNo != index "
           @click="goPage(index )">{{index }}</a>
          <span v-bind:class="{ 'active': pageNo == index  }" v-else>{{index }}</span>
      </li>      
      <li v-for="index in nextnum"  v-show="totalPages>10" >
          <a v-bind:class="{ 'active': pageNo == index  }" 
          href="javascript:;" v-if="pageNo != index "
           @click="goPage(index )">{{index }}</a>
          <span v-bind:class="{ 'active': pageNo == index  }" v-else>{{index }}</span>
      </li>

      
      <li>
        <a v-if="pageNo < totalPages" @click="goPage(pageNo*1 + 1)" href="javascript:;" class="page">下一页</a>
        <span v-else class="page"> 下一页</span>
      </li>

       <li>
        <a v-if="totalPages>1 && pageNo!=totalPages" href="javascript:;" 
        @click="goPage(totalPages)" class="page">尾页</a>
        <span v-else class="page">尾页</span>

      </li>
    </ul>
  </div>
</template>

<script>
  module.exports = {

    props: {
      
      'pageFalg': {
        twoWay: true,
        type: String| Boolean ,
        default: false
      },
      'pageNo': {
        twoWay: true,
        type: String| Number ,
        default: 1
      },
      'totalPages': {
        twoWay: true,
        type:  String | Number,
        default: 0
      },
      pageS:{
         twoWay: true,
         type: Number,
        default: ''
      }
      // 类型错误报错   张欣欣change
//    'class': {
//      type: Array,
//      default: []
//    }
    },
    computed:{
        prevnum:function(){
          var arr=[];
          var n=this.pageNo-1;
          if(n<=0){
            return arr
          }         
          while(n>0){
            if(arr.length<3){
              arr.unshift(n);
            }            
            n-=1;
          }
          return arr;
        },nextnum:function(){
          var arr=[];
          var n=this.pageNo;
          for(var i=0;i<4;i++){
            if(n<this.totalPages){              
              arr.push(n*1)
              n+=1;
            }
          }
          return arr;
        }
    },
    methods: {
      goPage: function (num) {
        console.log(num)
        if(num>this.totalPages){
           layer.msg('输入的页码不可大于总页码数!')
           return;
        }else if(num==''){
          layer.msg('页码不可为空!')
           return;
        }else if(num<=0){
          layer.msg('页码不可小于等于0!')
           return;
        }

       
        this.pageNo = num;
        this.pageS='';
        this.$dispatch('page-change');
      }
    }
  };
</script>