超管后台 - 流量池分页跳转

This commit is contained in:
柳清爽
2025-04-12 16:27:28 +08:00
parent 9257716d9b
commit 192701e41e
4 changed files with 60 additions and 75 deletions

View File

@@ -124,6 +124,7 @@ export default function CustomersPage() {
const [totalPages, setTotalPages] = useState(1)
const [totalItems, setTotalItems] = useState(0)
const [pageSize, setPageSize] = useState(10)
const [jumpToPage, setJumpToPage] = useState("")
// 获取客户列表数据
useEffect(() => {
@@ -158,6 +159,22 @@ export default function CustomersPage() {
}
};
// 处理页码跳转
const handleJumpToPage = () => {
const page = parseInt(jumpToPage);
if (!isNaN(page) && page >= 1 && page <= totalPages) {
setCurrentPage(page);
setJumpToPage("");
}
};
// 处理每页显示条数变化
const handlePageSizeChange = (size: string) => {
const newSize = parseInt(size);
setPageSize(newSize);
setCurrentPage(1); // 重置为第一页
};
// Filter customers based on search and filters (兼容示例数据)
const filteredCustomers = customersData.filter((customer) => {
const matchesSearch =
@@ -365,8 +382,25 @@ export default function CustomersPage() {
{/* 分页控件 */}
{!isLoading && !error && customers.length > 0 && (
<div className="flex items-center justify-between px-2">
<div className="text-sm text-muted-foreground">
{totalItems} {currentPage}/{totalPages}
<div className="flex items-center space-x-4">
<div className="text-sm text-muted-foreground">
{totalItems} {currentPage}/{totalPages}
</div>
<div className="flex items-center space-x-2">
<span className="text-sm">:</span>
<Select value={pageSize.toString()} onValueChange={handlePageSizeChange}>
<SelectTrigger className="h-8 w-[70px]">
<SelectValue placeholder={pageSize} />
</SelectTrigger>
<SelectContent>
<SelectItem value="10">10</SelectItem>
<SelectItem value="30">30</SelectItem>
<SelectItem value="50">50</SelectItem>
<SelectItem value="100">100</SelectItem>
</SelectContent>
</Select>
<span className="text-sm"></span>
</div>
</div>
<div className="flex items-center space-x-2">
<Button
@@ -419,6 +453,29 @@ export default function CustomersPage() {
>
<ChevronRight className="h-4 w-4" />
</Button>
{/* 页码跳转 */}
<div className="flex items-center space-x-2 ml-2">
<span className="text-sm"></span>
<Input
type="number"
value={jumpToPage}
onChange={(e) => setJumpToPage(e.target.value)}
onKeyDown={(e) => e.key === "Enter" && handleJumpToPage()}
className="h-8 w-16 text-center"
min={1}
max={totalPages}
/>
<span className="text-sm"></span>
<Button
size="sm"
variant="outline"
onClick={handleJumpToPage}
disabled={!jumpToPage || isNaN(parseInt(jumpToPage)) || parseInt(jumpToPage) < 1 || parseInt(jumpToPage) > totalPages}
>
</Button>
</div>
</div>
</div>
)}