import React, { useState, useEffect } from 'react'; import { Link } from 'react-router-dom'; import axios from 'axios'; import './CasesList.css'; const CasesList = () => { const [cases, setCases] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [filters, setFilters] = useState({ gender: '', ageFrom: '', ageTo: '', diagnosis: '', psychotype: '' }); useEffect(() => { fetchCases(); }, [filters]); const fetchCases = async () => { setLoading(true); try { const params = new URLSearchParams(); if (filters.gender) params.append('gender', filters.gender); if (filters.ageFrom) params.append('age_from', filters.ageFrom); if (filters.ageTo) params.append('age_to', filters.ageTo); if (filters.diagnosis) params.append('diagnosis', filters.diagnosis); if (filters.psychotype) params.append('psychotype', filters.psychotype); const response = await axios.get(`/api/v1/cases?${params}`); setCases(response.data); setError(null); } catch (err) { setError('Ошибка загрузки данных'); console.error(err); } finally { setLoading(false); } }; const formatDate = (dateString) => { if (!dateString) return 'Не указано'; return new Date(dateString).toLocaleDateString('ru-RU'); }; const getPsychotypeLabel = (psychotype) => { const labels = { 'explorer': 'Исследователь', 'cautious': 'Осторожный', 'passive': 'Пассивный', 'panicker': 'Паникёр' }; return labels[psychotype] || psychotype; }; return (

Карточки пропавших

{/* Фильтры */}
setFilters({...filters, ageFrom: e.target.value})} placeholder="0" />
setFilters({...filters, ageTo: e.target.value})} placeholder="100" />
{/* Таблица */} {loading ? (
Загрузка...
) : error ? (
{error}
) : cases.length === 0 ? (
Карточки не найдены
) : (
{cases.map(caseItem => ( ))}
ID Возраст Пол Диагнозы Психотип Дата создания Действия
{caseItem.id} {caseItem.age || '—'} {caseItem.gender === 'male' ? 'М' : caseItem.gender === 'female' ? 'Ж' : '—'} {caseItem.diagnosis_type && caseItem.diagnosis_type.length > 0 ? caseItem.diagnosis_type.join(', ') : '—'} {caseItem.psychotype_result ? {getPsychotypeLabel(caseItem.psychotype_result)} : '—'} {formatDate(caseItem.created_at)} Подробнее
)}

Всего карточек: {cases.length}

); }; export default CasesList;