From de33c5d48adb55b940df24508e710f389caa7302 Mon Sep 17 00:00:00 2001 From: zq <136432190602163.com> Date: Wed, 16 Jul 2025 10:44:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=A1=B5=E7=BB=84=E4=BB=B6=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E9=80=BB=E8=BE=91=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Page.vue | 234 +++++++++++------------------- src/components/Page2.vue | 284 ++++++++++++++++++++++++++++++++++++ src/views/agent/checkOrderList.vue | 285 +++++++++++++++++++++---------------- 3 files changed, 528 insertions(+), 275 deletions(-) create mode 100644 src/components/Page2.vue diff --git a/src/components/Page.vue b/src/components/Page.vue index 9cedf6f..f1d42c1 100644 --- a/src/components/Page.vue +++ b/src/components/Page.vue @@ -1,20 +1,20 @@ @@ -39,47 +41,52 @@ import GuipButton from '@/components/GuipButton.vue'; export default { name: 'Pagination', - components:{GuipButton}, + components: { GuipButton }, props: { - // 接口URL - apiUrl: { - type: String, - required: true + // 当前页码 + currentPage: { + type: Number, + default: 1 + }, + // 是否有下一页 + hasNextPage: { + type: Boolean, + default: false + }, + // 总记录数 + totalRecords: { + type: [Number, String], + default: 0 }, // 每页条数 pageSize: { type: Number, default: 10 }, - // 其他请求参数 - extraParams: { - type: Object, - default: () => ({}) + // 是否正在加载 + isLoading: { + type: Boolean, + default: false } }, data() { return { - page: 1, - jumpPage: 1, - end_page:0, - hasNextPage: false, - minId: null, - maxId: null, - totalRecords: 0, - buttonType:'', - totalPages: 1, - isLoading: false, - token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3NTAwNTM3MjQsIm5iZiI6MTc1MDA1MzcyNCwiZXhwIjoxNzUyNjQ1NzI0LCJ1c2VyIjoic3VidXNlciIsImxvZ2luX3R5cGUiOjAsImFpZCI6IjEifQ.xyIqBLelB-k6jCifgRevBJTyg_Qrm6m1e4OcHhOpepU', + jumpPage: this.currentPage, + endPage: false } }, computed: { + // 总页数 + totalPages() { + return Math.ceil(this.totalRecords / this.pageSize) + }, // 是否显示首页按钮 showFirstPage() { - return this.page > 2 + return this.currentPage > 2; }, // 是否显示上一页按钮 showPrevPage() { - return this.page > 1 + return this.currentPage > 1 || this.endPage }, // 是否显示当前页码 showCurrentPage() { @@ -87,11 +94,11 @@ export default { }, // 是否显示下一页按钮 showNextPage() { - return this.hasNextPage + return this.hasNextPage && !this.endPage }, // 是否显示尾页按钮 showLastPage() { - return !(this.end_page > 0) || this.hasNextPage + return !this.endPage }, // 是否显示跳转 showJump() { @@ -99,157 +106,78 @@ export default { }, // 是否显示总记录数 showTotalRecords() { - return this.totalRecords > 0 + return Number(this.totalRecords) > 0 } }, - created() { - this.fetchData() + watch: { + currentPage(newVal) { + this.jumpPage = newVal + } }, methods: { - // 构建请求参数 - buildParams() { - const params = { - pagesize: this.pageSize, - page:this.page, - ...this.extraParams - } - - // 如果不是第一页,添加maxid或minid - if (this.page > 1) { - if (this.page === this.totalPages) { - // 从尾页往前翻 - params.maxid = this.maxId - } else { - // 正常翻页 - if (this.buttonType == 'prev') { - params.maxid = this.maxId - } else { - params.minid = this.minId - } - } - } - if(this.end_page > 0){ - delete params.page - delete params.maxid - delete params.minid - params.end_page = this.end_page - }else{ - delete params.end_page - } - - console.log(params,'params======'); - return params - }, - - // 获取数据 - async fetchData() { - console.log('-----执行了'); - this.isLoading = true - this.$emit('changeLoad',true) - try { - this.$http('POST', this.apiUrl, this.buildParams(), { - headers: { - 'Auth': this.token - } - }).then(response => { - const data = response.data - this.hasNextPage = data.is_has_next_page - this.minId = data.minid || null - this.maxId = data.maxid || null - this.totalRecords = data.total_records || 0 - if(this.totalRecords > 0){ - // 计算总页数 - this.totalPages = Math.ceil(this.totalRecords / this.pageSize) - this.page = this.totalPages || 1 - this.jumpPage = this.page - } - // 通知父组件数据更新 - this.$emit('update', data) - this.$emit('changeLoad',false) - }) - } catch (error) { - console.error('分页请求失败:', error) - this.$emit('error', error) - this.$emit('changeLoad',false) - } finally { - this.isLoading = false - this.$emit('changeLoad',false) - } - }, - // 跳转到首页 goToFirstPage() { - if (this.page === 1) return - this.page = 1 - this.jumpPage = 1 - this.end_page = 0; - this.buttonType = '' - this.fetchData() + if (this.currentPage === 1 || this.isLoading) return + this.endPage = false + this.$emit('page-change', { + page: 1, + endPage: false, + direction: 'first' + }) }, // 跳转到上一页 goToPrevPage() { - if (this.page <= 1) return - this.page-- - this.jumpPage = this.page - this.end_page = 0; - this.buttonType = 'prev' - this.fetchData() + if (this.currentPage <= 1 || this.isLoading) return + this.endPage = false + this.$emit('page-change', { + page: this.currentPage - 1, + endPage: false, + direction: 'prev' + }) }, // 跳转到下一页 goToNextPage() { - if (!this.hasNextPage)return - this.page++ - this.end_page = 0; - this.jumpPage = this.page - this.buttonType = 'next' - this.fetchData() + if (!this.hasNextPage || this.isLoading) return + this.endPage = false + this.$emit('page-change', { + page: this.currentPage + 1, + endPage: false, + direction: 'next' + }) }, // 跳转到尾页 goToLastPage() { - // if (this.page === this.totalPages) return - // this.page = this.totalPages - // this.jumpPage = this.totalPages - this.end_page = 1; - this.buttonType = '' - this.fetchData() + if (this.endPage || this.isLoading) return + this.endPage = true + this.$emit('page-change', { + page: this.totalPages, + endPage: true, + direction: 'last' + }) }, // 处理跳转 handleJump() { let page = parseInt(this.jumpPage) + if (isNaN(page)) page = 1 - if (isNaN(page) || page < 1) { - page = 1 + // 限制最大页数 + if (page > this.totalPages) { + page = this.totalPages + this.jumpPage = page } - // else if (page > this.totalPages) { - // page = this.totalPages - // } - if (page === this.page) return + if (page === this.currentPage || this.isLoading) return - this.page = page - this.jumpPage = page - this.fetchData() - } - }, - watch: { - apiUrl() { - this.page = 1 - this.fetchData() - }, - pageSize() { - this.page = 1 - this.fetchData() - }, - extraParams: { - deep: true, - handler() { - this.page = 1 - this.fetchData() - } + this.endPage = false + this.$emit('page-change', { + page, + endPage: false, + direction: 'jump' + }) } } } diff --git a/src/components/Page2.vue b/src/components/Page2.vue new file mode 100644 index 0000000..15bac36 --- /dev/null +++ b/src/components/Page2.vue @@ -0,0 +1,284 @@ + + + + + \ No newline at end of file diff --git a/src/views/agent/checkOrderList.vue b/src/views/agent/checkOrderList.vue index 5afe886..c3c0464 100644 --- a/src/views/agent/checkOrderList.vue +++ b/src/views/agent/checkOrderList.vue @@ -7,16 +7,29 @@
+
+ 筛选及导出列表 +
+ 清空 + 筛选 + 导出 +
+

时间范围

- + - + - - - + + +
@@ -28,15 +41,19 @@

查重列表

- +
- - + +
- +