Оптимизация страницы детального просмотра заказа: перемещение блока товаров вверх, добавление статуса в заголовок, оптимизация SQL-запросов
This commit is contained in:
@@ -6,7 +6,16 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row mb-4">
|
<div class="row mb-4">
|
||||||
<div class="col">
|
<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>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<a href="{% url 'orders:order-update' order.order_number %}" class="btn btn-primary">
|
<a href="{% url 'orders:order-update' order.order_number %}" class="btn btn-primary">
|
||||||
@@ -24,6 +33,62 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Левая колонка -->
|
<!-- Левая колонка -->
|
||||||
<div class="col-md-8">
|
<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 mb-3">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
@@ -170,62 +235,6 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</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>
|
</div>
|
||||||
|
|
||||||
<!-- Правая колонка -->
|
<!-- Правая колонка -->
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ def order_list(request):
|
|||||||
def order_detail(request, order_number):
|
def order_detail(request, order_number):
|
||||||
"""Детальная информация о заказе"""
|
"""Детальная информация о заказе"""
|
||||||
order = get_object_or_404(
|
order = get_object_or_404(
|
||||||
Order.objects.select_related('customer', 'delivery_address', 'pickup_warehouse', 'modified_by')
|
Order.objects.select_related('customer', 'delivery_address', 'pickup_warehouse', 'modified_by', 'status')
|
||||||
.prefetch_related('items__product', 'items__product_kit', 'transactions__created_by'),
|
.prefetch_related('items__product', 'items__product_kit', 'transactions__created_by', 'transactions__payment_method'),
|
||||||
order_number=order_number
|
order_number=order_number
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user