sa-pagination.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const SaPagination = {
  2. template: `
  3. <el-pagination class="sa-pagination" v-model:current-page="paginationData.page" v-model:page-size="paginationData.list_rows"
  4. :page-sizes="[10, 50, 100]" :pager-count="5" layout="total, sizes, prev, pager, next, jumper"
  5. :total="paginationData.total" @size-change="onChangeSize" @current-change="onChangeCurrent">
  6. </el-pagination>`,
  7. emit: ['update:modelValue', 'pagination-change'],
  8. props: {
  9. modelValue: {
  10. type: Object,
  11. default: {
  12. page: 1,
  13. list_rows: 10,
  14. total: 0,
  15. }
  16. }
  17. },
  18. setup(props, { emit }) {
  19. const { ref } = Vue
  20. const paginationData = ref(props.modelValue)
  21. function onChangeSize(e) {
  22. paginationData.value.list_rows = e
  23. emit('update:modelValue', paginationData.value)
  24. emit('pagination-change')
  25. }
  26. function onChangeCurrent(e) {
  27. paginationData.value.page = e
  28. emit('update:modelValue', paginationData.value)
  29. emit('pagination-change')
  30. }
  31. return {
  32. paginationData,
  33. onChangeSize,
  34. onChangeCurrent
  35. }
  36. }
  37. }