Skip to content

Commit 74d225c

Browse files
committed
重构:在 config 列表,完整引入分页
1 parent 0506c4e commit 74d225c

File tree

2 files changed

+27
-59
lines changed

2 files changed

+27
-59
lines changed

src/components/Pagination/index.vue

Lines changed: 25 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,43 @@
1+
<!-- 基于 ruoyi-vue3 的 Pagination 重构,核心是简化无用的属性,并使用 ts 重写 -->
12
<template>
2-
<div :class="{ hidden }" class="pagination-container">
3-
<el-pagination
4-
:background="background"
5-
v-model:current-page="currentPage"
6-
v-model:page-size="pageSize"
7-
:layout="layout"
8-
:page-sizes="pageSizes"
9-
:pager-count="pagerCount"
10-
:total="total"
11-
@size-change="handleSizeChange"
12-
@current-change="handleCurrentChange"
13-
/>
14-
</div>
3+
<el-pagination
4+
v-show="total > 0"
5+
class="float-right mt-15px mb-15px"
6+
:background="true"
7+
layout="total, sizes, prev, pager, next, jumper"
8+
:page-sizes="[10, 20, 30, 50]"
9+
v-model:current-page="currentPage"
10+
v-model:page-size="pageSize"
11+
:pager-count="pagerCount"
12+
:total="total"
13+
@size-change="handleSizeChange"
14+
@current-change="handleCurrentChange"
15+
/>
1516
</template>
16-
1717
<script setup>
18-
// TODO 芋艿:ts 重写
19-
// TODO 芋艿:scrollTo 接入
20-
// import { scrollTo } from '@/utils/scroll-to'
2118
import { computed } from 'vue'
2219
2320
const props = defineProps({
21+
// 总条目数
2422
total: {
2523
required: true,
2624
type: Number
2725
},
26+
// 当前页数:pageNo
2827
page: {
2928
type: Number,
3029
default: 1
3130
},
31+
// 每页显示条目个数:pageSize
3232
limit: {
3333
type: Number,
3434
default: 20
3535
},
36-
pageSizes: {
37-
type: Array,
38-
default() {
39-
return [10, 20, 30, 50]
40-
}
41-
},
36+
// 设置最大页码按钮数。 页码按钮的数量,当总页数超过该值时会折叠
4237
// 移动端页码按钮的数量端默认值 5
4338
pagerCount: {
4439
type: Number,
4540
default: document.body.clientWidth < 992 ? 5 : 7
46-
},
47-
layout: {
48-
type: String,
49-
default: 'total, sizes, prev, pager, next, jumper'
50-
},
51-
background: {
52-
type: Boolean,
53-
default: true
54-
},
55-
autoScroll: {
56-
type: Boolean,
57-
default: true
58-
},
59-
hidden: {
60-
type: Boolean,
61-
default: false
6241
}
6342
})
6443
@@ -68,6 +47,7 @@ const currentPage = computed({
6847
return props.page
6948
},
7049
set(val) {
50+
// 触发 update:page 事件,更新 limit 属性,从而更新 pageNo
7151
emit('update:page', val)
7252
}
7353
})
@@ -76,32 +56,20 @@ const pageSize = computed({
7656
return props.limit
7757
},
7858
set(val) {
59+
// 触发 update:limit 事件,更新 limit 属性,从而更新 pageSize
7960
emit('update:limit', val)
8061
}
8162
})
82-
function handleSizeChange(val) {
63+
const handleSizeChange = (val) => {
64+
// 如果修改后超过最大页面,强制跳转到第 1 页
8365
if (currentPage.value * val > props.total) {
8466
currentPage.value = 1
8567
}
68+
// 触发 pagination 事件,重新加载列表
8669
emit('pagination', { page: currentPage.value, limit: val })
87-
if (props.autoScroll) {
88-
// scrollTo(0, 800)
89-
}
9070
}
91-
function handleCurrentChange(val) {
71+
const handleCurrentChange = (val) => {
72+
// 触发 pagination 事件,重新加载列表
9273
emit('pagination', { page: val, limit: pageSize.value })
93-
if (props.autoScroll) {
94-
// scrollTo(0, 800)
95-
}
9674
}
9775
</script>
98-
99-
<style scoped>
100-
.pagination-container {
101-
background: #fff;
102-
padding: 32px 16px;
103-
}
104-
.pagination-container.hidden {
105-
display: none;
106-
}
107-
</style>

src/views/infra/config/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
range-separator="-"
3737
start-placeholder="开始日期"
3838
end-placeholder="结束日期"
39-
:default-time="[new Date(0, 0, 0, 0, 0, 0), new Date(0, 0, 0, 23, 59, 59)]"
39+
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
4040
/>
4141
</el-form-item>
4242
<el-form-item>
@@ -103,8 +103,8 @@
103103
</template>
104104
</el-table-column>
105105
</el-table>
106+
<!-- 分页 -->
106107
<Pagination
107-
v-show="total > 0"
108108
:total="total"
109109
v-model:page="queryParams.pageNo"
110110
v-model:limit="queryParams.pageSize"

0 commit comments

Comments
 (0)