import React, { useCallback, useMemo, useState } from 'react'; import { Box, Typography, TextField, InputAdornment, Paper, Button, Pagination, Stack, } from '@mui/material'; import { Search as SearchIcon, Refresh as RefreshIcon } from '@mui/icons-material'; import { useAgentList } from '@/hooks/agent-hooks'; import AgentGridView from '@/components/agent/AgentGridView'; function AgentListPage() { const [searchValue, setSearchValue] = useState(''); const { agents, total, loading, currentPage, pageSize, setCurrentPage, setKeywords, refresh, } = useAgentList({ page: 1, page_size: 10 }); const totalPages = useMemo(() => { return Math.ceil((agents?.length || 0) / pageSize) || 1; }, [agents, pageSize]); const currentPageData = useMemo(() => { const startIndex = (currentPage - 1) * pageSize; const endIndex = startIndex + pageSize; return (agents || []).slice(startIndex, endIndex); }, [agents, currentPage, pageSize]); const handleSearch = useCallback(() => { setKeywords(searchValue); setCurrentPage(1); }, [searchValue, setKeywords, setCurrentPage]); return ( Agent 列表 setSearchValue(e.target.value)} placeholder="搜索名称或描述" size="small" InputProps={{ startAdornment: ( ) }} /> {totalPages >= 1 && ( setCurrentPage(page)} color="primary" size="large" showFirstButton showLastButton /> 共 {total} 个,当前第 {currentPage} / {totalPages} 页 )} ); } export default AgentListPage;