From d86b6ba74225da963af807a133b6d7251911c330 Mon Sep 17 00:00:00 2001 From: nurdotnet <278048682+nurdotnet@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:53:32 +0500 Subject: [PATCH] =?UTF-8?q?ui(products):=20=D1=83=D0=B1=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BA=D0=BE=D0=BB=D0=BE=D0=BD=D0=BA=D1=83=20"=D0=A2?= =?UTF-8?q?=D0=B8=D0=BF"=20=D0=B8=D0=B7=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B0,=20=D1=81=D0=BF=D1=80=D1=8F=D1=82=D0=B0=D1=82=D1=8C=20mi?= =?UTF-8?q?n/max=20stock=20=D0=B2=20"=D0=A0=D0=B0=D1=81=D1=88=D0=B8=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В списке товаров колонка с бейджами Услуга/Весовой/Маркируемый только занимает место и ничем не помогает — в UX MoySklad такого нет, убираю. В форме редактирования минимальный/максимальный остаток (для уведомлений о пополнении и автозаказа) — второстепенные поля, ушли в раскрывающийся блок "Расширенные параметры" сразу после блока закупки. Закупочная цена осталась основной. НДС-колонка теперь рисует "—" если VatEnabled=false. --- .../src/pages/ProductEditPage.tsx | 36 +++++++++++++++---- .../src/pages/ProductsPage.tsx | 9 +---- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/food-market.web/src/pages/ProductEditPage.tsx b/src/food-market.web/src/pages/ProductEditPage.tsx index bc4f4e8..17630a1 100644 --- a/src/food-market.web/src/pages/ProductEditPage.tsx +++ b/src/food-market.web/src/pages/ProductEditPage.tsx @@ -273,14 +273,8 @@ export function ProductEditPage() { -
+
- - setForm({ ...form, minStock: e.target.value })} /> - - - setForm({ ...form, maxStock: e.target.value })} /> - setForm({ ...form, purchasePrice: e.target.value })} /> @@ -293,6 +287,17 @@ export function ProductEditPage() {
+ + + + setForm({ ...form, minStock: e.target.value })} placeholder="—" /> + + + setForm({ ...form, maxStock: e.target.value })} placeholder="—" /> + + + +
Добавить} @@ -396,3 +401,20 @@ function Grid({ cols, children }: { cols: 2 | 3 | 4; children: ReactNode }) { const cls = cols === 2 ? 'grid-cols-1 md:grid-cols-2' : cols === 3 ? 'grid-cols-1 md:grid-cols-3' : 'grid-cols-2 md:grid-cols-4' return
{children}
} + +function AdvancedSection({ children }: { children: ReactNode }) { + const [open, setOpen] = useState(false) + return ( +
+ + {open &&
{children}
} +
+ ) +} diff --git a/src/food-market.web/src/pages/ProductsPage.tsx b/src/food-market.web/src/pages/ProductsPage.tsx index b9aea62..683e826 100644 --- a/src/food-market.web/src/pages/ProductsPage.tsx +++ b/src/food-market.web/src/pages/ProductsPage.tsx @@ -168,14 +168,7 @@ export function ProductsPage() { )}, { header: 'Группа', width: '200px', cell: (r) => r.productGroupName ?? '—' }, { header: 'Ед.', width: '70px', cell: (r) => r.unitName }, - { header: 'НДС', width: '80px', className: 'text-right', cell: (r) => `${r.vat}%` }, - { header: 'Тип', width: '140px', cell: (r) => ( -
- {r.isService && Услуга} - {r.isWeighed && Весовой} - {r.isMarked && Маркир.} -
- )}, + { header: 'НДС', width: '80px', className: 'text-right', cell: (r) => r.vatEnabled ? `${r.vat}%` : '—' }, { header: 'Штрихкодов', width: '120px', className: 'text-right', cell: (r) => r.barcodes.length }, { header: 'Активен', width: '100px', cell: (r) => r.isActive ? '✓' : '—' }, ]}