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 |  140 ++++++++++++++++++----------------------------
 1 files changed, 55 insertions(+), 85 deletions(-)

diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
index 40bc584..df73ceb 100644
--- a/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -1,112 +1,82 @@
+<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"
+      :pager-count="pagerCount"
+      :total="total"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+    />
+  </div>
+</template>
+
 <script lang="ts">
 export default {
-  name: 'Pagination'
+    name: 'Pagination'
 }
 </script>
 
 <script setup lang="ts">
 import { scrollTo } from '@/utils/scroll-to'
-import { PropType } from "vue";
+import { propTypes } from "@/utils/propTypes";
 
 const props = defineProps({
-  total: {
-    required: true,
-    type: Number
-  },
-  page: {
-    type: Number,
-    default: 1
-  },
-  limit: {
-    type: Number,
-    default: 20
-  },
-  pageSizes: {
-    type: Array as PropType<number[]>,
-    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
-  },
-  float: {
-    type: String,
-    default: 'right'
-  }
+    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)
-  }
+    get() {
+        return props.page
+    },
+    set(val) {
+        emit('update:page', val)
+    }
 })
 const pageSize = computed({
-  get() {
-    return props.limit
-  },
-  set(val){
-    emit('update:limit', val)
-  }
+    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)
-  }
+    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)
-  }
+    emit('pagination', { page: val, limit: pageSize.value })
+    if (props.autoScroll) {
+        scrollTo(0, 800)
+    }
 }
 </script>
 
-<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"
-			:pager-count="pagerCount"
-			:total="total"
-			@size-change="handleSizeChange"
-			@current-change="handleCurrentChange"
-		/>
-	</div>
-</template>
-
 <style lang="scss" scoped>
 .pagination-container {
-  background: #fff;
   padding: 32px 16px;
   .el-pagination{
     float: v-bind(float);

--
Gitblit v1.9.3