From 035bb9a66d12859cc6d06ef038b88e6b35753fd1 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Thu, 23 Oct 2025 11:22:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=A5=E5=85=85=E7=BF=BB=E9=A1=B5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Community/components/EventList.js | 74 ++++++++++++++++----- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/src/views/Community/components/EventList.js b/src/views/Community/components/EventList.js index 7736d9cb..871f004c 100644 --- a/src/views/Community/components/EventList.js +++ b/src/views/Community/components/EventList.js @@ -750,6 +750,49 @@ const EventList = ({ events, pagination, onPageChange, onEventClick, onViewDetai const Pagination = ({ current, total, pageSize, onChange }) => { const totalPages = Math.ceil(total / pageSize); + // 计算要显示的页码数组(智能分页) + const getPageNumbers = () => { + const delta = 2; // 当前页左右各显示2个页码 + const range = []; + const rangeWithDots = []; + + // 始终显示第1页 + range.push(1); + + // 显示当前页附近的页码 + for (let i = current - delta; i <= current + delta; i++) { + if (i > 1 && i < totalPages) { + range.push(i); + } + } + + // 始终显示最后一页(如果总页数>1) + if (totalPages > 1) { + range.push(totalPages); + } + + // 去重并排序 + const uniqueRange = [...new Set(range)].sort((a, b) => a - b); + + // 添加省略号 + let prev = 0; + for (const page of uniqueRange) { + if (page - prev === 2) { + // 如果只差一个页码,直接显示 + rangeWithDots.push(prev + 1); + } else if (page - prev > 2) { + // 如果差距大于2,显示省略号 + rangeWithDots.push('...'); + } + rangeWithDots.push(page); + prev = page; + } + + return rangeWithDots; + }; + + const pageNumbers = getPageNumbers(); + return ( ); })} - {totalPages > 5 && ...} - {totalPages > 5 && ( - - )}