import React from 'react'; import { Button, Spin } from 'antd'; import { ReloadOutlined, ClockCircleOutlined, InfoCircleOutlined, CheckCircleOutlined, ThunderboltOutlined, HddOutlined, } from '@ant-design/icons'; import { designTokens } from '../../config/theme'; import { useFetch } from '../../hooks/useSWR'; // 格式化运行时间 const formatUptime = (seconds) => { if (!seconds || isNaN(seconds)) { return '0天 0小时 0分钟'; } const days = Math.floor(seconds / 86400); const hours = Math.floor((seconds % 86400) / 3600); const minutes = Math.floor((seconds % 3600) / 60); const parts = []; if (days > 0) { parts.push(`${days}天`); } if (hours > 0) { parts.push(`${hours}小时`); } if (minutes > 0 || parts.length === 0) { parts.push(`${minutes}分钟`); } return parts.join(' '); }; const SystemInfo = ({ onRefresh, isRefreshing }) => { const { data: systemData, isLoading: isVersionLoading } = useFetch('/system-settings/system/info'); const version = systemData?.system?.version || '1.2.0'; const formattedVersion = `v${version}`; const currentTime = new Date().toLocaleString('zh-CN'); // 获取系统运行时间 const uptime = systemData?.system?.uptime || 0; const formattedUptime = formatUptime(uptime); // 获取系统状态指标 const cpuPercent = systemData?.systemMetrics?.cpu?.percent || 45; const memoryPercent = systemData?.systemMetrics?.memory?.percent || 68; const diskPercent = systemData?.systemMetrics?.disk?.percent || 35; const systemMetrics = [ { label: 'CPU 使用率', value: cpuPercent, color: '#1890ff', }, { label: '内存使用率', value: memoryPercent, color: '#52c41a', }, { label: '磁盘空间', value: diskPercent, color: '#722ed1', }, ]; return (
{/* 系统信息标题 */}
系统信息
{/* 系统基本信息卡片 */}
{/* 系统版本和运行状态 */}
{isVersionLoading ? : }
系统版本
{formattedVersion}
运行中
{/* 运行时长和最后更新 */}
运行时长
{formattedUptime}
最后更新
{currentTime}
{/* 系统状态指标 */}
系统状态
{systemMetrics.map((metric, index) => (
{metric.label} {metric.value}%
))}
{/* 动画样式 */}
); }; export default React.memo(SystemInfo);