Добавлена возможность добавлять новые товары в витринный комплект при редактировании

- Интегрирован готовый компонент ProductSearchPicker в модалку редактирования
- Добавлен collapse-блок с поиском товаров, который отображается только в режиме редактирования
- При выборе товара он автоматически добавляется в tempCart или увеличивается количество если уже есть
- Добавлен CSS и JS для компонента product-search-picker
- В view передаётся categories QuerySet для работы фильтров компонента
- Блок добавления товаров показывается только при редактировании, скрыт при создании нового комплекта
This commit is contained in:
2025-12-14 14:00:51 +03:00
parent aff25d0317
commit ce2cfca3f2
3 changed files with 55 additions and 2 deletions

View File

@@ -1354,9 +1354,44 @@ async function openEditKitModal(kitId) {
document.getElementById('createTempKitModalLabel').textContent = 'Редактирование витринного букета';
document.getElementById('confirmCreateTempKit').textContent = 'Сохранить изменения';
// Показываем кнопку "Разобрать" и скрываем поле "Количество букетов" в режиме редактирования
// Показываем кнопку "Разобрать" и блок добавления товаров
document.getElementById('disassembleKitBtn').style.display = 'block';
document.getElementById('showcaseKitQuantityBlock').style.display = 'none';
document.getElementById('addProductBlock').style.display = 'block';
// Инициализируем компонент поиска товаров
setTimeout(() => {
if (window.ProductSearchPicker) {
const picker = ProductSearchPicker.init('#temp-kit-product-picker', {
onAddSelected: function(product, instance) {
if (product) {
// Добавляем товар в tempCart
const cartKey = `product-${product.id}`;
if (tempCart.has(cartKey)) {
// Увеличиваем количество
const existing = tempCart.get(cartKey);
existing.qty += 1;
} else {
// Добавляем новый товар
tempCart.set(cartKey, {
id: product.id,
name: product.text || product.name,
price: Number(product.price || 0),
qty: 1,
type: 'product'
});
}
// Обновляем отображение
renderTempKitItems();
// Очищаем выбор в пикере
instance.clearSelection();
}
}
});
}
}, 100);
// Открываем модальное окно
const modal = new bootstrap.Modal(document.getElementById('createTempKitModal'));
@@ -1886,9 +1921,10 @@ document.getElementById('createTempKitModal').addEventListener('hidden.bs.modal'
document.getElementById('createTempKitModalLabel').textContent = 'Создать витринный букет из корзины';
document.getElementById('confirmCreateTempKit').innerHTML = '<i class="bi bi-check-circle"></i> Создать и зарезервировать';
// Скрываем кнопку "Разобрать" и показываем поле "Количество букетов"
// Скрываем кнопку "Разобрать" и блок добавления товаров
document.getElementById('disassembleKitBtn').style.display = 'none';
document.getElementById('showcaseKitQuantityBlock').style.display = 'block';
document.getElementById('addProductBlock').style.display = 'none';
}
});