добавлен роутинг между категориями
This commit is contained in:
@ -309,6 +309,73 @@ const VehicleDetailsPage = () => {
|
||||
ogDescription: `Найдите и купите запчасти для ${vehicleName}. Широкий выбор оригинальных и аналоговых запчастей.`
|
||||
};
|
||||
|
||||
// --- Синхронизация selectedQuickGroup с URL ---
|
||||
// Функция для открытия VinQuick и добавления quickgroup в URL
|
||||
const openQuickGroup = (group: any) => {
|
||||
setSelectedQuickGroup(group);
|
||||
router.push(
|
||||
{ pathname: router.pathname, query: { ...router.query, quickgroup: group.quickgroupid } },
|
||||
undefined,
|
||||
{ shallow: true }
|
||||
);
|
||||
};
|
||||
// Функция для закрытия VinQuick и удаления quickgroup из URL
|
||||
const closeQuickGroup = () => {
|
||||
setSelectedQuickGroup(null);
|
||||
const { quickgroup, ...rest } = router.query;
|
||||
router.push(
|
||||
{ pathname: router.pathname, query: rest },
|
||||
undefined,
|
||||
{ shallow: true }
|
||||
);
|
||||
};
|
||||
// Следим за изменением quickgroup в URL и обновляем selectedQuickGroup
|
||||
useEffect(() => {
|
||||
const quickgroupId = router.query.quickgroup as string;
|
||||
if (quickgroupId) {
|
||||
// Найти группу по id (в openedPath или где-то ещё)
|
||||
// Для простоты: если есть selectedQuickGroup и id совпадает — ничего не делаем
|
||||
if (selectedQuickGroup && selectedQuickGroup.quickgroupid === quickgroupId) return;
|
||||
// Иначе ищем в openedPath или в категориях (можно доработать)
|
||||
// Пока просто создаём объект-заглушку
|
||||
setSelectedQuickGroup({ quickgroupid: quickgroupId });
|
||||
} else {
|
||||
setSelectedQuickGroup(null);
|
||||
}
|
||||
}, [router.query.quickgroup]);
|
||||
|
||||
// --- Синхронизация selectedNode (KnotIn) с URL ---
|
||||
// Открыть KnotIn и добавить unitid в URL
|
||||
const openKnot = (node: any) => {
|
||||
setSelectedNode(node);
|
||||
router.push(
|
||||
{ pathname: router.pathname, query: { ...router.query, unitid: node.unitid || node.id } },
|
||||
undefined,
|
||||
{ shallow: true }
|
||||
);
|
||||
};
|
||||
// Закрыть KnotIn и удалить unitid из URL
|
||||
const closeKnot = () => {
|
||||
setSelectedNode(null);
|
||||
const { unitid, ...rest } = router.query;
|
||||
router.push(
|
||||
{ pathname: router.pathname, query: rest },
|
||||
undefined,
|
||||
{ shallow: true }
|
||||
);
|
||||
};
|
||||
// Следить за изменением unitid в URL и обновлять selectedNode
|
||||
useEffect(() => {
|
||||
const unitid = router.query.unitid as string;
|
||||
if (unitid) {
|
||||
if (selectedNode && (selectedNode.unitid === unitid || selectedNode.id === unitid)) return;
|
||||
// Можно доработать: искать node по unitid в категориях/группах
|
||||
setSelectedNode({ unitid });
|
||||
} else {
|
||||
setSelectedNode(null);
|
||||
}
|
||||
}, [router.query.unitid]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<MetaTags {...metaData} />
|
||||
@ -339,9 +406,9 @@ const VehicleDetailsPage = () => {
|
||||
setFoundParts(results);
|
||||
setSearchState({ loading, error, query, isSearching: isSearching || false });
|
||||
}}
|
||||
onNodeSelect={setSelectedNode}
|
||||
onNodeSelect={openKnot}
|
||||
onActiveTabChange={(tab) => setActiveTab(tab)}
|
||||
onQuickGroupSelect={setSelectedQuickGroup}
|
||||
onQuickGroupSelect={openQuickGroup}
|
||||
activeTab={activeTab}
|
||||
openedPath={openedPath}
|
||||
setOpenedPath={setOpenedPath}
|
||||
@ -404,17 +471,17 @@ const VehicleDetailsPage = () => {
|
||||
catalogCode={vehicleInfo.catalog}
|
||||
vehicleId={vehicleInfo.vehicleid}
|
||||
ssd={vehicleInfo.ssd}
|
||||
onBack={() => setSelectedQuickGroup(null)}
|
||||
onNodeSelect={setSelectedNode}
|
||||
onBack={closeQuickGroup}
|
||||
onNodeSelect={openKnot}
|
||||
/>
|
||||
) : (
|
||||
<VinCategory
|
||||
catalogCode={vehicleInfo.catalog}
|
||||
vehicleId={vehicleInfo.vehicleid}
|
||||
ssd={vehicleInfo.ssd}
|
||||
onNodeSelect={setSelectedNode}
|
||||
onNodeSelect={openKnot}
|
||||
activeTab={activeTab}
|
||||
onQuickGroupSelect={setSelectedQuickGroup}
|
||||
onQuickGroupSelect={openQuickGroup}
|
||||
openedPath={openedPath}
|
||||
setOpenedPath={setOpenedPath}
|
||||
/>
|
||||
@ -441,10 +508,11 @@ const VehicleDetailsPage = () => {
|
||||
<KnotIn
|
||||
catalogCode={vehicleInfo.catalog}
|
||||
vehicleId={vehicleInfo.vehicleid}
|
||||
ssd={selectedNode.ssd || vehicleInfo.ssd} // ИСПРАВЛЕНИЕ: Используем SSD узла, fallback на родительский SSD
|
||||
ssd={selectedNode.ssd || vehicleInfo.ssd}
|
||||
unitId={selectedNode.unitid}
|
||||
unitName={selectedNode.name}
|
||||
parts={unitDetails}
|
||||
onBack={closeKnot}
|
||||
/>
|
||||
{unitDetailsLoading ? (
|
||||
<div style={{ padding: 24, textAlign: 'center' }}>Загружаем детали узла...</div>
|
||||
|
Reference in New Issue
Block a user