Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 🎸 Pagination调整pagesize逻辑 #172

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 21 additions & 7 deletions sparta/components/base/pagination/src/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ export default {
data() {
return {
index: +this.pageIndex, //当前页码
limit: +this.pageSize, //每页显示条数
limit: 0, //每页显示条数
size: +this.total || 1, //总记录数
showPrevMore: false,
showNextMore: false,
Expand Down Expand Up @@ -211,8 +211,11 @@ export default {
this.index = val || 1
},

pageSize(val) {
this.limit = val || 10
pageSize: {
immediate: true,
handler() {
this.handleSetPageSize()
}
},

total(val) {
Expand All @@ -226,8 +229,8 @@ export default {
pageSizes: {
handler(val, oldVal) {
// !!这里为什么要判断长度或第一个值,是因为使用方在外面使用的时候大部分情况是重新赋值的,这种情况下,虽然值没变,但还会触发这里,所以需要判断是否真正改变
if (val?.length && (val?.length !== oldVal?.length || val[0] !== oldVal[0])) {
this.limit = val[0]
if (val?.length && (val?.length !== oldVal?.length || val?.join('') !== oldVal?.join(''))) {
this.handleSetPageSize()
}
},
immediate: true
Expand Down Expand Up @@ -285,6 +288,18 @@ export default {
this.$nextTick(() => {
this.$refs.jumperInput?.$refs?.input?.focus?.()
})
},

handleSetPageSize() {
if(this.pageSizes?.length) {
if(this.pageSizes.includes(this.pageSize)) {
this.limit = this.pageSize
} else {
this.limit = this.pageSizes[0]
}
} else {
this.limit = this.pageSize || 10
}
}
}
}
Expand Down Expand Up @@ -442,5 +457,4 @@ export default {
}
}
}
</style>

</style>
7 changes: 5 additions & 2 deletions test/unit/specs/components/base/pagination.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,13 @@ describe('Pagination', () => {
})

it('size-change', async () => {
await wrapper.setData({ layout: 'sizes,jumper', pageSizes: [5, 10, 15, 20, 25] })
await wrapper.setData({ layout: 'sizes,jumper', pageSize: 8, pageSizes: [5, 10, 15, 20, 25] })
expect(wrapper.find('.sp-selectInput__show').val()).to.be.equal('5条/页')
await wrapper.setData({ layout: 'sizes,jumper', pageSize: 10, pageSizes: [5, 10, 15, 20, 25] })
expect(wrapper.find('.sp-selectInput__show').val()).to.be.equal('10条/页')
await wrapper.findAll('.align--middle li').wrappers[1].trigger('click')
expect(wrapper.find('.align--middle .is--checked').text()).to.be.equal('1')
expect(wrapper.vm.currentPageSize).to.be.equal(5)
expect(wrapper.vm.currentPageSize).to.be.equal(10)
expect(wrapper.find('.sp-pagination__sizes').exists()).to.be.true
await wrapper.find('.sp-pagination__sizes .sp-select').trigger('click')
await wrapper.findAll('.sp-select-list .sp-option').wrappers[3].trigger('click')
Expand Down
Loading