import React, { useState } from 'react'; import { useRouter } from 'next/router'; import { useQuery } from '@apollo/client'; import { GET_LAXIMO_QUICK_DETAIL } from '@/lib/graphql'; import { LaximoQuickDetail, LaximoUnit, LaximoDetail } from '@/types/laximo'; import BrandSelectionModal from './BrandSelectionModal'; interface GroupDetailsSectionProps { catalogCode: string; vehicleId: string; quickGroupId: string; groupName: string; ssd: string; onBack: () => void; } interface DetailCardProps { detail: LaximoDetail; } const DetailCard: React.FC = ({ detail }) => { const [isBrandModalOpen, setIsBrandModalOpen] = useState(false); const handleDetailClick = () => { const articleNumber = detail.oem; console.log('🔍 Клик по детали для выбора бренда:', { articleNumber, name: detail.name }); setIsBrandModalOpen(true); }; const handleCloseBrandModal = () => { setIsBrandModalOpen(false); }; const handleAddToCart = () => { // TODO: Реализовать добавление в корзину console.log('Добавить в корзину:', detail.oem); alert(`Функция "Добавить в корзину" будет реализована в ближайшее время.\nДеталь: ${detail.name}\nOEM: ${detail.oem}`); }; return (

{detail.name}

OEM: {detail.oem}
{detail.brand && (
{detail.brand}
)}
{detail.description && (

{detail.description}

)} {detail.applicablemodels && (
Применимые модели:

{detail.applicablemodels}

)} {detail.note && (
Примечание:

{detail.note}

)} {detail.attributes && detail.attributes.length > 0 && (
{detail.attributes.map((attr, index) => (
{attr.name || attr.key}: {attr.value}
))}
)}
); }; interface UnitSectionProps { unit: LaximoUnit; } const UnitSection: React.FC = ({ unit }) => { return (

{unit.name}

{unit.code && (

Код: {unit.code}

)} {unit.description && (

{unit.description}

)}
{unit.details && unit.details.length > 0 && (
{unit.details.length} {unit.details.length === 1 ? 'деталь' : 'деталей'}
)}
{unit.details && unit.details.length > 0 ? (
{unit.details.map((detail) => ( ))}
) : (

В этом узле пока нет доступных деталей

)}
); }; const GroupDetailsSection: React.FC = ({ catalogCode, vehicleId, quickGroupId, groupName, ssd, onBack }) => { console.log('🔍 GroupDetailsSection получил параметры:', { catalogCode, vehicleId, quickGroupId, quickGroupIdType: typeof quickGroupId, quickGroupIdLength: quickGroupId?.length, groupName, ssd: ssd ? `${ssd.substring(0, 30)}...` : 'отсутствует' }); const { data, loading, error } = useQuery<{ laximoQuickDetail: LaximoQuickDetail }>( GET_LAXIMO_QUICK_DETAIL, { variables: quickGroupId ? { catalogCode, vehicleId, quickGroupId, ssd } : undefined, skip: !catalogCode || vehicleId === undefined || vehicleId === null || !quickGroupId || !ssd || ssd.trim() === '', errorPolicy: 'all' } ); if (loading) { return (

Загружаем детали группы...

{groupName}

); } if (error) { console.error('Ошибка загрузки деталей группы:', error); // Определяем тип ошибки для показа соответствующего сообщения const isInvalidParameterError = error.message.includes('E_INVALIDPARAMETER') || error.message.includes('INVALIDPARAMETER') || error.message.includes('QuickGroupId'); return (
{isInvalidParameterError ? ( <>

Неподдерживаемая группа

Группа "{groupName}" (ID: {quickGroupId}) не поддерживается API Laximo для данного автомобиля.

💡 Рекомендации:

  • • Попробуйте использовать "Категории каталога"
  • • Воспользуйтесь поиском по артикулу
  • • Попробуйте поиск по названию детали
  • • Используйте "Группы быстрого поиска"
) : ( <>

Ошибка загрузки деталей

Не удалось загрузить детали для группы "{groupName}"

Ошибка: {error.message}

)}
); } if (!data?.laximoQuickDetail) { return (

Детали не найдены

Для группы "{groupName}" не найдено доступных деталей

); } const quickDetail = data.laximoQuickDetail; const totalDetails = quickDetail.units?.reduce((total, unit) => total + (unit.details?.length || 0), 0) || 0; return (
{/* Шапка */}

{quickDetail.name || groupName}

ID группы: {quickDetail.quickgroupid}

Найдено

{totalDetails}

{totalDetails === 1 ? 'деталь' : 'деталей'}

{/* Список узлов и деталей */} {quickDetail.units && quickDetail.units.length > 0 ? (
{quickDetail.units.map((unit) => ( ))}
) : (

Узлы не найдены

В этой группе пока нет доступных узлов и деталей

)}
); }; export default GroupDetailsSection;