Оптимизация страницы детального просмотра заказа: перемещение блока товаров вверх, добавление статуса в заголовок, оптимизация SQL-запросов
This commit is contained in:
@@ -6,7 +6,16 @@
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<h1>Заказ {{ order.order_number }}</h1>
|
||||
<h1>
|
||||
Заказ {{ order.order_number }}
|
||||
{% if order.status %}
|
||||
<span class="badge ms-2" style="background-color: {{ order.status.color }}; color: #fff;">
|
||||
{{ order.status.label|default:order.status.name }}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="badge bg-secondary ms-2">Не установлен</span>
|
||||
{% endif %}
|
||||
</h1>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<a href="{% url 'orders:order-update' order.order_number %}" class="btn btn-primary">
|
||||
@@ -24,6 +33,62 @@
|
||||
<div class="row">
|
||||
<!-- Левая колонка -->
|
||||
<div class="col-md-8">
|
||||
<!-- Товары -->
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Товары в заказе</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Наименование</th>
|
||||
<th>Количество</th>
|
||||
<th>Цена</th>
|
||||
<th>Сумма</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in order.items.all %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ item.item_name }}
|
||||
{% if item.product_kit and item.product_kit.is_temporary %}
|
||||
<span class="badge bg-info ms-1">Временный</span>
|
||||
<br>
|
||||
<small class="text-muted">Создан специально для этого заказа</small>
|
||||
<br>
|
||||
<a href="{% url 'products:productkit-make-permanent' item.product_kit.pk %}" class="btn btn-sm btn-outline-success mt-1">
|
||||
<i class="bi bi-arrow-right-circle"></i> Сделать постоянным
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ item.quantity }} шт.</td>
|
||||
<td>
|
||||
{{ item.price|floatformat:2 }} руб.
|
||||
{% if item.is_custom_price %}
|
||||
<span class="badge bg-warning ms-1">Изменена</span>
|
||||
<br>
|
||||
<small class="text-muted">
|
||||
Оригинальная: {{ item.original_price|floatformat:2 }} руб.
|
||||
{% if item.price_difference %}
|
||||
{% if item.price_difference > 0 %}
|
||||
<span class="text-success">(+{{ item.price_difference|floatformat:2 }} руб.)</span>
|
||||
{% else %}
|
||||
<span class="text-danger">({{ item.price_difference|floatformat:2 }} руб.)</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</small>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td><strong>{{ item.get_total_price|floatformat:2 }} руб.</strong></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Основная информация -->
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
@@ -170,62 +235,6 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Товары -->
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">Товары в заказе</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Наименование</th>
|
||||
<th>Количество</th>
|
||||
<th>Цена</th>
|
||||
<th>Сумма</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in order.items.all %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ item.item_name }}
|
||||
{% if item.product_kit and item.product_kit.is_temporary %}
|
||||
<span class="badge bg-info ms-1">Временный</span>
|
||||
<br>
|
||||
<small class="text-muted">Создан специально для этого заказа</small>
|
||||
<br>
|
||||
<a href="{% url 'products:productkit-make-permanent' item.product_kit.pk %}" class="btn btn-sm btn-outline-success mt-1">
|
||||
<i class="bi bi-arrow-right-circle"></i> Сделать постоянным
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ item.quantity }} шт.</td>
|
||||
<td>
|
||||
{{ item.price|floatformat:2 }} руб.
|
||||
{% if item.is_custom_price %}
|
||||
<span class="badge bg-warning ms-1">Изменена</span>
|
||||
<br>
|
||||
<small class="text-muted">
|
||||
Оригинальная: {{ item.original_price|floatformat:2 }} руб.
|
||||
{% if item.price_difference %}
|
||||
{% if item.price_difference > 0 %}
|
||||
<span class="text-success">(+{{ item.price_difference|floatformat:2 }} руб.)</span>
|
||||
{% else %}
|
||||
<span class="text-danger">({{ item.price_difference|floatformat:2 }} руб.)</span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</small>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td><strong>{{ item.get_total_price|floatformat:2 }} руб.</strong></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Правая колонка -->
|
||||
|
||||
@@ -48,8 +48,8 @@ def order_list(request):
|
||||
def order_detail(request, order_number):
|
||||
"""Детальная информация о заказе"""
|
||||
order = get_object_or_404(
|
||||
Order.objects.select_related('customer', 'delivery_address', 'pickup_warehouse', 'modified_by')
|
||||
.prefetch_related('items__product', 'items__product_kit', 'transactions__created_by'),
|
||||
Order.objects.select_related('customer', 'delivery_address', 'pickup_warehouse', 'modified_by', 'status')
|
||||
.prefetch_related('items__product', 'items__product_kit', 'transactions__created_by', 'transactions__payment_method'),
|
||||
order_number=order_number
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user