Feature: общая сумма над блоком Товары; открытие документа по клику на строку списка
Made-with: Cursor
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
# История изменений ERP WaterSurf
|
||||
|
||||
## 2025-02-26 16:50 UTC – Общая сумма над блоком Товары; клик по строке списка открывает документ
|
||||
|
||||
**Изменения**: Блок «Общая сумма заказа» перенесён над всей табличной частью «Товары» — сразу под полями Клиент/Автор. В списках заказов клиентов и заказов поставщику документ открывается при клике по строке (заказы клиентов — просмотр, заказы поставщику — редактирование); клик по ссылкам «Изменить»/«Удалить» не переходит по строке. Добавлены класс строки `ws-row-clickable`, атрибут `data-href` и скрипт перехода.
|
||||
|
||||
**Файлы**: order_form.html, supplier_order_form.html (общая сумма над секцией Товары), customer_order_list.html, supplier_order_list.html (кликабельные строки + extra_js), theme.css (cursor: pointer для .ws-row-clickable), theme-compact.css (отступ у .ws-order-total-row).
|
||||
|
||||
---
|
||||
|
||||
## 2025-02-26 16:35 UTC – Общая сумма над таблицей; автор всегда подставляется при создании
|
||||
|
||||
**Изменения**: Блок «Общая сумма заказа» перенесён над табличную часть «Товары» в формах заказа клиента и заказа поставщику. Поле «Автор» в моделях — ForeignKey на справочник Employee; при создании документа автор теперь подставляется всегда: сначала из профиля пользователя (UserProfile.employee), при отсутствии — создаётся/берётся сотрудник с именем из ФИО или логина пользователя. В контексте для отображения используется тот же хелпер, чтобы надпись «Автор» показывала будущего автора уже при открытии формы создания.
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
.ws-form-compact .ws-order-total-row {
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
|
||||
@@ -229,6 +229,10 @@ body {
|
||||
background: var(--ws-bg-hover);
|
||||
}
|
||||
|
||||
.ws-table tbody tr.ws-row-clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ws-table tbody tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for obj in object_list %}
|
||||
<tr>
|
||||
<tr class="ws-row-clickable" data-href="{% url 'documents:customer_order_detail' obj.pk %}">
|
||||
<td>{{ obj.date }}</td>
|
||||
<td><a href="{% url 'documents:customer_order_detail' obj.pk %}" class="ws-link">{{ obj.number }}</a></td>
|
||||
<td>{{ obj.order_kind }}</td>
|
||||
@@ -43,3 +43,15 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block extra_js %}
|
||||
<script>
|
||||
(function() {
|
||||
document.querySelectorAll('.ws-row-clickable[data-href]').forEach(function(tr) {
|
||||
tr.addEventListener('click', function(e) {
|
||||
if (e.target.closest('a') || e.target.closest('.ws-actions')) return;
|
||||
window.location = this.getAttribute('data-href');
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
@@ -40,9 +40,9 @@
|
||||
<span class="ws-readonly">{{ author_display|default:"—" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="order-total-sum" class="ws-num">—</span></p>
|
||||
<div class="ws-form-section">
|
||||
<h3 class="ws-form-section-title">Товары</h3>
|
||||
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="order-total-sum" class="ws-num">—</span></p>
|
||||
{{ formset.management_form }}
|
||||
<div class="ws-table-wrap">
|
||||
<table class="ws-table ws-table-items" id="order-items">
|
||||
|
||||
@@ -54,9 +54,9 @@
|
||||
<span class="ws-readonly">{{ author_display|default:"—" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="supplier-order-total-sum" class="ws-num">—</span></p>
|
||||
<div class="ws-form-section">
|
||||
<h3 class="ws-form-section-title">Товары</h3>
|
||||
<p class="ws-order-total-row"><strong>Общая сумма заказа:</strong> <span id="supplier-order-total-sum" class="ws-num">—</span></p>
|
||||
{{ formset.management_form }}
|
||||
<div class="ws-table-wrap">
|
||||
<table class="ws-table ws-table-items" id="supplier-order-items">
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for obj in object_list %}
|
||||
<tr>
|
||||
<tr class="ws-row-clickable" data-href="{% url 'documents:supplier_order_edit' obj.pk %}">
|
||||
<td>{{ obj.date }}</td>
|
||||
<td>{{ obj.number }}</td>
|
||||
<td><a href="{% url 'documents:supplier_order_edit' obj.pk %}" class="ws-link">{{ obj.number }}</a></td>
|
||||
<td>{{ obj.organization }}</td>
|
||||
<td>{{ obj.supplier }}</td>
|
||||
<td class="ws-num">{{ obj.total_in_currency|ws_num:2 }}</td>
|
||||
@@ -43,3 +43,15 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block extra_js %}
|
||||
<script>
|
||||
(function() {
|
||||
document.querySelectorAll('.ws-row-clickable[data-href]').forEach(function(tr) {
|
||||
tr.addEventListener('click', function(e) {
|
||||
if (e.target.closest('a') || e.target.closest('.ws-actions')) return;
|
||||
window.location = this.getAttribute('data-href');
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user