'use client'; import { useState, useEffect } from 'react'; interface Risk { id: string; title: string; level: 'Низкий' | 'Средний' | 'Высокий' | 'Критический'; category: string; aircraft: string; status: string; date: string; description?: string; impact?: string; probability?: string; mitigation?: string; responsible?: string; deadline?: string; } interface RiskDetailsModalProps { isOpen: boolean; onClose: () => void; risk: Risk | null; onSave?: (updatedRisk: Risk) => void; } export default function RiskDetailsModal({ isOpen, onClose, risk, onSave }: RiskDetailsModalProps) { const [isEditing, setIsEditing] = useState(false); const [editedRisk, setEditedRisk] = useState(null); useEffect(() => { if (risk) { setEditedRisk({ ...risk }); setIsEditing(false); } }, [risk]); if (!isOpen || !risk || !editedRisk) { return null; } const getLevelColor = (level: string) => { switch (level) { case 'Критический': return '#f44336'; case 'Высокий': return '#ff9800'; case 'Средний': return '#ffc107'; case 'Низкий': return '#4caf50'; default: return '#666'; } }; const getLevelBgColor = (level: string) => { switch (level) { case 'Критический': return '#ffebee'; case 'Высокий': return '#fff3e0'; case 'Средний': return '#fffde7'; case 'Низкий': return '#e8f5e9'; default: return '#f5f5f5'; } }; const handleChange = (field: keyof Risk, value: string) => { if (editedRisk) { setEditedRisk({ ...editedRisk, [field]: value }); } }; const handleSave = () => { if (editedRisk && onSave) { onSave(editedRisk); setIsEditing(false); alert('Риск успешно обновлён'); } }; const handleCancel = () => { if (risk) { setEditedRisk({ ...risk }); setIsEditing(false); } }; const currentRisk = isEditing ? editedRisk : risk; return (
e.stopPropagation()} >
{isEditing ? (
handleChange('title', e.target.value)} style={{ width: '100%', padding: '12px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '16px', }} />
) : (

{currentRisk.title}

{currentRisk.level}
)}
{isEditing ? (
handleChange('category', e.target.value)} style={{ width: '100%', padding: '8px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '14px', }} />
handleChange('aircraft', e.target.value)} style={{ width: '100%', padding: '8px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '14px', }} />
) : ( `Категория: ${currentRisk.category} | ВС: ${currentRisk.aircraft}` )}
{!isEditing && ( )}
Общая информация
{isEditing ? (
handleChange('date', e.target.value)} style={{ width: '100%', padding: '8px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '14px', }} />
handleChange('responsible', e.target.value)} style={{ width: '100%', padding: '8px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '14px', }} />
handleChange('deadline', e.target.value)} style={{ width: '100%', padding: '8px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '14px', }} />
) : (
Статус:
{currentRisk.status}
Дата выявления:
{currentRisk.date}
{currentRisk.responsible && (
Ответственный:
{currentRisk.responsible}
)} {currentRisk.deadline && (
Срок устранения:
{currentRisk.deadline}
)}
)}

Описание риска

{isEditing ? (