diff --git a/src/components/VehicleSearchResults.tsx b/src/components/VehicleSearchResults.tsx index 8a2b9df..2746907 100644 --- a/src/components/VehicleSearchResults.tsx +++ b/src/components/VehicleSearchResults.tsx @@ -47,96 +47,119 @@ const VehicleSearchResults: React.FC = ({ } }; + // Функция для условного отображения атрибута + const renderAttribute = (label: string, value: string | undefined) => { + if (!value || value === '' || value === 'undefined') return null + return ( +
+ {label}: + {value} +
+ ) + } + if (results.length === 0) { return null; } return ( -
-
-

- Найденные автомобили ({results.length}) -

-
- -
+
+

+ Найдено автомобилей: {results.length} +

+ +
{results.map((vehicle, index) => (
handleSelectVehicle(vehicle)} > -
-
-

- {vehicle.name || `${vehicle.brand || 'Unknown'} ${vehicle.model || 'Vehicle'}`} -

- {vehicle.year && ( - - {vehicle.year} - - )} -
- -
- {vehicle.modification && ( -
- Модификация: - {vehicle.modification} -
- )} - {vehicle.bodytype && ( -
- Тип кузова: - {vehicle.bodytype} -
- )} - {vehicle.engine && ( -
- Двигатель: - {vehicle.engine} -
- )} -
- - {vehicle.notes && ( -
-
-
- - - -
-
-

- Примечание: {vehicle.notes} -

-
-
-
- )} + {/* Заголовок автомобиля */} +
+

+ {vehicle.name || `${vehicle.brand} ${vehicle.model}`} +

+

+ {vehicle.modification} ({vehicle.year}) +

-
- + {/* Основные характеристики */} +
+
Основные характеристики
+ {renderAttribute('Марка', vehicle.brand)} + {renderAttribute('Модель', vehicle.model)} + {renderAttribute('Год', vehicle.year)} + {renderAttribute('Кузов', vehicle.bodytype)} + {renderAttribute('Двигатель', vehicle.engine)} + {renderAttribute('Трансмиссия', vehicle.transmission)}
+ + {/* Дополнительные характеристики */} +
+
Дополнительные характеристики
+ {renderAttribute('Класс', vehicle.grade)} + {renderAttribute('Цвет кузова', vehicle.framecolor)} + {renderAttribute('Цвет салона', vehicle.trimcolor)} + {renderAttribute('Рынок', vehicle.market)} + {renderAttribute('Регион производства', vehicle.creationregion)} + {renderAttribute('Регион назначения', vehicle.destinationregion)} +
+ + {/* Технические характеристики */} +
+
Технические характеристики
+ {renderAttribute('Информация о двигателе', vehicle.engine_info)} + {renderAttribute('Номер двигателя', vehicle.engineno)} + {renderAttribute('Дата производства', vehicle.date)} + {renderAttribute('Произведен', vehicle.manufactured)} + {renderAttribute('Период производства', vehicle.prodPeriod)} + {renderAttribute('Диапазон производства', vehicle.prodRange)} +
+ + {/* Даты и периоды */} +
+
Даты и периоды
+ {renderAttribute('Дата с', vehicle.datefrom)} + {renderAttribute('Дата по', vehicle.dateto)} + {renderAttribute('Модельный год с', vehicle.modelyearfrom)} + {renderAttribute('Модельный год по', vehicle.modelyearto)} +
+ + {/* Опции и описание */} + {(vehicle.options || vehicle.description || vehicle.notes) && ( +
+
Опции и описание
+ {renderAttribute('Опции', vehicle.options)} + {renderAttribute('Описание', vehicle.description)} + {renderAttribute('Примечания', vehicle.notes)} +
+ )} + + {/* Системная информация */} +
+
+
ID: {vehicle.vehicleid}
+ {vehicle.catalog &&
Каталог: {vehicle.catalog}
} + {vehicle.ssd && ( +
SSD: {vehicle.ssd.length > 50 ? `${vehicle.ssd.substring(0, 50)}...` : vehicle.ssd}
+ )} +
+
+ + {/* Debug информация (только в development) */} + {process.env.NODE_ENV === 'development' && ( +
+
Debug Info:
+
+                  {JSON.stringify(vehicle, null, 2)}
+                
+
+ )}
))}
- -
- Показано {results.length} результат{results.length === 1 ? '' : results.length < 5 ? 'а' : 'ов'} - Кликните на автомобиль для подбора запчастей -
); }; diff --git a/src/lib/graphql.ts b/src/lib/graphql.ts index 610a071..3d03d1c 100644 --- a/src/lib/graphql.ts +++ b/src/lib/graphql.ts @@ -540,7 +540,9 @@ export const FIND_LAXIMO_VEHICLE_BY_WIZARD = gql` query FindLaximoVehicleByWizard($catalogCode: String!, $ssd: String!) { laximoFindVehicleByWizard(catalogCode: $catalogCode, ssd: $ssd) { vehicleid + name brand + catalog model modification year @@ -548,12 +550,29 @@ export const FIND_LAXIMO_VEHICLE_BY_WIZARD = gql` engine notes ssd + transmission + date + manufactured + framecolor + trimcolor + engine_info + engineno + market + prodRange + prodPeriod + destinationregion + creationregion + datefrom + dateto + modelyearfrom + modelyearto + options + description + grade } } `; - - export const FIND_LAXIMO_VEHICLE_BY_PLATE = gql` query FindLaximoVehicleByPlate($catalogCode: String!, $plateNumber: String!) { laximoFindVehicleByPlate(catalogCode: $catalogCode, plateNumber: $plateNumber) { @@ -628,8 +647,6 @@ export const FIND_LAXIMO_VEHICLE_BY_PLATE_GLOBAL = gql` } `; - - export const FIND_LAXIMO_PART_REFERENCES = gql` query FindLaximoPartReferences($partNumber: String!) { laximoFindPartReferences(partNumber: $partNumber) @@ -695,6 +712,25 @@ export const FIND_LAXIMO_VEHICLES_BY_PART_NUMBER = gql` engine notes ssd + transmission + date + manufactured + framecolor + trimcolor + engine_info + engineno + market + prodRange + prodPeriod + destinationregion + creationregion + datefrom + dateto + modelyearfrom + modelyearto + options + description + grade } } } diff --git a/src/types/laximo.ts b/src/types/laximo.ts index 5ac703e..dbc0717 100644 --- a/src/types/laximo.ts +++ b/src/types/laximo.ts @@ -88,7 +88,6 @@ export interface LaximoVehicleSearchResult { // Дополнительные атрибуты из документации Laximo grade?: string transmission?: string - doors?: string creationregion?: string destinationregion?: string date?: string @@ -97,12 +96,6 @@ export interface LaximoVehicleSearchResult { trimcolor?: string datefrom?: string dateto?: string - frame?: string - frames?: string - framefrom?: string - frameto?: string - engine1?: string - engine2?: string engine_info?: string engineno?: string options?: string @@ -112,8 +105,9 @@ export interface LaximoVehicleSearchResult { market?: string prodRange?: string prodPeriod?: string - carpet_color?: string - seat_combination_code?: string + + // Дополнительные атрибуты (могут приходить в виде массива attributes) + sales_code?: string } export interface LaximoVehicleInfo {