PageNation.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div>
  3. <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :page-sizes="[10, 20, 30, 40]"
  4. :small="small" :disabled="disabled" :background="background" layout="total, sizes, prev, pager, next, jumper"
  5. :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
  6. </div>
  7. </template>
  8. <script>
  9. import { ref, onMounted, toRefs, watch } from 'vue'
  10. import task from '@/api/task'
  11. export default {
  12. props: {
  13. totals: {
  14. type: Number,
  15. required: true,
  16. },
  17. pageNum: {
  18. type: Number,
  19. required: true
  20. },
  21. pageSize: {
  22. type: Number,
  23. required: true
  24. }
  25. },
  26. setup(props, { emit }) {
  27. let currentPage = ref(1)//页码
  28. let pageSize = ref(10)//页数
  29. let small = ref(false)
  30. let disabled = ref(false)
  31. let background = ref(false)
  32. let total = ref(100)//总数
  33. function reload() {
  34. currentPage.value = props.pageNum
  35. pageSize.value = props.pageSize
  36. total.value = props.totals
  37. }
  38. function handleSizeChange(e) {//每页条数
  39. pageSize.value = e
  40. task.getTask({
  41. pageno: currentPage.value - 0,
  42. pagesize: pageSize.value - 0
  43. }).then(res => {
  44. total.value = res.count
  45. emit("pageBack",res.data)
  46. })
  47. }
  48. function handleCurrentChange(e) {//页码
  49. currentPage.value = e
  50. task.getTask({
  51. pageno: currentPage.value - 0,
  52. pagesize: pageSize.value - 0
  53. }).then(res => {
  54. total.value = res.count
  55. emit("pageBack",res.data)
  56. })
  57. }
  58. onMounted(() => {
  59. reload()
  60. })
  61. return {
  62. currentPage,
  63. pageSize,
  64. small,
  65. disabled,
  66. background,
  67. total,
  68. reload,
  69. handleCurrentChange,
  70. handleSizeChange,
  71. }
  72. }
  73. }
  74. </script>
  75. <style lang="scss" scoped></style>