From f801f4fb11ff8ca08417a9ddf0231fb570fa26e3 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 24 七月 2023 16:47:51 +0800 Subject: [PATCH] fix 修复 固定页面header穿模问题 --- src/components/Pagination/index.vue | 143 +++++++++++++++++++++-------------------------- 1 files changed, 63 insertions(+), 80 deletions(-) diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue index 38de953..df73ceb 100644 --- a/src/components/Pagination/index.vue +++ b/src/components/Pagination/index.vue @@ -14,92 +14,75 @@ </div> </template> -<script setup> -import { scrollTo } from '@/utils/scroll-to' - -const props = defineProps({ - total: { - required: true, - type: Number - }, - page: { - type: Number, - default: 1 - }, - limit: { - type: Number, - default: 20 - }, - pageSizes: { - type: Array, - default() { - return [10, 20, 30, 50] - } - }, - // 绉诲姩绔〉鐮佹寜閽殑鏁伴噺绔粯璁ゅ��5 - pagerCount: { - type: Number, - default: document.body.clientWidth < 992 ? 5 : 7 - }, - layout: { - type: String, - default: 'total, sizes, prev, pager, next, jumper' - }, - background: { - type: Boolean, - default: true - }, - autoScroll: { - type: Boolean, - default: true - }, - hidden: { - type: Boolean, - default: false - } -}) - -const emit = defineEmits(); -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) - } -}) -function handleSizeChange(val) { - if (currentPage.value * val > props.total) { - currentPage.value = 1 - } - emit('pagination', { page: currentPage.value, limit: val }) - if (props.autoScroll) { - scrollTo(0, 800) - } +<script lang="ts"> +export default { + name: 'Pagination' } -function handleCurrentChange(val) { - emit('pagination', { page: val, limit: pageSize.value }) - if (props.autoScroll) { - scrollTo(0, 800) - } -} - </script> -<style scoped> +<script setup lang="ts"> +import { scrollTo } from '@/utils/scroll-to' +import { propTypes } from "@/utils/propTypes"; + +const props = defineProps({ + total: propTypes.number, + page: propTypes.number.def(1), + limit: propTypes.number.def(20), + pageSizes: { + type: Array as PropType<number[]>, + default: () => [10, 20, 30, 50] + }, + // 绉诲姩绔〉鐮佹寜閽殑鏁伴噺绔粯璁ゅ��5 + pagerCount: propTypes.number.def(document.body.clientWidth < 992 ? 5 : 7), + layout: propTypes.string.def('total, sizes, prev, pager, next, jumper'), + background: propTypes.bool.def(true), + autoScroll: propTypes.bool.def(true), + hidden: propTypes.bool.def(false), + float: propTypes.string.def('right') +}) + +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) + } +}) +function handleSizeChange(val: number) { + if (currentPage.value * val > props.total) { + currentPage.value = 1 + } + emit('pagination', { page: currentPage.value, limit: val }) + if (props.autoScroll) { + scrollTo(0, 800) + } +} +function handleCurrentChange(val: number) { + emit('pagination', { page: val, limit: pageSize.value }) + if (props.autoScroll) { + scrollTo(0, 800) + } +} +</script> + +<style lang="scss" scoped> .pagination-container { - background: #fff; padding: 32px 16px; + .el-pagination{ + float: v-bind(float); + } } .pagination-container.hidden { display: none; } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3