import React, { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import axios from 'axios'; import './CaseDetail.css'; const CaseDetail = () => { const { id } = useParams(); const navigate = useNavigate(); const [caseData, setCase] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchCase(); }, [id]); const fetchCase = async () => { setLoading(true); try { const response = await axios.get(`/api/v1/cases/${id}`); setCase(response.data); setError(null); } catch (err) { setError('Ошибка загрузки карточки'); console.error(err); } finally { setLoading(false); } }; const formatDate = (dateString) => { if (!dateString) return 'Не указано'; return new Date(dateString).toLocaleString('ru-RU'); }; const getPsychotypeDescription = (psychotype) => { const descriptions = { 'explorer': { title: 'Исследователь', description: 'Активно исследует территорию, может уйти далеко от точки потери', searchTips: 'Расширенный радиус поиска, проверка интересных объектов' }, 'cautious': { title: 'Осторожный', description: 'Осторожен, держится знакомых мест', searchTips: 'Поиск вблизи точки потери, знакомые маршруты' }, 'passive': { title: 'Пассивный', description: 'Ждёт помощи, малоподвижен', searchTips: 'Тщательный осмотр укрытий, проверка мест для отдыха' }, 'panicker': { title: 'Паникёр', description: 'Паникует, может двигаться хаотично', searchTips: 'Проверка опасных мест, водоёмов, обрывов' } }; return descriptions[psychotype] || { title: psychotype, description: '', searchTips: '' }; }; if (loading) return
Загрузка...
; if (error) return
{error}
; if (!caseData) return
Карточка не найдена
; const psychotypeInfo = caseData.psychotype_result ? getPsychotypeDescription(caseData.psychotype_result) : null; return (

Карточка #{caseData.id}

{/* Основная информация */}

Основная информация

{caseData.age || '—'} лет
{caseData.gender === 'male' ? 'Мужской' : caseData.gender === 'female' ? 'Женский' : '—'}
{formatDate(caseData.created_at)}
{/* Диагнозы */} {caseData.diagnosis_type && caseData.diagnosis_type.length > 0 && (

Диагнозы

{caseData.diagnosis_type.map((diagnosis, idx) => ( {diagnosis} ))}
)} {/* Психотип */} {psychotypeInfo && (

Психотип: {psychotypeInfo.title}

{psychotypeInfo.description}

Рекомендации по поиску:

{psychotypeInfo.searchTips}

)} {/* Ответы на вопросы психотипа */} {caseData.psychotype_answers && Object.keys(caseData.psychotype_answers).length > 0 && (

Ответы на вопросы

{caseData.psychotype_answers.unfamiliar_env && (
{caseData.psychotype_answers.unfamiliar_env}
)} {caseData.psychotype_answers.stress_reaction && (
{caseData.psychotype_answers.stress_reaction}
)} {caseData.psychotype_answers.group_role && (
{caseData.psychotype_answers.group_role}
)} {caseData.psychotype_answers.risk_taking && (
{caseData.psychotype_answers.risk_taking}
)}
)}
); }; export default CaseDetail;