Pagination.vue 2.0 KB

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