From c8284a6ac5a15901a7fbfb33e0d44a98d6140d6a Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Fri, 16 Jan 2026 19:06:36 +0300 Subject: [PATCH] =?UTF-8?q?fix(pos):=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D1=8C=20=D0=B0=D0=B2=D1=82=D0=BE=D1=84=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=D1=81=20=D0=BD=D0=B0=20=D0=BC=D0=BE=D0=B1=D0=B8?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=D1=83=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D1=81=D1=82=D0=B2=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлено определение мобильных устройств через User-Agent и ширину экрана. Фокус на поле поиска и поле ввода количества теперь устанавливается только на десктопах, чтобы избежать появления экранной клавиатуры на мобильных. --- myproject/pos/static/pos/js/terminal.js | 34 ++++++++++++++++++++----- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/myproject/pos/static/pos/js/terminal.js b/myproject/pos/static/pos/js/terminal.js index 6746f9d..d519030 100644 --- a/myproject/pos/static/pos/js/terminal.js +++ b/myproject/pos/static/pos/js/terminal.js @@ -1113,8 +1113,11 @@ async function addToCart(item) { const itemIndex = Array.from(cart.keys()).indexOf(cartKey); if (itemIndex !== -1 && qtyInputs[itemIndex]) { - qtyInputs[itemIndex].focus(); - qtyInputs[itemIndex].select(); // Выделяем весь текст + // Устанавливаем фокус только на десктопных устройствах + if (!isMobileDevice()) { + qtyInputs[itemIndex].focus(); + qtyInputs[itemIndex].select(); // Выделяем весь текст + } } }, 50); } @@ -1659,7 +1662,7 @@ 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'; @@ -2192,6 +2195,23 @@ document.getElementById('disassembleKitBtn').addEventListener('click', async () } }); +// Вспомогательная функция для определения мобильного устройства +function isMobileDevice() { + // Проверяем по юзер-агенту и размеру экрана + const userAgent = navigator.userAgent || navigator.vendor || window.opera; + + // Проверка по юзер-агенту + const mobileKeywords = ['Android', 'webOS', 'iPhone', 'iPad', 'iPod', 'BlackBerry', 'Windows Phone']; + const isMobileUA = mobileKeywords.some(keyword => + userAgent.indexOf(keyword) > -1 + ); + + // Проверка по размеру экрана (ширина меньше 768px часто указывает на мобильные устройства) + const isSmallScreen = window.innerWidth < 768; + + return isMobileUA || isSmallScreen; +} + // Вспомогательная функция для получения CSRF токена (единая версия) function getCookie(name) { let cookieValue = null; @@ -3242,8 +3262,10 @@ renderProducts(); // Сначала пустая сетка renderCart(); setupInfiniteScroll(); // Установка infinite scroll -// Установить фокус на строку поиска -document.getElementById('searchInput').focus(); +// Установить фокус на строку поиска только на десктопе +if (!isMobileDevice()) { + document.getElementById('searchInput').focus(); +} // ===== ОТЛОЖЕННЫЙ ЗАКАЗ ===== @@ -3305,7 +3327,7 @@ async function createDeferredOrder() { if (result.success) { console.log(`✅ Заказ #${result.order_number} создан (черновик). ShowcaseItem зарезервированы.`); - // КРИТИЧНО: Очищаем корзину POS (включая витринные букеты) + // КРИТИЧНО: Очищаем корзину POS (включая витринные ��укеты) cart.clear(); renderCart(); saveCartToRedis(); // Сохраняем пустую корзину в Redis