import React from 'react';
import { useRouter } from 'next/router';
import { useQuery } from '@apollo/client';
import Head from 'next/head';
import Header from '@/components/Header';
import Footer from '@/components/Footer';
import { GET_LAXIMO_CATALOG_INFO, SEARCH_LAXIMO_OEM } from '@/lib/graphql';
import { LaximoCatalogInfo, LaximoOEMResult } from '@/types/laximo';
import MetaTags from '@/components/MetaTags';
import { getMetaByPath } from '@/lib/meta-config';
const InfoPartDetail = ({ brandName, oemNumber }: { brandName: string; oemNumber: string }) => (
Подробная информация о детали {oemNumber}
);
const PartDetailPage = () => {
const router = useRouter();
const { brand, vehicleId, oemNumber } = router.query;
// Получаем SSD из localStorage или URL
const useStorage = router.query.use_storage === '1';
const ssdLengthFromUrl = router.query.ssd_length ? parseInt(router.query.ssd_length as string) : 0;
let finalSsd = '';
if (useStorage && typeof window !== 'undefined') {
const vehicleKey = `vehicle_ssd_${brand}_${vehicleId}`;
const storedSsd = localStorage.getItem(vehicleKey);
if (storedSsd) {
finalSsd = storedSsd;
}
}
// Получаем информацию о каталоге
const { data: catalogData, loading: catalogLoading } = useQuery<{ laximoCatalogInfo: LaximoCatalogInfo }>(
GET_LAXIMO_CATALOG_INFO,
{
variables: { catalogCode: brand },
skip: !brand,
errorPolicy: 'all',
}
);
// Получаем информацию о детали
const { data: oemData, loading: oemLoading, error: oemError } = useQuery<{ laximoOEMSearch: LaximoOEMResult }>(
SEARCH_LAXIMO_OEM,
{
variables: {
catalogCode: brand,
vehicleId: vehicleId,
oemNumber: oemNumber,
ssd: finalSsd
},
skip: !brand || vehicleId === undefined || vehicleId === null || !oemNumber || !finalSsd,
errorPolicy: 'all'
}
);
if (!brand || vehicleId === undefined || vehicleId === null || !oemNumber) {
return (
<>
Деталь не найдена
Деталь не найдена
Неверные параметры для отображения детали
>
);
}
const catalogInfo = catalogData?.laximoCatalogInfo;
const oemResult = oemData?.laximoOEMSearch;
const totalUnits = oemResult?.categories.reduce((total, cat) => total + cat.units.length, 0) || 0;
const totalDetails = oemResult?.categories.reduce((total, cat) =>
total + cat.units.reduce((unitTotal, unit) => unitTotal + unit.details.length, 0), 0) || 0;
const metaData = getMetaByPath('/vehicle-search');
return (
<>
{(catalogLoading || oemLoading) && (
Загружаем информацию о детали {oemNumber}...
)}
{oemError && !oemLoading && (
Ошибка загрузки
Не удалось загрузить информацию о детали: {oemError.message}
)}
{oemResult && oemResult.categories.length > 0 ? (
Применимость в автомобиле
Показывает, в каких узлах и категориях используется данная деталь
OEM номер
{oemResult.oemNumber}
Категорий
{oemResult.categories.length}
{oemResult.categories.map((category) => (
📂 {category.name}
{category.units.length} узл{category.units.length === 1 ? '' : category.units.length < 5 ? 'а' : 'ов'}
{category.units.map((unit) => (
{unit.imageurl && (

{
e.currentTarget.style.display = 'none';
}}
/>
)}
🔧 {unit.name}
{unit.code && (
Код: {unit.code}
)}
{unit.details.map((detail, index) => (
📄 {detail.name}
OEM номер:
{detail.oem}
{detail.brand && (
Бренд:
{detail.brand}
)}
{detail.amount && (
Количество:
{detail.amount}
)}
{detail.range && (
Период:
{detail.range}
)}
{detail.attributes && detail.attributes.length > 0 && (
Характеристики:
{detail.attributes.map((attr, attrIndex) => (
{attr.name || attr.key}: {attr.value}
))}
)}
))}
))}
))}
) : !oemLoading && (
Деталь не найдена
По номеру "{oemNumber}" ничего не найдено в данном автомобиле. Проверьте правильность номера или вернитесь к поиску.
)}
>
);
};
export default PartDetailPage;