Исправлены расчеты цен в корзине и добавлена логика загрузки единиц для категорий. Обновлены компоненты CartInfo, CartList, CartSummary, VinCategory и VinLeftbar для корректного отображения итоговых цен и улучшения взаимодействия с пользователем.

This commit is contained in:
Bivekich
2025-07-08 13:25:49 +03:00
parent f0e873fdd1
commit 8055886082
7 changed files with 231 additions and 107 deletions

View File

@ -90,13 +90,20 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
}, [router.query.catpath]);
const handleToggle = (categoryId: string, level: number) => {
console.log('🔄 VinLeftbar: handleToggle вызван для categoryId:', categoryId, 'level:', level, 'текущий openedPath:', openedPath);
if (openedPath[level] === categoryId) {
setOpenedPathAndUrl(openedPath.slice(0, level));
const newPath = openedPath.slice(0, level);
console.log('🔄 VinLeftbar: Закрываем категорию, новый path:', newPath);
setOpenedPathAndUrl(newPath);
} else {
setOpenedPathAndUrl([...openedPath.slice(0, level), categoryId]);
const newPath = [...openedPath.slice(0, level), categoryId];
console.log('🔄 VinLeftbar: Открываем категорию, новый path:', newPath);
setOpenedPathAndUrl(newPath);
// Загружаем units для категории, если они еще не загружены
if (activeTabProp === 'manufacturer' && !unitsByCategory[categoryId]) {
console.log('🔄 VinLeftbar: Загружаем units для categoryId:', categoryId);
lastCategoryIdRef.current = categoryId;
getUnits({
variables: {
@ -330,7 +337,8 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
e.preventDefault();
if (searchQuery) setSearchQuery('');
if (onActiveTabChange) onActiveTabChange('manufacturer');
if (onQuickGroupSelect) onQuickGroupSelect(null);
// Не вызываем onQuickGroupSelect с null - это вызывает ошибку
// Просто переключаем вкладку, а обработка отображения происходит через activeTab
}}
>
От производителя
@ -472,13 +480,15 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
) : (
<>
{categories.map((category: any, idx: number) => {
const isOpen = openedPath.includes(category.quickgroupid);
// ИСПРАВЛЕНИЕ: Используем тот же приоритет ID, что и в VinCategory
const categoryId = category.quickgroupid || category.categoryid || category.id;
const isOpen = openedPath.includes(categoryId);
const subcategories = category.children && category.children.length > 0
? category.children
: unitsByCategory[category.quickgroupid] || [];
: unitsByCategory[categoryId] || [];
return (
<div
key={category.quickgroupid}
key={categoryId}
data-hover="false"
data-delay="0"
className={`dropdown-4 w-dropdown${isOpen ? " w--open" : ""}`}
@ -487,7 +497,7 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
className={`dropdown-toggle-3 w-dropdown-toggle${isOpen ? " w--open" : ""}`}
onClick={(e) => {
e.preventDefault();
handleToggle(category.quickgroupid, 0);
handleToggle(categoryId, 0);
}}
style={{ cursor: "pointer" }}
>
@ -503,14 +513,23 @@ const VinLeftbar: React.FC<VinLeftbarProps> = ({ vehicleInfo, onSearchResults, o
className="dropdown-link-3 w-dropdown-link pl-0"
onClick={e => {
e.preventDefault();
// Если это конечная категория с link=true, открываем QuickGroup
if (subcat.link && onQuickGroupSelect) {
onQuickGroupSelect(subcat);
} else if (onNodeSelect) {
onNodeSelect({
// Для вкладки "От производителя" всегда открываем узел, не используем QuickGroup
if (onNodeSelect) {
const nodeToSelect = {
...subcat,
unitid: subcat.unitid || subcat.quickgroupid || subcat.id
};
// ОТЛАДКА: Логируем передачу узла
console.log('🔍 VinLeftbar передает узел:', {
unitId: nodeToSelect.unitid,
unitName: nodeToSelect.name,
hasOriginalSsd: !!subcat.ssd,
originalSsd: subcat.ssd ? `${subcat.ssd.substring(0, 50)}...` : 'отсутствует',
finalSsd: nodeToSelect.ssd ? `${nodeToSelect.ssd.substring(0, 50)}...` : 'отсутствует'
});
onNodeSelect(nodeToSelect);
}
}}
>