|
@@ -1,28 +1,28 @@
|
|
|
import React, { useState, useEffect } from 'react';
|
|
import React, { useState, useEffect } from 'react';
|
|
|
-import { Card, Row, Col, Statistic, Typography, Space, Timeline, List, Avatar, Progress, Tag } from 'antd';
|
|
|
|
|
-import {
|
|
|
|
|
- UserOutlined,
|
|
|
|
|
- TeamOutlined,
|
|
|
|
|
- BookOutlined,
|
|
|
|
|
- FileTextOutlined,
|
|
|
|
|
- RiseOutlined,
|
|
|
|
|
- ClockCircleOutlined,
|
|
|
|
|
- BarChartOutlined,
|
|
|
|
|
- PieChartOutlined,
|
|
|
|
|
- EyeOutlined,
|
|
|
|
|
- HeartOutlined,
|
|
|
|
|
- StarOutlined,
|
|
|
|
|
- DownloadOutlined,
|
|
|
|
|
- UploadOutlined,
|
|
|
|
|
- DatabaseOutlined,
|
|
|
|
|
- CloudOutlined,
|
|
|
|
|
- ThunderboltOutlined,
|
|
|
|
|
- FireOutlined,
|
|
|
|
|
- RocketOutlined
|
|
|
|
|
-} from '@ant-design/icons';
|
|
|
|
|
import { Line, Pie, Column } from '@ant-design/plots';
|
|
import { Line, Pie, Column } from '@ant-design/plots';
|
|
|
import { useQuery } from '@tanstack/react-query';
|
|
import { useQuery } from '@tanstack/react-query';
|
|
|
import dayjs from 'dayjs';
|
|
import dayjs from 'dayjs';
|
|
|
|
|
+import {
|
|
|
|
|
+ Users,
|
|
|
|
|
+ Users2,
|
|
|
|
|
+ BookOpen,
|
|
|
|
|
+ FileText,
|
|
|
|
|
+ TrendingUp,
|
|
|
|
|
+ Clock,
|
|
|
|
|
+ BarChart3,
|
|
|
|
|
+ PieChart,
|
|
|
|
|
+ Eye,
|
|
|
|
|
+ Heart,
|
|
|
|
|
+ Star,
|
|
|
|
|
+ Download,
|
|
|
|
|
+ Upload,
|
|
|
|
|
+ Database,
|
|
|
|
|
+ Cloud,
|
|
|
|
|
+ Zap,
|
|
|
|
|
+ Flame,
|
|
|
|
|
+ Rocket,
|
|
|
|
|
+ Activity
|
|
|
|
|
+} from 'lucide-react';
|
|
|
import {
|
|
import {
|
|
|
userClient,
|
|
userClient,
|
|
|
silverTalentsClient,
|
|
silverTalentsClient,
|
|
@@ -33,8 +33,6 @@ import {
|
|
|
companyCertificationClient
|
|
companyCertificationClient
|
|
|
} from '@/client/api';
|
|
} from '@/client/api';
|
|
|
|
|
|
|
|
-const { Title, Text } = Typography;
|
|
|
|
|
-
|
|
|
|
|
// 大屏幕仪表板组件
|
|
// 大屏幕仪表板组件
|
|
|
const BigScreenDashboard: React.FC = () => {
|
|
const BigScreenDashboard: React.FC = () => {
|
|
|
const [currentTime, setCurrentTime] = useState(dayjs());
|
|
const [currentTime, setCurrentTime] = useState(dayjs());
|
|
@@ -136,11 +134,11 @@ const BigScreenDashboard: React.FC = () => {
|
|
|
// 模拟实时活动数据
|
|
// 模拟实时活动数据
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
const activities = [
|
|
const activities = [
|
|
|
- { user: '张大爷', action: '发布了新技能', time: '刚刚', icon: <RocketOutlined className="text-blue-500" /> },
|
|
|
|
|
- { user: '李奶奶', action: '收藏了政策资讯', time: '1分钟前', icon: <HeartOutlined className="text-red-500" /> },
|
|
|
|
|
- { user: '王教授', action: '上传了教学视频', time: '3分钟前', icon: <UploadOutlined className="text-green-500" /> },
|
|
|
|
|
- { user: '刘阿姨', action: '申请了银龄岗位', time: '5分钟前', icon: <FileTextOutlined className="text-purple-500" /> },
|
|
|
|
|
- { user: '陈师傅', action: '完成了时间银行任务', time: '8分钟前', icon: <ClockCircleOutlined className="text-orange-500" /> },
|
|
|
|
|
|
|
+ { user: '张大爷', action: '发布了新技能', time: '刚刚', icon: <Rocket className="w-4 h-4 text-blue-500" />, color: 'text-blue-500' },
|
|
|
|
|
+ { user: '李奶奶', action: '收藏了政策资讯', time: '1分钟前', icon: <Heart className="w-4 h-4 text-red-500" />, color: 'text-red-500' },
|
|
|
|
|
+ { user: '王教授', action: '上传了教学视频', time: '3分钟前', icon: <Upload className="w-4 h-4 text-green-500" />, color: 'text-green-500' },
|
|
|
|
|
+ { user: '刘阿姨', action: '申请了银龄岗位', time: '5分钟前', icon: <FileText className="w-4 h-4 text-purple-500" />, color: 'text-purple-500' },
|
|
|
|
|
+ { user: '陈师傅', action: '完成了时间银行任务', time: '8分钟前', icon: <Clock className="w-4 h-4 text-orange-500" />, color: 'text-orange-500' },
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
const interval = setInterval(() => {
|
|
const interval = setInterval(() => {
|
|
@@ -215,18 +213,99 @@ const BigScreenDashboard: React.FC = () => {
|
|
|
animation: { appear: { animation: 'scale-in-y', duration: 2000 } },
|
|
animation: { appear: { animation: 'scale-in-y', duration: 2000 } },
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ // 统计卡片组件
|
|
|
|
|
+ const StatCard = ({
|
|
|
|
|
+ title,
|
|
|
|
|
+ value,
|
|
|
|
|
+ icon,
|
|
|
|
|
+ color,
|
|
|
|
|
+ suffix = '',
|
|
|
|
|
+ trend = ''
|
|
|
|
|
+ }: {
|
|
|
|
|
+ title: string;
|
|
|
|
|
+ value: number | string;
|
|
|
|
|
+ icon: React.ReactNode;
|
|
|
|
|
+ color: string;
|
|
|
|
|
+ suffix?: string;
|
|
|
|
|
+ trend?: string;
|
|
|
|
|
+ }) => (
|
|
|
|
|
+ <div className={`bg-gradient-to-r ${color} rounded-lg shadow-2xl p-6 text-white`}>
|
|
|
|
|
+ <div className="flex items-center justify-between">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <h3 className="text-lg font-medium mb-2">{title}</h3>
|
|
|
|
|
+ <div className="text-4xl font-bold">{value}</div>
|
|
|
|
|
+ {suffix && <span className="text-sm opacity-80 ml-2">{suffix}</span>}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="text-3xl opacity-80">
|
|
|
|
|
+ {icon}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ {trend && (
|
|
|
|
|
+ <div className="mt-2 text-sm opacity-80 flex items-center">
|
|
|
|
|
+ <TrendingUp className="w-4 h-4 mr-1" />
|
|
|
|
|
+ {trend}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ )}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ // 自定义进度条组件
|
|
|
|
|
+ const ProgressBar = ({ value, color }: { value: number; color: string }) => (
|
|
|
|
|
+ <div className="w-full bg-gray-700 rounded-full h-2">
|
|
|
|
|
+ <div
|
|
|
|
|
+ className={`h-2 rounded-full transition-all duration-300`}
|
|
|
|
|
+ style={{
|
|
|
|
|
+ width: `${value}%`,
|
|
|
|
|
+ backgroundColor: color
|
|
|
|
|
+ }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ // 信息卡片组件
|
|
|
|
|
+ const InfoCard = ({
|
|
|
|
|
+ title,
|
|
|
|
|
+ value,
|
|
|
|
|
+ icon,
|
|
|
|
|
+ iconColor,
|
|
|
|
|
+ progress
|
|
|
|
|
+ }: {
|
|
|
|
|
+ title: string;
|
|
|
|
|
+ value: string | number;
|
|
|
|
|
+ icon: React.ReactNode;
|
|
|
|
|
+ iconColor: string;
|
|
|
|
|
+ progress?: { value: number; color: string };
|
|
|
|
|
+ }) => (
|
|
|
|
|
+ <div className="bg-white bg-opacity-10 border-0 backdrop-blur-sm rounded-lg p-4">
|
|
|
|
|
+ <div className="flex items-center justify-between">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <h4 className="text-white text-sm">{title}</h4>
|
|
|
|
|
+ <div className="text-2xl font-bold text-white">{value}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className={`text-4xl ${iconColor}`}>
|
|
|
|
|
+ {icon}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ {progress && (
|
|
|
|
|
+ <div className="mt-3">
|
|
|
|
|
+ <ProgressBar value={progress.value} color={progress.color} />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ )}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-blue-900 to-purple-900 p-6">
|
|
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-blue-900 to-purple-900 p-6">
|
|
|
{/* 顶部标题栏 */}
|
|
{/* 顶部标题栏 */}
|
|
|
<div className="mb-6 flex items-center justify-between">
|
|
<div className="mb-6 flex items-center justify-between">
|
|
|
<div>
|
|
<div>
|
|
|
- <Title level={1} className="text-white !mb-2">
|
|
|
|
|
- <ThunderboltOutlined className="mr-3 text-yellow-400" />
|
|
|
|
|
|
|
+ <h1 className="text-white text-3xl font-bold mb-2 flex items-center">
|
|
|
|
|
+ <Zap className="mr-3 text-yellow-400 w-8 h-8" />
|
|
|
银龄人才大数据监控中心
|
|
银龄人才大数据监控中心
|
|
|
- </Title>
|
|
|
|
|
- <Text className="text-gray-300 text-lg">
|
|
|
|
|
|
|
+ </h1>
|
|
|
|
|
+ <p className="text-gray-300 text-lg">
|
|
|
实时数据监控 · 智能分析决策 · 精准服务匹配
|
|
实时数据监控 · 智能分析决策 · 精准服务匹配
|
|
|
- </Text>
|
|
|
|
|
|
|
+ </p>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="text-right">
|
|
<div className="text-right">
|
|
|
<div className="text-3xl font-bold text-white">
|
|
<div className="text-3xl font-bold text-white">
|
|
@@ -239,143 +318,101 @@ const BigScreenDashboard: React.FC = () => {
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
{/* 核心数据卡片 */}
|
|
{/* 核心数据卡片 */}
|
|
|
- <Row gutter={[24, 24]} className="mb-6">
|
|
|
|
|
- <Col span={6}>
|
|
|
|
|
- <Card className="bg-gradient-to-r from-blue-500 to-blue-600 border-0 shadow-2xl">
|
|
|
|
|
- <Statistic
|
|
|
|
|
- title={<span className="text-white text-lg">总用户数</span>}
|
|
|
|
|
- value={userStats?.total || 0}
|
|
|
|
|
- valueStyle={{ color: 'white', fontSize: 36, fontWeight: 'bold' }}
|
|
|
|
|
- prefix={<UserOutlined className="text-white text-2xl" />}
|
|
|
|
|
- suffix={<Tag color="blue" className="ml-2">人</Tag>}
|
|
|
|
|
- />
|
|
|
|
|
- <div className="mt-2 text-white opacity-80">
|
|
|
|
|
- <RiseOutlined /> 今日新增: +12人
|
|
|
|
|
- </div>
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={6}>
|
|
|
|
|
- <Card className="bg-gradient-to-r from-green-500 to-green-600 border-0 shadow-2xl">
|
|
|
|
|
- <Statistic
|
|
|
|
|
- title={<span className="text-white text-lg">银龄人才</span>}
|
|
|
|
|
- value={talentStats?.total || 0}
|
|
|
|
|
- valueStyle={{ color: 'white', fontSize: 36, fontWeight: 'bold' }}
|
|
|
|
|
- prefix={<TeamOutlined className="text-white text-2xl" />}
|
|
|
|
|
- suffix={<Tag color="green" className="ml-2">人</Tag>}
|
|
|
|
|
- />
|
|
|
|
|
- <div className="mt-2 text-white opacity-80">
|
|
|
|
|
- <RiseOutlined /> 活跃占比: 78%
|
|
|
|
|
- </div>
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={6}>
|
|
|
|
|
- <Card className="bg-gradient-to-r from-orange-500 to-orange-600 border-0 shadow-2xl">
|
|
|
|
|
- <Statistic
|
|
|
|
|
- title={<span className="text-white text-lg">岗位机会</span>}
|
|
|
|
|
- value={jobStats?.total || 0}
|
|
|
|
|
- valueStyle={{ color: 'white', fontSize: 36, fontWeight: 'bold' }}
|
|
|
|
|
- prefix={<FileTextOutlined className="text-white text-2xl" />}
|
|
|
|
|
- suffix={<Tag color="orange" className="ml-2">个</Tag>}
|
|
|
|
|
- />
|
|
|
|
|
- <div className="mt-2 text-white opacity-80">
|
|
|
|
|
- <RiseOutlined /> 匹配成功率: 85%
|
|
|
|
|
- </div>
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={6}>
|
|
|
|
|
- <Card className="bg-gradient-to-r from-purple-500 to-purple-600 border-0 shadow-2xl">
|
|
|
|
|
- <Statistic
|
|
|
|
|
- title={<span className="text-white text-lg">知识库</span>}
|
|
|
|
|
- value={knowledgeStats?.total || 0}
|
|
|
|
|
- valueStyle={{ color: 'white', fontSize: 36, fontWeight: 'bold' }}
|
|
|
|
|
- prefix={<BookOutlined className="text-white text-2xl" />}
|
|
|
|
|
- suffix={<Tag color="purple" className="ml-2">篇</Tag>}
|
|
|
|
|
- />
|
|
|
|
|
- <div className="mt-2 text-white opacity-80">
|
|
|
|
|
- <RiseOutlined /> 本月新增: 156篇
|
|
|
|
|
- </div>
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- </Row>
|
|
|
|
|
|
|
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6">
|
|
|
|
|
+ <StatCard
|
|
|
|
|
+ title="总用户数"
|
|
|
|
|
+ value={userStats?.total || 0}
|
|
|
|
|
+ icon={<Users className="w-8 h-8" />}
|
|
|
|
|
+ color="from-blue-500 to-blue-600"
|
|
|
|
|
+ suffix="人"
|
|
|
|
|
+ trend="今日新增: +12人"
|
|
|
|
|
+ />
|
|
|
|
|
+ <StatCard
|
|
|
|
|
+ title="银龄人才"
|
|
|
|
|
+ value={talentStats?.total || 0}
|
|
|
|
|
+ icon={<Users2 className="w-8 h-8" />}
|
|
|
|
|
+ color="from-green-500 to-green-600"
|
|
|
|
|
+ suffix="人"
|
|
|
|
|
+ trend="活跃占比: 78%"
|
|
|
|
|
+ />
|
|
|
|
|
+ <StatCard
|
|
|
|
|
+ title="岗位机会"
|
|
|
|
|
+ value={jobStats?.total || 0}
|
|
|
|
|
+ icon={<FileText className="w-8 h-8" />}
|
|
|
|
|
+ color="from-orange-500 to-orange-600"
|
|
|
|
|
+ suffix="个"
|
|
|
|
|
+ trend="匹配成功率: 85%"
|
|
|
|
|
+ />
|
|
|
|
|
+ <StatCard
|
|
|
|
|
+ title="知识库"
|
|
|
|
|
+ value={knowledgeStats?.total || 0}
|
|
|
|
|
+ icon={<BookOpen className="w-8 h-8" />}
|
|
|
|
|
+ color="from-purple-500 to-purple-600"
|
|
|
|
|
+ suffix="篇"
|
|
|
|
|
+ trend="本月新增: 156篇"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
{/* 图表区域 */}
|
|
{/* 图表区域 */}
|
|
|
- <Row gutter={[24, 24]} className="mb-6">
|
|
|
|
|
- <Col span={12}>
|
|
|
|
|
- <Card title="24小时活跃度趋势" className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <Line {...lineConfig} />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={12}>
|
|
|
|
|
- <Card title="内容类型分布" className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <Pie {...pieConfig} />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- </Row>
|
|
|
|
|
|
|
+ <div className="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
|
|
|
|
|
+ <div className="bg-white bg-opacity-10 border-0 backdrop-blur-sm rounded-lg p-4">
|
|
|
|
|
+ <h3 className="text-white text-lg font-semibold mb-4">24小时活跃度趋势</h3>
|
|
|
|
|
+ <Line {...lineConfig} />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="bg-white bg-opacity-10 border-0 backdrop-blur-sm rounded-lg p-4">
|
|
|
|
|
+ <h3 className="text-white text-lg font-semibold mb-4">内容类型分布</h3>
|
|
|
|
|
+ <Pie {...pieConfig} />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- <Row gutter={[24, 24]} className="mb-6">
|
|
|
|
|
- <Col span={16}>
|
|
|
|
|
- <Card title="周活跃度统计" className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <Column {...columnConfig} />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={8}>
|
|
|
|
|
- <Card title="实时活动" className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <Timeline
|
|
|
|
|
- items={realtimeData.map((item, index) => ({
|
|
|
|
|
- color: index === 0 ? 'green' : 'gray',
|
|
|
|
|
- dot: item.icon,
|
|
|
|
|
- children: (
|
|
|
|
|
- <div className="text-white">
|
|
|
|
|
- <div className="font-semibold">{item.user}</div>
|
|
|
|
|
- <div className="text-sm opacity-80">{item.action}</div>
|
|
|
|
|
- <div className="text-xs opacity-60">{item.time}</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- ),
|
|
|
|
|
- }))}
|
|
|
|
|
- />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- </Row>
|
|
|
|
|
|
|
+ <div className="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
|
|
|
|
|
+ <div className="lg:col-span-2 bg-white bg-opacity-10 border-0 backdrop-blur-sm rounded-lg p-4">
|
|
|
|
|
+ <h3 className="text-white text-lg font-semibold mb-4">周活跃度统计</h3>
|
|
|
|
|
+ <Column {...columnConfig} />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="bg-white bg-opacity-10 border-0 backdrop-blur-sm rounded-lg p-4">
|
|
|
|
|
+ <h3 className="text-white text-lg font-semibold mb-4">实时活动</h3>
|
|
|
|
|
+ <div className="space-y-3">
|
|
|
|
|
+ {realtimeData.map((item, index) => (
|
|
|
|
|
+ <div key={index} className="flex items-start space-x-3">
|
|
|
|
|
+ <div className={`mt-1 ${item.color}`}>
|
|
|
|
|
+ {item.icon}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className="flex-1">
|
|
|
|
|
+ <div className="font-semibold text-white text-sm">{item.user}</div>
|
|
|
|
|
+ <div className="text-white opacity-80 text-sm">{item.action}</div>
|
|
|
|
|
+ <div className="text-white opacity-60 text-xs">{item.time}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ ))}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
{/* 底部状态栏 */}
|
|
{/* 底部状态栏 */}
|
|
|
- <Row gutter={[24, 24]}>
|
|
|
|
|
- <Col span={8}>
|
|
|
|
|
- <Card className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <div className="flex items-center justify-between">
|
|
|
|
|
- <div>
|
|
|
|
|
- <Text className="text-white">文件总数</Text>
|
|
|
|
|
- <div className="text-2xl font-bold text-white">{fileStats?.total || 0}</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <DatabaseOutlined className="text-4xl text-blue-400" />
|
|
|
|
|
- </div>
|
|
|
|
|
- <Progress percent={75} strokeColor="#1890ff" showInfo={false} />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={8}>
|
|
|
|
|
- <Card className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <div className="flex items-center justify-between">
|
|
|
|
|
- <div>
|
|
|
|
|
- <Text className="text-white">系统健康度</Text>
|
|
|
|
|
- <div className="text-2xl font-bold text-white">99.8%</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <CloudOutlined className="text-4xl text-green-400" />
|
|
|
|
|
- </div>
|
|
|
|
|
- <Progress percent={99.8} strokeColor="#52c41a" showInfo={false} />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- <Col span={8}>
|
|
|
|
|
- <Card className="bg-white bg-opacity-10 border-0 backdrop-blur-sm">
|
|
|
|
|
- <div className="flex items-center justify-between">
|
|
|
|
|
- <div>
|
|
|
|
|
- <Text className="text-white">今日访问</Text>
|
|
|
|
|
- <div className="text-2xl font-bold text-white">1,234</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <EyeOutlined className="text-4xl text-orange-400" />
|
|
|
|
|
- </div>
|
|
|
|
|
- <Progress percent={85} strokeColor="#faad14" showInfo={false} />
|
|
|
|
|
- </Card>
|
|
|
|
|
- </Col>
|
|
|
|
|
- </Row>
|
|
|
|
|
|
|
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
|
|
|
+ <InfoCard
|
|
|
|
|
+ title="文件总数"
|
|
|
|
|
+ value={fileStats?.total || 0}
|
|
|
|
|
+ icon={<Database />}
|
|
|
|
|
+ iconColor="text-blue-400"
|
|
|
|
|
+ progress={{ value: 75, color: '#1890ff' }}
|
|
|
|
|
+ />
|
|
|
|
|
+ <InfoCard
|
|
|
|
|
+ title="系统健康度"
|
|
|
|
|
+ value="99.8%"
|
|
|
|
|
+ icon={<Cloud />}
|
|
|
|
|
+ iconColor="text-green-400"
|
|
|
|
|
+ progress={{ value: 99.8, color: '#52c41a' }}
|
|
|
|
|
+ />
|
|
|
|
|
+ <InfoCard
|
|
|
|
|
+ title="今日访问"
|
|
|
|
|
+ value="1,234"
|
|
|
|
|
+ icon={<Eye />}
|
|
|
|
|
+ iconColor="text-orange-400"
|
|
|
|
|
+ progress={{ value: 85, color: '#faad14' }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
);
|
|
);
|
|
|
};
|
|
};
|