'use client'; import { useState, useEffect } from 'react'; import { PageLayout, DataTable, StatusBadge, EmptyState, Modal } from '@/components/ui'; const DEMO_APPLICATIONS = [ { id: '1', number: 'ЗАЯВ-2024-001', type: 'Сертификат эксплуатанта', organization_name: 'АО «Авиакомпания»', aircraft_id: 'RA-73001', basis: 'ФАП-246', submitted_at: '2024-10-15', status: 'pending', attachments: 'Устав, свидетельство ВС' }, { id: '2', number: 'ЗАЯВ-2024-002', type: 'Дополнение к сертификату', organization_name: 'ООО «АвиаСервис»', aircraft_id: 'RA-73002', basis: 'ФАП-246 п. 12', submitted_at: '2024-11-01', status: 'draft', attachments: 'Регламент ТО' }, { id: '3', number: 'ЗАЯВ-2024-003', type: 'Сертификат эксплуатанта', organization_name: 'ПАО «Авиалинии»', aircraft_id: 'VQ-BAB', basis: 'ФАП-246; EASA Part-ORO', submitted_at: '2024-09-20', status: 'approved', attachments: 'Полный пакет' }, { id: '4', number: 'ЗАЯВ-2024-004', type: 'Сертификат на тип ВС', organization_name: 'АО «Авиакомпания»', aircraft_id: 'RA-73003', basis: 'ФАП-21', submitted_at: '2024-11-10', status: 'pending', attachments: 'Заключение по типу' }, { id: '5', number: 'ЗАЯВ-2024-005', type: 'Продление срока действия', organization_name: 'ООО «АвиаСервис»', aircraft_id: 'RA-73002', basis: 'ФАП-246', submitted_at: '2024-08-05', status: 'approved', attachments: 'Акт проверки' }, ]; const TEMPLATE_DEFAULT = { type: 'Сертификат эксплуатанта', organization_name: 'АО «Авиакомпания»', aircraft_id: 'RA-73001', basis: 'ФАП-246; ВК РФ ст. 36', submitted_at: new Date().toISOString().slice(0, 10), attachments: 'Устав, свидетельство о гос. регистрации, регламент ТО, список ВС', }; export default function ApplicationsPage() { const [apps, setApps] = useState([] as any[]); const [loading, setLoading] = useState(true); const [templateOpen, setTemplateOpen] = useState(false); const [form, setForm] = useState(TEMPLATE_DEFAULT); useEffect(() => { setLoading(true); fetch('/api/v1/cert-applications') .then(r => r.json()) .then(d => { setApps(Array.isArray(d?.items) && d.items.length > 0 ? d.items : DEMO_APPLICATIONS); setLoading(false); }) .catch(() => { setApps(DEMO_APPLICATIONS); setLoading(false); }); }, []); const handleCreateFromTemplate = () => { const newApp = { id: String(Date.now()), number: `ЗАЯВ-${new Date().getFullYear()}-${String(apps.length + 1).padStart(3, '0')}`, ...form, submitted_at: form.submitted_at, status: 'draft', }; setApps(prev => [newApp, ...prev]); setTemplateOpen(false); setForm(TEMPLATE_DEFAULT); }; return ( <> {loading &&
⏳ Загрузка...
} { setForm(TEMPLATE_DEFAULT); setTemplateOpen(true); }} className="btn-primary">Создать по шаблону} > {apps.length > 0 ? ( v || '—' }, { key: 'status', label: 'Статус', render: (v: string) => ( )}, { key: 'submitted_at', label: 'Дата', render: (v: string) => v ? new Date(v).toLocaleDateString('ru-RU') : '—' }, ]} data={apps} /> ) : } setTemplateOpen(false)} title="Создать заявку по шаблону" size="md" footer={ <> } >
setForm(f => ({ ...f, type: e.target.value }))} />
setForm(f => ({ ...f, organization_name: e.target.value }))} />
setForm(f => ({ ...f, aircraft_id: e.target.value }))} placeholder="RA-73001" />
setForm(f => ({ ...f, basis: e.target.value }))} />
setForm(f => ({ ...f, submitted_at: e.target.value }))} />