my-table/src/Pager.js

import {isEqual} from '$ui/utils/util'

const defaultPagerProps = {
  background: true,
  layout: 'total, ->, prev, pager, next'
}

export default {
  computed: {
    isPager() {
      return this.mode === 'pager'
    },
    pagerProps() {
      return {
        ...defaultPagerProps,
        ...this.pagination,
        pageSize: this.pageSize,
        total: this.total,
        currentPage: this.page
      }
    }
  },
  watch: {
    // 分页配置变化时出加载数据
    pagerProps: {
      immediate: true,
      handler(props, oldProps) {
        if (!isEqual(props, oldProps)) {
          this.currentPage = props.currentPage
          this.currentTotal = props.total
          this.currentPageSize = props.pageSize
          this.auto && this.$nextTick(this.load)
        }
      }
    }
  },
  methods: {
    handlePageChange(page) {
      this.currentPage = page
      /**
       * 分页页码变化时触发
       * @event page-change
       * @param {number} page 页码
       * @param {number} pageSize 页大小
       */
      this.$emit('page-change', page, this.currentPageSize)
      this.load()
    },
    handlePageSizeChange(size) {
      this.currentPage = 1;
      this.currentPageSize = size
      /**
       * 页大小变化时触发
       * @event size-change
       * @param {number} pageSize 页大小
       */
      this.$emit('size-change', size)
      this.load()
    },
    pagerLoaded(res) {
      this.list = this.freeze ? Object.freeze(res.list || []) : (res.list || [])
    }
  }
}