Pagination.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div class="page_pagination" v-if="!(hidePagination)">
  3. <div class="pagination_desc">
  4. <slot name="paginationDesc"></slot>
  5. </div>
  6. <el-pagination
  7. :hide-on-single-page="props.hidesinglePage"
  8. :current-page="props.currentPage"
  9. :page-size="props.pageSize"
  10. :page-sizes="[20, 50, 100]"
  11. background
  12. :layout="(showPageSize ? 'sizes,' : '') + 'prev, pager, next'"
  13. :total="Number(props.totalNum)"
  14. @current-change="(val)=>emit('paginationChange',{type:'currentPage',val})"
  15. @size-change="(val)=>emit('paginationChange',{type:'pageSize',val})" />
  16. </div>
  17. </template>
  18. <script setup lang="ts">
  19. const props = defineProps({
  20. hidesinglePage:{
  21. type:Boolean,
  22. },
  23. hidePagination:{
  24. type:Boolean,
  25. default:false
  26. },
  27. currentPage:{
  28. type:Number,
  29. default:1
  30. },
  31. showPageSize:{
  32. type:Boolean,
  33. default:false
  34. },
  35. pageSize:{
  36. type:Number,
  37. default:20
  38. },
  39. totalNum:{
  40. type:Number,
  41. default:0
  42. },
  43. })
  44. const emit = defineEmits(['paginationChange'])
  45. </script>
  46. <style lang="scss" scoped>
  47. .pagination_desc{
  48. flex:1 1;
  49. color: #666;
  50. font-size: 14px;
  51. }
  52. </style>