|
@@ -1,4 +1,6 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
|
|
+import { useVModel } from '@vueuse/core'
|
|
|
|
|
+
|
|
|
interface PaginationProps {
|
|
interface PaginationProps {
|
|
|
total: number
|
|
total: number
|
|
|
currentPage?: number
|
|
currentPage?: number
|
|
@@ -28,15 +30,9 @@ const emit = defineEmits<{
|
|
|
(e: 'change', currentPage: number, pageSize: number): void
|
|
(e: 'change', currentPage: number, pageSize: number): void
|
|
|
}>()
|
|
}>()
|
|
|
|
|
|
|
|
-const currentPageValue = computed({
|
|
|
|
|
- get: () => props.currentPage,
|
|
|
|
|
- set: (val: number) => emit('update:currentPage', val)
|
|
|
|
|
-})
|
|
|
|
|
|
|
+const innerCurrentPage = useVModel(props, 'currentPage', emit, { passive: true })
|
|
|
|
|
+const innerPageSize = useVModel(props, 'pageSize', emit, { passive: true })
|
|
|
|
|
|
|
|
-const pageSizeValue = computed({
|
|
|
|
|
- get: () => props.pageSize,
|
|
|
|
|
- set: (val: number) => emit('update:pageSize', val)
|
|
|
|
|
-})
|
|
|
|
|
|
|
|
|
|
function handleChange(currentPage: number, pageSize: number) {
|
|
function handleChange(currentPage: number, pageSize: number) {
|
|
|
emit('change', currentPage, pageSize)
|
|
emit('change', currentPage, pageSize)
|
|
@@ -45,7 +41,7 @@ function handleChange(currentPage: number, pageSize: number) {
|
|
|
|
|
|
|
|
<template>
|
|
<template>
|
|
|
<div class="pagination-wrapper">
|
|
<div class="pagination-wrapper">
|
|
|
- <el-pagination v-model:current-page="currentPageValue" v-model:page-size="pageSizeValue" :total="total"
|
|
|
|
|
|
|
+ <el-pagination v-model:current-page="innerCurrentPage" v-model:page-size="innerPageSize" :total="total"
|
|
|
:page-sizes="pageSizes" :layout="layout" :background="background" :small="small" :disabled="disabled"
|
|
:page-sizes="pageSizes" :layout="layout" :background="background" :small="small" :disabled="disabled"
|
|
|
:hide-on-single-page="hideOnSinglePage" @change="handleChange" />
|
|
:hide-on-single-page="hideOnSinglePage" @change="handleChange" />
|
|
|
</div>
|
|
</div>
|
|
@@ -57,4 +53,4 @@ function handleChange(currentPage: number, pageSize: number) {
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
padding: 16px 0;
|
|
padding: 16px 0;
|
|
|
}
|
|
}
|
|
|
-</style>
|
|
|
|
|
|
|
+</style>
|