dcc
2024-06-13 3616db170333df7d668c97323344335b52c4153c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<template>
    <div :class="{'hidden':hidden}" class="pagination-container">
      <el-pagination
        :background="background"
        v-model:current-page="currentPage"
        v-model:page-size="pageSize"
        :layout="layout"
        :page-sizes="pageSizes"
        :total="total"
        v-bind="$attrs"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
      />
    </div>
  </template>
  
  <script setup>
  import { computed } from 'vue';
    const props = defineProps({
        total: {
            required: true,
            type: Number
        },
        page: {
            type: Number,
            default: 1
        },
        limit: {
            type: Number,
            default: 10
        },
        pageSizes: {
            type: Array,
            default() {
                return [10, 15, 20, 30, 50];
            }
        },
        layout: {
            type: String,
            default: "total, sizes, prev, pager, next, jumper"
        },
        background: {
            type: Boolean,
            default: true
        },
        hidden: {
            type: Boolean,
            default: false
        },
    })
 
    const emit = defineEmits(['update:page','update:limit','pagination'])
    
    const currentPage = computed({
        get() {
          return props.page;
        },
        set(val) {
          emit("update:page", val);
        }
    })
 
    const pageSize = computed({
        get() {
          return props.limit;
        },
        set(val) {
          emit("update:limit", val);
        }
    })
    
    const handleSizeChange = (val)=>{
      emit("pagination", { page: currentPage.value, limit: val });
    }
 
    const handleCurrentChange = (val)=>{
      emit("pagination", { page: val, limit: pageSize.value });
    }
 
  </script>
  
  <style lang="scss" scoped>
  .pagination-container {
    /* background: #fff; */
    padding: 20px 0 20px 0;
    text-align: center;
    width: 100%;
    :deep(.el-pagination){
      display: flex;
      justify-content: center;
    }
    .hidden{
      display: none;
    }
  }
 
  .el-pagination.is-background .el-pager li:not(.disabled).active{
    background: #0056FF;
  }
  </style>