index.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <div class="pad-1">
  3. <el-pagination :current-page="currentPage" :page-size="pageSize" :page-sizes="[20, 40, 60, 80]" :total="total"
  4. :size="size" @size-change="handleSizeChange" @current-change="handlePageChange"
  5. layout="total, sizes, prev, pager, next" :disabled="disabled" :background="background" />
  6. </div>
  7. </template>
  8. <script setup lang="ts">
  9. import { ref, defineProps, defineEmits } from 'vue';
  10. import { ElPagination } from 'element-plus';
  11. import type { ComponentSize } from 'element-plus'
  12. interface Props {
  13. pageNum: number;
  14. pageSize: number;
  15. total: number;
  16. }
  17. const background = ref(false)
  18. const disabled = ref(false)
  19. const size = ref<ComponentSize>('small')
  20. const props = defineProps<Props>();
  21. const emit = defineEmits(['pageChange','sizeChange']);
  22. const currentPage = ref(props.pageNum);
  23. const pageSize = ref(props.pageSize);
  24. const total = props.total;
  25. const handlePageChange = (newPage: number) => {
  26. currentPage.value = newPage;
  27. emit('pageChange', newPage);
  28. };
  29. const handleSizeChange = (val: number) => {
  30. pageSize.value = val;
  31. emit('sizeChange', val);
  32. };
  33. </script>