mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
added front - react+ts
ocr improved
This commit is contained in:
59
rmser-view/src/pages/Dashboard.tsx
Normal file
59
rmser-view/src/pages/Dashboard.tsx
Normal file
@@ -0,0 +1,59 @@
|
||||
import React from 'react';
|
||||
import { Typography, Row, Col, Statistic, Spin, Alert, Empty } from 'antd';
|
||||
import { useRecommendations } from '../hooks/useRecommendations';
|
||||
import { RecommendationCard } from '../components/recommendations/RecommendationCard';
|
||||
|
||||
const { Title } = Typography;
|
||||
|
||||
export const Dashboard: React.FC = () => {
|
||||
const { data: recommendations, isPending, isError, error } = useRecommendations();
|
||||
|
||||
if (isPending) {
|
||||
return (
|
||||
<div style={{ display: 'flex', justifyContent: 'center', padding: 40 }}>
|
||||
<Spin size="large" tip="Загрузка аналитики..." />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (isError) {
|
||||
return (
|
||||
<Alert
|
||||
message="Ошибка загрузки"
|
||||
description={error?.message || 'Не удалось получить данные с сервера'}
|
||||
type="error"
|
||||
showIcon
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// Группировка для статистики
|
||||
const unusedCount = recommendations?.filter(r => r.Type === 'UNUSED_IN_RECIPES').length || 0;
|
||||
const noIncomingCount = recommendations?.filter(r => r.Type === 'NO_INCOMING').length || 0;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Title level={4} style={{ marginTop: 0 }}>Сводка проблем</Title>
|
||||
|
||||
{/* Блок статистики */}
|
||||
<Row gutter={16} style={{ marginBottom: 24 }}>
|
||||
<Col span={12}>
|
||||
<Statistic title="Без техкарт" value={unusedCount} valueStyle={{ color: '#cf1322' }} />
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Statistic title="Без закупок" value={noIncomingCount} valueStyle={{ color: '#d48806' }} />
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<Title level={5}>Рекомендации ({recommendations?.length})</Title>
|
||||
|
||||
{recommendations && recommendations.length > 0 ? (
|
||||
recommendations.map((rec) => (
|
||||
<RecommendationCard key={rec.ID} item={rec} />
|
||||
))
|
||||
) : (
|
||||
<Empty description="Проблем не обнаружено" />
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user