'use client'; import { useState, useEffect } from 'react'; import { PageLayout, DataTable, StatusBadge, EmptyState } from '@/components/ui'; import RiskDetailModal from '@/components/RiskDetailModal'; import { risksApi } from '@/lib/api/api-client'; export default function RisksPage() { const [risks, setRisks] = useState([] as any[]); const [loading, setLoading] = useState(true); const [filter, setFilter] = useState(''); const [selectedRisk, setSelectedRisk] = useState(null); const load = () => { setLoading(true); risksApi.list(filter ? { severity: filter } : {}).then(d => { setRisks(d.items || []); setLoading(false); }).catch(() => setLoading(false)); }; useEffect(() => { load(); }, [filter]); return ( <> {loading &&
⏳ Загрузка...
}
{['', 'critical', 'high', 'medium', 'low'].map(s => ( ))}
{risks.length > 0 ? ( ( )}, { key: 'category', label: 'Категория' }, { key: 'status', label: 'Статус', render: (v: string) => ( )}, { key: 'created_at', label: 'Дата', render: (v: string) => v ? new Date(v).toLocaleDateString('ru-RU') : '—' }, ]} data={risks} onRowClick={row => setSelectedRisk(row)} /> ) : }
setSelectedRisk(null)} risk={selectedRisk} onEdit={r => setSelectedRisk(r)} onCloseRisk={id => { risksApi.resolve(id).then(load); }} /> ); }