Fix: форма заказа клиента — сетка Дата/Номер, компактные поля и отступы, ширина полей на всю форму

Made-with: Cursor
This commit is contained in:
2026-02-26 15:43:19 +00:00
parent 90a634808e
commit 97d19a4659
3 changed files with 42 additions and 19 deletions

View File

@@ -1,5 +1,15 @@
# История изменений ERP WaterSurf
## 2025-02-26 00:50 UTC Форма заказа клиента: сетка, компактные поля, ширина
**Проблема**: На форме заказа клиента поле «Номер» визуально смещено вправо; высота полей и отступы между строками слишком большие; поля «Вид заказа», «Организация», «Клиент», «Автор» узкие.
**Решение**: Строка «Дата»/«Номер» переведена на чёткую двухколоночную сетку (grid 1fr 1fr): у обеих колонок одинаковый layout (label 6.5rem + input flex 1), оба поля растягиваются по своей колонке. Уменьшена высота полей ввода (padding 6px 10px, min-height 30px в компактной форме; в базовой 8px 12px, min-height 34px). Уменьшены вертикальные отступы между рядами (gap 10px, margin-bottom 10px) и перед блоком «Товары». Строки с «Вид заказа»/«Организация» и «Клиент»/«Автор» растягиваются на всю ширину формы (убрано max-width: 600px), селекты занимают 100% своей ячейки сетки.
**Изменения**: theme-compact.css (сетка дата/номер, компактные отступы и высота полей, ws-form-row-2 на всю ширину), theme.css (компактные padding и min-height у полей, отступ секции формы).
---
## 2025-02-26 00:40 UTC Планы развития: SPA, канбан, дашборды
**Добавлено**: В README зафиксированы планы развития фронтенда — канбан заказов (drag-and-drop), живые уведомления, дашборды. Описан рекомендуемый путь перехода на SPA (REST API + отдельный React-фронт) и гибридный вариант миграции.

View File

@@ -5,7 +5,7 @@
display: flex;
flex-direction: row;
align-items: center;
gap: 8px 16px;
gap: 6px 12px;
flex-wrap: wrap;
}
@@ -13,6 +13,7 @@
margin-bottom: 0;
flex-shrink: 0;
min-width: 6.5rem;
width: 6.5rem;
font-size: 12px;
color: var(--ws-text-secondary);
}
@@ -21,30 +22,44 @@
.ws-form-compact .ws-form-group select {
flex: 1;
min-width: 0;
padding: 10px 14px;
padding: 6px 10px;
border-radius: 8px;
height: auto;
min-height: 30px;
line-height: 1.35;
font-size: 14px;
}
.ws-form-compact .ws-form-group .ws-text-danger {
flex-basis: 100%;
margin-left: 7rem;
margin-left: 7.5rem;
}
.ws-form-compact .ws-form-row {
display: grid;
gap: 16px;
margin-bottom: 16px;
gap: 10px;
margin-bottom: 10px;
align-items: center;
}
/* Строка Дата + Номер: две равные колонки, чёткая сетка */
.ws-form-compact .ws-form-row-date-number {
grid-template-columns: 1fr 1fr;
}
.ws-form-compact .ws-form-row-date-number .ws-form-group {
min-width: 0;
}
.ws-form-compact .ws-form-row-date-number .ws-field-date input,
.ws-form-compact .ws-form-row-date-number .ws-field-number input {
flex: 1;
min-width: 0;
width: 100%;
}
.ws-form-compact .ws-form-row-date-number .ws-field-date input {
min-width: 11.5rem;
width: 11.5rem;
flex: 0 0 auto;
min-width: 10rem;
}
/* Поле даты — кнопка календаря в стиле MD3 */
@@ -73,19 +88,16 @@
}
}
.ws-form-compact .ws-form-row-date-number .ws-field-number input {
width: 15ch;
flex: 0 0 15ch;
}
/* Вид заказа, Организация, Клиент, Автор — на всю ширину формы, две колонки */
.ws-form-compact .ws-form-row-2 {
grid-template-columns: 1fr 1fr;
max-width: 600px;
max-width: 100%;
}
.ws-form-compact .ws-form-row-2 .ws-form-group input,
.ws-form-compact .ws-form-row-2 .ws-form-group select {
max-width: 100%;
width: 100%;
}
/* Таблица товаров — компактные колонки, без горизонтального скролла */

View File

@@ -345,14 +345,15 @@ a.btn.btn-ws-primary:hover {
.ws-form-group textarea {
width: 100%;
max-width: 400px;
padding: 12px 16px;
padding: 8px 12px;
background: transparent;
border: 1px solid var(--ws-border);
border-radius: var(--ws-radius-sm);
color: var(--ws-text);
font-family: var(--ws-font);
font-size: 16px;
transition: border-color 0.2s, box-shadow 0.2s;
font-size: 15px;
line-height: 1.35;
min-height: 34px;
}
.ws-form-group input:focus,
@@ -395,8 +396,8 @@ a.btn.btn-ws-primary:hover {
}
.ws-form-section {
margin-top: 24px;
padding-top: 20px;
margin-top: 16px;
padding-top: 14px;
border-top: 1px solid var(--ws-border);
}