import React, { useState, useEffect } from 'react'; import { Button, Card, Descriptions, Alert, App as AntdApp } from 'antd'; import { useGet, usePost } from '../../hooks/useApi'; interface TransferStatus { id: number; year: number; completed_at: string; status: string; error_message?: string; } const YearEndManagement: React.FC = () => { const [loading, setLoading] = useState(false); const [lastTransfer, setLastTransfer] = useState(null); const { message } = AntdApp.useApp(); // Используем `useGet` для получения статуса const { data, error, execute: fetchStatus } = useGet('/year-end/status'); // Используем `usePost` для выполнения переноса const { execute: transferData } = usePost('/year-end/transfer'); // Обновляем состояние, когда `data` загружено useEffect(() => { if (data) setLastTransfer(data); }, [data]); // Обработчик клика на кнопку переноса const handleTransfer = async () => { const currentYear = new Date().getFullYear(); const confirm = window.confirm( `Вы уверены, что хотите выполнить перенос остатков за ${currentYear} год?` ); if (!confirm) return; setLoading(true); try { await transferData(); // Выполняем POST-запрос message.success('Перенос остатков успешно выполнен'); fetchStatus(); // Обновляем статус } catch { message.error('Ошибка при переносе остатков'); } finally { setLoading(false); } }; return ( {error && } {lastTransfer && ( {lastTransfer.year} {new Date(lastTransfer.completed_at).toLocaleString()} {lastTransfer.status} {lastTransfer.error_message && ( {lastTransfer.error_message} )} )} ); }; export default YearEndManagement;