Завершение rebase с обновленными компонентами
This commit is contained in:
@ -74,6 +74,8 @@ const VehicleDetailsPage = () => {
|
||||
});
|
||||
const [selectedNode, setSelectedNode] = useState<any | null>(null);
|
||||
const [selectedQuickGroup, setSelectedQuickGroup] = useState<any | null>(null);
|
||||
const [selectedParts, setSelectedParts] = useState<Set<string | number>>(new Set());
|
||||
const [highlightedPart, setHighlightedPart] = useState<string | number | null>(null);
|
||||
|
||||
// Получаем информацию о выбранном автомобиле
|
||||
const ssdFromQuery = Array.isArray(router.query.ssd) ? router.query.ssd[0] : router.query.ssd;
|
||||
@ -138,6 +140,20 @@ const VehicleDetailsPage = () => {
|
||||
);
|
||||
|
||||
// Получаем детали выбранного узла, если он выбран
|
||||
console.log('🔍 [vehicleId].tsx - Проверка условий для GET_LAXIMO_UNIT_DETAILS:', {
|
||||
selectedNode: selectedNode ? {
|
||||
unitid: selectedNode.unitid,
|
||||
name: selectedNode.name,
|
||||
hasSsd: !!selectedNode.ssd
|
||||
} : null,
|
||||
skipCondition: !selectedNode,
|
||||
catalogCode: selectedNode?.catalogCode || selectedNode?.catalog || brand,
|
||||
vehicleId: selectedNode?.vehicleId || vehicleId,
|
||||
unitId: selectedNode?.unitid || selectedNode?.unitId,
|
||||
ssd: selectedNode?.ssd || finalSsd || '',
|
||||
finalSsd: finalSsd ? `${finalSsd.substring(0, 50)}...` : 'отсутствует'
|
||||
});
|
||||
|
||||
const {
|
||||
data: unitDetailsData,
|
||||
loading: unitDetailsLoading,
|
||||
@ -155,6 +171,23 @@ const VehicleDetailsPage = () => {
|
||||
: { catalogCode: '', vehicleId: '', unitId: '', ssd: '' },
|
||||
skip: !selectedNode,
|
||||
errorPolicy: 'all',
|
||||
fetchPolicy: 'no-cache',
|
||||
notifyOnNetworkStatusChange: true,
|
||||
onCompleted: (data) => {
|
||||
console.log('🔍 [vehicleId].tsx - GET_LAXIMO_UNIT_DETAILS completed:', {
|
||||
detailsCount: data?.laximoUnitDetails?.length || 0,
|
||||
firstDetail: data?.laximoUnitDetails?.[0],
|
||||
allDetails: data?.laximoUnitDetails?.map((detail: any) => ({
|
||||
name: detail.name,
|
||||
oem: detail.oem,
|
||||
codeonimage: detail.codeonimage,
|
||||
attributesCount: detail.attributes?.length || 0
|
||||
}))
|
||||
});
|
||||
},
|
||||
onError: (error) => {
|
||||
console.error('❌ [vehicleId].tsx - GET_LAXIMO_UNIT_DETAILS error:', error);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@ -234,6 +267,22 @@ const VehicleDetailsPage = () => {
|
||||
|
||||
const unitDetails = unitDetailsData?.laximoUnitDetails || [];
|
||||
|
||||
// Детальное логирование данных от API
|
||||
React.useEffect(() => {
|
||||
if (unitDetailsData?.laximoUnitDetails) {
|
||||
console.log('🔍 [vehicleId].tsx - Полные данные unitDetails от API:', {
|
||||
totalParts: unitDetailsData.laximoUnitDetails.length,
|
||||
firstPart: unitDetailsData.laximoUnitDetails[0],
|
||||
allCodeOnImages: unitDetailsData.laximoUnitDetails.map((part: any) => ({
|
||||
name: part.name,
|
||||
codeonimage: part.codeonimage,
|
||||
detailid: part.detailid,
|
||||
oem: part.oem
|
||||
}))
|
||||
});
|
||||
}
|
||||
}, [unitDetailsData]);
|
||||
|
||||
// Логируем ошибки
|
||||
if (vehicleError) {
|
||||
console.error('Vehicle GraphQL error:', vehicleError);
|
||||
@ -382,6 +431,9 @@ const VehicleDetailsPage = () => {
|
||||
});
|
||||
|
||||
setSelectedNode(node);
|
||||
// Сброс состояния выбранных деталей при открытии нового узла
|
||||
setSelectedParts(new Set());
|
||||
setHighlightedPart(null);
|
||||
router.push(
|
||||
{ pathname: router.pathname, query: { ...router.query, unitid: node.unitid || node.id } },
|
||||
undefined,
|
||||
@ -391,6 +443,9 @@ const VehicleDetailsPage = () => {
|
||||
// Закрыть KnotIn и удалить unitid из URL
|
||||
const closeKnot = () => {
|
||||
setSelectedNode(null);
|
||||
// Сброс состояния выбранных деталей при закрытии узла
|
||||
setSelectedParts(new Set());
|
||||
setHighlightedPart(null);
|
||||
const { unitid, ...rest } = router.query;
|
||||
router.push(
|
||||
{ pathname: router.pathname, query: rest },
|
||||
@ -399,6 +454,25 @@ const VehicleDetailsPage = () => {
|
||||
);
|
||||
};
|
||||
|
||||
// Обработчик выбора детали (множественный выбор)
|
||||
const handlePartSelect = (codeOnImage: string | number | null) => {
|
||||
if (codeOnImage === null) return; // Игнорируем null значения
|
||||
setSelectedParts(prev => {
|
||||
const newSet = new Set(prev);
|
||||
if (newSet.has(codeOnImage)) {
|
||||
newSet.delete(codeOnImage); // Убираем если уже выбрана
|
||||
} else {
|
||||
newSet.add(codeOnImage); // Добавляем если не выбрана
|
||||
}
|
||||
return newSet;
|
||||
});
|
||||
};
|
||||
|
||||
// Обработчик подсветки детали при наведении
|
||||
const handlePartHighlight = (codeOnImage: string | number | null) => {
|
||||
setHighlightedPart(codeOnImage);
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<MetaTags {...metaData} />
|
||||
@ -551,6 +625,9 @@ const VehicleDetailsPage = () => {
|
||||
unitId={selectedNode.unitid}
|
||||
unitName={selectedNode.name}
|
||||
parts={unitDetails}
|
||||
onPartSelect={handlePartSelect}
|
||||
onPartsHighlight={handlePartHighlight}
|
||||
selectedParts={selectedParts}
|
||||
/>
|
||||
{unitDetailsLoading ? (
|
||||
<div style={{ padding: 24, textAlign: 'center' }}>Загружаем детали узла...</div>
|
||||
@ -561,6 +638,10 @@ const VehicleDetailsPage = () => {
|
||||
parts={unitDetails}
|
||||
catalogCode={vehicleInfo.catalog}
|
||||
vehicleId={vehicleInfo.vehicleid}
|
||||
highlightedCodeOnImage={highlightedPart}
|
||||
selectedParts={selectedParts}
|
||||
onPartSelect={handlePartSelect}
|
||||
onPartHover={handlePartHighlight}
|
||||
/>
|
||||
) : (
|
||||
<div style={{ padding: 24, textAlign: 'center' }}>Детали не найдены</div>
|
||||
|
Reference in New Issue
Block a user