import { useEffect, useMemo, useState } from 'react'; import { getChecklist } from '../../services/api/consolidations'; import { message, Modal, Table, TableColumnsType } from 'antd'; import { ChecklistBackendShape, type IVersionCard } from '../../types/consolidations/version_members'; import { DownloadOutlined } from '@ant-design/icons'; import { buildChecklistColumns, getMarksItems } from './checklist_utils'; // import { useMe } from '../../auth/useMe'; type ChecklistProps = { open: boolean; onDownload: () => void; consolidationData: IVersionCard; onClose: () => void; }; export default function ChecklistModal({ open, onDownload, consolidationData, onClose }: ChecklistProps) { const [checklistData, setChecklistData] = useState(null); const displayedData = useMemo(() => { if (!checklistData) return; const result = []; for (const row of checklistData.rows) { const rowObj = { name: row.legal_entity_name, inn: row.legal_entity_inn, ofr: 'MISSING', balance: 'MISSING', }; for (const cell of row.cells) { if (cell.document_type === 'OSV') { const code = cell.account; const key = `osv_${code}`; rowObj[key] = cell.status; } else if (cell.document_type === 'BALANCE') { rowObj.balance = cell.status; } else if (cell.document_type === 'OFR') { rowObj.ofr = cell.status; } } result.push(rowObj); } return result; }, [checklistData]); const columns: TableColumnsType = useMemo(() => { if (!checklistData) return []; return buildChecklistColumns(checklistData); }, [checklistData]); useEffect(() => { async function fetchChecklist() { if (!consolidationData.id || !open) return; try { const res = await getChecklist(consolidationData.id); setChecklistData(res); } catch (e) { message.error(e.message); } } fetchChecklist(); }, [open, consolidationData.id]); return ( { onDownload(); onClose(); }} okText='Скачать чек-лист' okButtonProps={{ icon: }}>
{getMarksItems()} ); }