import React, { useState } from 'react'; import { useRouter } from 'next/router'; import { useLazyQuery } from '@apollo/client'; import { LaximoOEMResult } from '@/types/laximo'; import { SEARCH_LAXIMO_OEM } from '@/lib/graphql'; interface PartDetailCardProps { oem: string; name: string; brand?: string; description?: string; catalogCode: string; vehicleId: string; ssd: string; isExpanded?: boolean; onToggleExpand?: () => void; } const PartDetailCard: React.FC = ({ oem, name, brand, description, catalogCode, vehicleId, ssd, isExpanded = false, onToggleExpand }) => { const router = useRouter(); const [localExpanded, setLocalExpanded] = useState(false); // Используем локальное состояние если нет внешнего контроля const expanded = onToggleExpand ? isExpanded : localExpanded; const toggleExpand = onToggleExpand || (() => setLocalExpanded(!localExpanded)); const [executeOEMSearch, { data, loading, error }] = useLazyQuery(SEARCH_LAXIMO_OEM, { errorPolicy: 'all' }); const handleToggleExpand = () => { toggleExpand(); // Загружаем данные только при первом раскрытии if (!expanded && !data && !loading) { executeOEMSearch({ variables: { catalogCode, vehicleId, oemNumber: oem, ssd } }); } }; const handleFindOffers = () => { console.log('🔍 Выбрана деталь для поиска предложений:', name, 'OEM:', oem); // Переходим на страницу выбора бренда const url = `/vehicle-search/${catalogCode}/${vehicleId}/part/${oem}/brands?detailName=${encodeURIComponent(name || '')}`; router.push(url); }; const handleOpenFullInfo = () => { // Переход на отдельную страницу с детальной информацией о детали const url = `/vehicle-search/${catalogCode}/${vehicleId}/part/${oem}?use_storage=1&ssd_length=${ssd.length}`; router.push(url); }; const oemResult: LaximoOEMResult | null = data?.laximoOEMSearch || null; const totalUnits = oemResult?.categories.reduce((total, cat) => total + cat.units.length, 0) || 0; return (
{/* Основная информация - кликабельная область */}

{name}

OEM: {oem}
{brand && (
Бренд: {brand}
)}
{description && (

{description}

)} {/* Подсказка о переходе */}
Нажмите, чтобы найти предложения для этой детали
{/* Краткая информация о применимости */} {oemResult && (
Применимость: {oemResult.categories.length} категорий, {totalUnits} узлов
)}
{/* Иконка перехода */}
{/* Дополнительные действия */}
{/* Развернутая информация */} {expanded && (

Применимость в автомобиле:

{loading && (
Загружаем информацию...
)} {error && (
Ошибка загрузки: {error.message}
)} {oemResult && (
{oemResult.categories.map((category) => (
{category.name}
{category.units.map((unit) => (
{unit.name} {unit.code && ( ({unit.code}) )}
{unit.details.map((detail, index) => (
{detail.name}
{detail.amount && (
Количество: {detail.amount}
)} {detail.range && (
Период: {detail.range}
)}
))}
))}
))}
)} {!loading && !error && !oemResult && (
Информация о применимости не найдена
)}
)}
); }; export default PartDetailCard;