feat: динамическая загрузка витринных комплектов в POS
- Добавлен API endpoint GET /pos/api/showcase-kits/ для получения актуальных витринных букетов - Изменена переменная SHOWCASE_KITS на изменяемую showcaseKits - Добавлена функция refreshShowcaseKits() для обновления данных с сервера - Кнопка ВИТРИНА теперь загружает свежие данные перед отображением - После создания временного букета автоматически обновляется список и переключается вид на витрину - Исправлена проблема с отображением только что созданных витринных букетов
This commit is contained in:
@@ -107,7 +107,7 @@
|
||||
|
||||
<!-- Modal: Создание временного комплекта на витрину -->
|
||||
<div class="modal fade" id="createTempKitModal" tabindex="-1" aria-labelledby="createTempKitModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="createTempKitModalLabel">
|
||||
@@ -116,32 +116,110 @@
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<!-- Название комплекта -->
|
||||
<div class="mb-3">
|
||||
<label for="tempKitName" class="form-label">Название комплекта *</label>
|
||||
<input type="text" class="form-control" id="tempKitName" placeholder="Введите название" required>
|
||||
</div>
|
||||
|
||||
<!-- Выбор витрины -->
|
||||
<div class="mb-3">
|
||||
<label for="showcaseSelect" class="form-label">Витрина *</label>
|
||||
<select class="form-select" id="showcaseSelect" required>
|
||||
<option value="">Загрузка...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Список товаров в корзине -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Товары в комплекте</label>
|
||||
<div class="border rounded p-3" id="tempKitItemsList" style="max-height: 300px; overflow-y: auto;">
|
||||
<!-- Динамически заполняется через JS -->
|
||||
<div class="row">
|
||||
<!-- Левая колонка: основные поля -->
|
||||
<div class="col-md-6">
|
||||
<!-- Название комплекта -->
|
||||
<div class="mb-3">
|
||||
<label for="tempKitName" class="form-label">Название комплекта *</label>
|
||||
<input type="text" class="form-control" id="tempKitName" placeholder="Введите название" required>
|
||||
</div>
|
||||
|
||||
<!-- Выбор витрины -->
|
||||
<div class="mb-3">
|
||||
<label for="showcaseSelect" class="form-label">Витрина *</label>
|
||||
<select class="form-select" id="showcaseSelect" required>
|
||||
<option value="">Загрузка...</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Описание -->
|
||||
<div class="mb-3">
|
||||
<label for="tempKitDescription" class="form-label">Описание (опционально)</label>
|
||||
<textarea class="form-control" id="tempKitDescription" rows="3" placeholder="Краткое описание комплекта"></textarea>
|
||||
</div>
|
||||
|
||||
<!-- Загрузка фото -->
|
||||
<div class="mb-3">
|
||||
<label for="tempKitPhoto" class="form-label">Фото комплекта (опционально)</label>
|
||||
<input type="file" class="form-control" id="tempKitPhoto" accept="image/*">
|
||||
<div id="photoPreview" class="mt-2" style="display: none;">
|
||||
<img id="photoPreviewImg" src="" alt="Preview" class="img-thumbnail" style="max-width: 200px; max-height: 200px;">
|
||||
<button type="button" class="btn btn-sm btn-danger ms-2" id="removePhoto">
|
||||
<i class="bi bi-x"></i> Удалить
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Правая колонка: цены и состав -->
|
||||
<div class="col-md-6">
|
||||
<!-- Список товаров в корзине -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Товары в комплекте</label>
|
||||
<div class="border rounded p-2" id="tempKitItemsList" style="max-height: 200px; overflow-y: auto; background: #f8f9fa;">
|
||||
<!-- Динамически заполняется через JS -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Блок ценообразования -->
|
||||
<div class="card">
|
||||
<div class="card-header bg-light">
|
||||
<strong>Ценообразование</strong>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- Базовая цена -->
|
||||
<div class="mb-2">
|
||||
<small class="text-muted">Базовая цена (сумма компонентов):</small>
|
||||
<div class="fw-bold" id="tempKitBasePrice">0.00 руб.</div>
|
||||
</div>
|
||||
|
||||
<!-- Корректировка цены -->
|
||||
<div class="mb-2">
|
||||
<label for="priceAdjustmentType" class="form-label small">Корректировка цены</label>
|
||||
<select class="form-select form-select-sm" id="priceAdjustmentType">
|
||||
<option value="none">Без изменения</option>
|
||||
<option value="increase_percent">Увеличить на %</option>
|
||||
<option value="increase_amount">Увеличить на сумму</option>
|
||||
<option value="decrease_percent">Уменьшить на %</option>
|
||||
<option value="decrease_amount">Уменьшить на сумму</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-2" id="adjustmentValueBlock" style="display: none;">
|
||||
<label for="priceAdjustmentValue" class="form-label small">Значение</label>
|
||||
<input type="number" class="form-control form-control-sm" id="priceAdjustmentValue"
|
||||
min="0" step="0.01" value="0" placeholder="0.00">
|
||||
</div>
|
||||
|
||||
<!-- Расчётная цена с корректировкой -->
|
||||
<div class="mb-2 pb-2 border-bottom">
|
||||
<small class="text-muted">Расчётная цена:</small>
|
||||
<div class="fw-bold text-primary" id="tempKitCalculatedPrice">0.00 руб.</div>
|
||||
</div>
|
||||
|
||||
<!-- Ручная финальная цена (sale_price) -->
|
||||
<div class="mb-0">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="useSalePrice">
|
||||
<label class="form-check-label small" for="useSalePrice">
|
||||
Установить свою цену (приоритет)
|
||||
</label>
|
||||
</div>
|
||||
<div id="salePriceBlock" style="display: none;">
|
||||
<input type="number" class="form-control form-control-sm" id="salePrice"
|
||||
min="0" step="0.01" placeholder="Введите цену">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Итоговая цена продажи -->
|
||||
<div class="alert alert-success mt-3 mb-0">
|
||||
<strong>Итоговая цена продажи:</strong><br>
|
||||
<span class="fs-4" id="tempKitFinalPrice">0.00</span> руб.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Итоговая цена (расчётная) -->
|
||||
<div class="alert alert-info mb-0">
|
||||
<strong>Расчётная цена:</strong> <span id="tempKitEstimatedPrice">0.00</span> руб.
|
||||
<small class="d-block text-muted">Цена будет пересчитана автоматически после создания</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
||||
Reference in New Issue
Block a user