import { Button, Empty, Result, Spin, Tag } from 'antd'; import { useCallback, useEffect, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { ApiError } from '../api/client'; import PageTitle from '../components/PageTitle'; import { fetchLegalEntity } from '../services/api/directories/company_groups'; import { getDocument } from '../services/api/documents'; import type { DocumentOut } from '../types/api'; import { documentStatusLabel, documentTypeLabel, periodLabel } from '../utils/labels'; import { OsvDocument } from '../widgets/DocumentReview/OsvDocument'; import { documentViewKind } from '../widgets/DocumentReview/viewKind'; export function DocumentPage() { const { document_id } = useParams(); const navigate = useNavigate(); const [doc, setDoc] = useState(null); const [entityName, setEntityName] = useState(''); const [error, setError] = useState(null); const load = useCallback(async () => { if (!document_id) return; try { const d = await getDocument(document_id); setDoc(d); setError(null); fetchLegalEntity(d.legal_entity_id) .then((le) => setEntityName(le.name)) .catch(() => setEntityName('')); } catch (e: unknown) { setError(e instanceof ApiError ? e.message : 'Не удалось открыть документ'); } }, [document_id]); useEffect(() => { void load(); }, [load]); if (error) { return navigate(-1)}>Назад} />; } if (!doc) { return ; } const kind = documentViewKind(doc); // Документ в статусе ERROR — данных формы/строк нет: показываем карточку и понятный текст, а не пустой экран. const broken = doc.status === 'ERROR' && kind !== 'none'; return (
{documentStatusLabel(doc.status)}} />
{broken && } {!broken && kind === 'osv' && } {!broken && kind === 'statement' && } {kind === 'none' && }
); }