'use client'; import { useState, useEffect, useCallback } from 'react'; import { PageLayout, DataTable, StatusBadge, Modal, EmptyState } from '@/components/ui'; export default function DefectsPage() { const [defects, setDefects] = useState([] as any[]); const [loading, setLoading] = useState(true); const [showAdd, setShowAdd] = useState(false); const [filter, setFilter] = useState(''); const api = useCallback(async (ep: string, opts?: RequestInit) => { const r = await fetch(`/api/v1/defects${ep}`, opts); return r.json(); }, []); useEffect(() => { setLoading(true); api(`/${filter ? `?status=${filter}` : ""}`).then(d => { setDefects(d.items || []); }); }, [api, filter]); const handleAdd = async (data: any) => { const r = await api('/', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); if (r.id) { setDefects(p => [r, ...p]); setShowAdd(false); } }; return ( <> setShowAdd(true)} className="btn-primary text-sm px-4 py-2 rounded">+ Зарегистрировать}>
{['', 'open', 'deferred', 'rectified', 'closed'].map(s => ( ))}
{defects.length > 0 ? ( ( )}, { key: 'discovered_during', label: 'Обнаружен' }, { key: 'mel_reference', label: 'MEL', render: (v: string) => v || '—' }, { key: 'status', label: 'Статус', render: (v: string) => ( )}, ]} data={defects} /> ) : } setShowAdd(false)} title="Регистрация дефекта"> setShowAdd(false)} />
); } function DefectForm({ onSubmit, onCancel }: { onSubmit: (d: any) => void; onCancel: () => void }) { const [f, setF] = useState({ aircraft_reg: '', ata_chapter: '', description: '', severity: 'minor', discovered_during: 'preflight' }); return (
setF(p => ({ ...p, aircraft_reg: e.target.value }))} />
setF(p => ({ ...p, ata_chapter: e.target.value }))} />