Files
yunhaifinance/frontend/src/pages/admin/AboutPage.tsx
T

133 lines
6.0 KiB
TypeScript
Raw Normal View History

2026-06-13 12:44:48 +08:00
import React from 'react';
import { Card, Typography, Descriptions, Tag, Row, Col, Progress, Divider } from 'antd';
import {
CloudServerOutlined,
DatabaseOutlined,
NodeIndexOutlined,
CheckCircleOutlined,
InfoCircleOutlined
} from '@ant-design/icons';
import { useLanguageStore } from '../../store/languageStore';
const { Title, Paragraph, Text } = Typography;
const AboutPage: React.FC = () => {
const { t, currentLanguage } = useLanguageStore();
return (
<div style={{ padding: 24 }}>
<div style={{ marginBottom: 24 }}>
<Title level={3} style={{ marginBottom: 8 }}>{t('about.title')}</Title>
<Paragraph type="secondary">{t('about.description')}</Paragraph>
</div>
<Row gutter={24}>
<Col span={16}>
<Card title={<><InfoCircleOutlined /> {t('about.systemInfo')}</>}>
<Descriptions bordered column={2}>
<Descriptions.Item label={t('about.systemName')}>{t('about.systemNameValue')}</Descriptions.Item>
<Descriptions.Item label={t('about.version')}>{t('about.versionValue')}</Descriptions.Item>
<Descriptions.Item label={t('about.devTeam')}>{t('about.devTeamValue')}</Descriptions.Item>
<Descriptions.Item label={t('about.onlineDate')}>{t('about.onlineDateValue')}</Descriptions.Item>
<Descriptions.Item label={t('about.techArchitecture')}>
<Tag color="blue">React 18</Tag>
<Tag color="green">Ant Design 5</Tag>
<Tag color="purple">Node.js</Tag>
<Tag color="orange">PostgreSQL</Tag>
</Descriptions.Item>
<Descriptions.Item label={t('about.deployEnv')}>
<Tag color="cyan">{t('about.deployEnvValue')}</Tag>
</Descriptions.Item>
<Descriptions.Item label={t('about.frontend')}>{t('about.frontendValue')}</Descriptions.Item>
<Descriptions.Item label={t('about.backend')}>{t('about.backendValue')}</Descriptions.Item>
</Descriptions>
</Card>
<Card title={<><CheckCircleOutlined /> {t('about.modules')}</>} style={{ marginTop: 24 }}>
<Row gutter={[16, 16]}>
<Col span={8}>
<Card size="small" style={{ textAlign: 'center' }}>
<Title level={5}>{t('menu.projects')}</Title>
<Text type="secondary">项目创建、进度跟踪、合同管理</Text>
</Card>
</Col>
<Col span={8}>
<Card size="small" style={{ textAlign: 'center' }}>
<Title level={5}>{t('menu.financeManagement')}</Title>
<Text type="secondary">预支、报销、付款申请、核销</Text>
</Card>
</Col>
<Col span={8}>
<Card size="small" style={{ textAlign: 'center' }}>
<Title level={5}>{t('menu.procurement')}</Title>
<Text type="secondary">商品管理、供应商管理</Text>
</Card>
</Col>
<Col span={8}>
<Card size="small" style={{ textAlign: 'center' }}>
<Title level={5}>{t('menu.partners')}</Title>
<Text type="secondary">供应商、分包商、客户管理</Text>
</Card>
</Col>
<Col span={8}>
<Card size="small" style={{ textAlign: 'center' }}>
<Title level={5}>{t('menu.construction')}</Title>
<Text type="secondary">施工日志、里程碑管理</Text>
</Card>
</Col>
<Col span={8}>
<Card size="small" style={{ textAlign: 'center' }}>
<Title level={5}>{t('menu.budgetQuotation')}</Title>
<Text type="secondary">项目预算、报价管理</Text>
</Card>
</Col>
</Row>
</Card>
</Col>
<Col span={8}>
<Card title={<><CloudServerOutlined /> {t('about.serverStatus')}</>}>
<div style={{ marginBottom: 16 }}>
<Text type="secondary">{t('about.cpuUsage')}</Text>
<Progress percent={45} status="active" />
</div>
<div style={{ marginBottom: 16 }}>
<Text type="secondary">{t('about.memoryUsage')}</Text>
<Progress percent={60} strokeColor="#52c41a" />
</div>
<div style={{ marginBottom: 16 }}>
<Text type="secondary">{t('about.diskSpace')}</Text>
<Progress percent={35} strokeColor="#1890ff" />
</div>
<Divider />
<Descriptions column={1} size="small">
<Descriptions.Item label={t('about.serverIp')}>43.161.248.209</Descriptions.Item>
<Descriptions.Item label={t('about.os')}>{t('about.osValue')}</Descriptions.Item>
<Descriptions.Item label={t('about.nodeVersion')}>v22.22.1</Descriptions.Item>
</Descriptions>
</Card>
<Card title={<><DatabaseOutlined /> {t('about.databaseStatus')}</>} style={{ marginTop: 24 }}>
<div style={{ textAlign: 'center', padding: 20 }}>
<CheckCircleOutlined style={{ fontSize: 48, color: '#52c41a' }} />
<Title level={4} style={{ margin: '16px 0 8px' }}>{t('about.running')}</Title>
<Text type="secondary">PostgreSQL 15</Text>
</div>
<Divider />
<Descriptions column={1} size="small">
<Descriptions.Item label={t('about.dbName')}>company_finance_db</Descriptions.Item>
<Descriptions.Item label={t('about.connectionStatus')}>{t('about.normal')}</Descriptions.Item>
<Descriptions.Item label={t('about.lastBackup')}>2026-03-19 00:00</Descriptions.Item>
</Descriptions>
</Card>
</Col>
</Row>
<Card style={{ marginTop: 24, background: '#f6ffed', borderColor: '#b7eb8f' }}>
<Text>{t('about.footer')}</Text>
</Card>
</div>
);
};
export default AboutPage;