import React, { useState } from 'react'; import axios from 'axios'; import './MobileForm.css'; interface PsychotypeAnswers { unfamiliar_env?: string; stress_reaction?: string; group_role?: string; risk_taking?: string; } interface FormData { age?: number; gender?: string; diagnosis_type?: string[]; psychotype_answers?: PsychotypeAnswers; } const MobileForm: React.FC = () => { const [formData, setFormData] = useState({ diagnosis_type: [], psychotype_answers: {} }); const [submitting, setSubmitting] = useState(false); const [success, setSuccess] = useState(false); const [error, setError] = useState(null); const handlePsychotypeAnswer = (question: keyof PsychotypeAnswers, value: string) => { setFormData(prev => ({ ...prev, psychotype_answers: { ...prev.psychotype_answers, [question]: value } })); }; const isPsychotypeSelected = (question: keyof PsychotypeAnswers, value: string) => { return formData.psychotype_answers?.[question] === value; }; const validateForm = (): string | null => { if (!formData.age || formData.age < 0 || formData.age > 120) { return 'Укажите корректный возраст'; } if (!formData.gender) { return 'Выберите пол'; } return null; }; const handleSubmit = async () => { const validationError = validateForm(); if (validationError) { setError(validationError); return; } setSubmitting(true); setError(null); try { const response = await axios.post('/api/v1/cases', formData); console.log('Case created:', response.data); setSuccess(true); setTimeout(() => { setFormData({ diagnosis_type: [], psychotype_answers: {} }); setSuccess(false); }, 2000); } catch (err: any) { setError(err.response?.data?.detail || 'Ошибка при создании карточки'); console.error('Submit error:', err); } finally { setSubmitting(false); } }; if (success) { return (
✓

Карточка создана!

Данные успешно сохранены

); } return (

Карточка пропавшего

{error && (
{error}
)}

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

setFormData({...formData, age: parseInt(e.target.value)})} required />

Диагнозы (если есть)

{['РАС', 'эпилепсия', 'СДВГ', 'деменция'].map(diagnosis => ( ))}

Поведение ребёнка (спросить родителей)

Помогает уточнить зону поиска

); }; export default MobileForm;