diff --git a/sparta/components/base/pagination/src/index.vue b/sparta/components/base/pagination/src/index.vue index 419a5cf..50b2594 100644 --- a/sparta/components/base/pagination/src/index.vue +++ b/sparta/components/base/pagination/src/index.vue @@ -139,7 +139,7 @@ export default { data() { return { index: +this.pageIndex, //当前页码 - limit: +this.pageSize, //每页显示条数 + limit: 0, //每页显示条数 size: +this.total || 1, //总记录数 showPrevMore: false, showNextMore: false, @@ -211,8 +211,11 @@ export default { this.index = val || 1 }, - pageSize(val) { - this.limit = val || 10 + pageSize: { + immediate: true, + handler() { + this.handleSetPageSize() + } }, total(val) { @@ -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 @@ -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 + } } } } @@ -442,5 +457,4 @@ export default { } } } - - + \ No newline at end of file diff --git a/test/unit/specs/components/base/pagination.spec.js b/test/unit/specs/components/base/pagination.spec.js index b957090..4947755 100644 --- a/test/unit/specs/components/base/pagination.spec.js +++ b/test/unit/specs/components/base/pagination.spec.js @@ -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')