| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | <template>  <div :class="{'hidden':hidden}"       class="pagination-container">    <!-- :background="background" -->    <el-pagination :current-page.sync="currentPage"                   :page-size.sync="pageSize"                   :layout="layout"                   :page-sizes="pageSizes"                   :total="total"                   v-bind="$attrs"                   @size-change="handleSizeChange"                   @current-change="handleCurrentChange" />  </div></template><script>import { scrollTo } from '@/utils/scroll-to'import { Searchs } from '@/helpers'export default {  name: 'Pagination',  props: {    total: {      required: true,      type: Number    },    page: {      type: Number,      default: 1    },    limit: {      type: Number,      default: 10    },    pageSizes: {      type: Array,      default () {        return [10, 20, 30, 50]      }    },    layout: {      type: String,      default: 'total,sizes,prev, pager, next, jumper'    },    background: {      type: Boolean,      default: true    },    autoScroll: {      type: Boolean,      default: true    },    hidden: {      type: Boolean,      default: false    },    sync: {      type: Boolean,      default: false    }  },  computed: {    currentPage: {      get () {        console.log(this.page)        return this.page      },      set (val) {        this.$emit('update:page', val)      }    },    pageSize: {      get () {        return this.limit      },      set (val) {        this.$emit('update:limit', val)      }    }  },  mounted() {    if (this.sync) {      const searchs = new Searchs(this.$route.fullPath)      const active = searchs.get()      // for (const key in active.page) {      //   if (active.page.hasOwnProperty(key)) {      //     const item = active.page[key];      //     this[key] = item      //     // this.$emit('update:' + key, item)      //   }      // }      this.$emit('update:page', active.page.page)      this.$emit('currentPage', active.page.page)      // this.page = active.page.page    }  },  methods: {    syncStore() {      if (this.sync) {        const searchs = new Searchs(this.$route.fullPath)        searchs.update(this._props, undefined, 'page')      }    },    handleSizeChange (val) {      this.$emit('pagination', { page: this.currentPage, limit: val })      if (this.autoScroll) {        scrollTo(0, 800)      }      this.syncStore()    },    handleCurrentChange (val) {      this.$emit('pagination', { page: val, limit: this.pageSize })      if (this.autoScroll) {        scrollTo(0, 800)      }      this.syncStore()    }  }}</script><style scoped>.pagination-container {  background: #fff;  padding: 32px 16px;  width: 100%;  display: flex;  flex-direction: row;  justify-content: center;}.pagination-container.hidden {  display: none;}</style>
 |