diff --git a/frontend/src/pages/Resource/Server/List/components/ServerCard.tsx b/frontend/src/pages/Resource/Server/List/components/ServerCard.tsx index ad144674..d9905c05 100644 --- a/frontend/src/pages/Resource/Server/List/components/ServerCard.tsx +++ b/frontend/src/pages/Resource/Server/List/components/ServerCard.tsx @@ -15,6 +15,7 @@ import { Tags, Tag, FileText, + RefreshCw, } from 'lucide-react'; import { Card, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; @@ -36,11 +37,13 @@ interface ServerCardProps { onEdit: (server: ServerResponse) => void; onDelete: (server: ServerResponse) => void; onSSHConnect: (server: ServerResponse) => void; + onCollectHardware: (server: ServerResponse) => void; isTesting?: boolean; + isCollecting?: boolean; getOsIcon: (osType?: string) => React.ReactNode; } -export const ServerCard: React.FC = ({ server, onTest, onEdit, onDelete, onSSHConnect, isTesting, getOsIcon }) => { +export const ServerCard: React.FC = ({ server, onTest, onEdit, onDelete, onSSHConnect, onCollectHardware, isTesting, isCollecting, getOsIcon }) => { const [expanded, setExpanded] = React.useState(false); const formatTime = (time?: string) => { @@ -252,7 +255,7 @@ export const ServerCard: React.FC = ({ server, onTest, onEdit, size="icon" className="h-7 w-7" onClick={() => onTest(server)} - disabled={isTesting} + disabled={isTesting || isCollecting} > {isTesting ? ( @@ -263,6 +266,25 @@ export const ServerCard: React.FC = ({ server, onTest, onEdit, 测试连接 + + + + + 刷新硬件信息 + + {testSuccess && !isEdit && ( + + ✓ 连接成功,硬件信息已采集 + + )} + diff --git a/frontend/src/pages/Resource/Server/List/components/ServerTable.tsx b/frontend/src/pages/Resource/Server/List/components/ServerTable.tsx index 4b72fc66..24fdb691 100644 --- a/frontend/src/pages/Resource/Server/List/components/ServerTable.tsx +++ b/frontend/src/pages/Resource/Server/List/components/ServerTable.tsx @@ -8,6 +8,7 @@ import { AlertCircle, HelpCircle, Terminal, + RefreshCw, } from 'lucide-react'; import { Table, @@ -36,7 +37,9 @@ interface ServerTableProps { onEdit: (server: ServerResponse) => void; onDelete: (server: ServerResponse) => void; onSSHConnect: (server: ServerResponse) => void; + onCollectHardware: (server: ServerResponse) => void; isTesting?: (serverId: number) => boolean; + isCollecting?: (serverId: number) => boolean; getOsIcon: (osType?: string) => React.ReactNode; } @@ -46,7 +49,9 @@ export const ServerTable: React.FC = ({ onEdit, onDelete, onSSHConnect, + onCollectHardware, isTesting, + isCollecting, getOsIcon, }) => { const formatTime = (time?: string) => { @@ -155,7 +160,7 @@ export const ServerTable: React.FC = ({ variant="ghost" size="sm" onClick={() => onTest(server)} - disabled={isTesting?.(server.id)} + disabled={isTesting?.(server.id) || isCollecting?.(server.id)} className="h-8 w-8 p-0" > {isTesting?.(server.id) ? ( @@ -167,6 +172,24 @@ export const ServerTable: React.FC = ({ 测试连接 + + + + + 刷新硬件信息 +