From 18752497a8edeab667866a870fe5ecbd05fdedf0 Mon Sep 17 00:00:00 2001 From: nns Date: Fri, 9 Oct 2026 06:32:58 +0500 Subject: [PATCH] =?UTF-8?q?feat(web):=20=D1=81=D1=82=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=81=D1=8B=20DocStatusBadge=20=D0=BD=D0=B0=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D1=85=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=D1=85=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?+=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=20=C2=AB=D0=A1=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D1=80=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=C2=BB=20=D0=A8=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit П.9: DocStatusBadge (Черновик/Проведён с подсказкой) раскатан на Оприходования, Списания, Перемещения, Возвраты поставщикам, Отгрузки (было: приёмки/продажи/инвент.). П.4: в карточке товара рядом с полем штрихкода — кнопка «Сгенерировать» (внутренний EAN-13). Группа по умолчанию — «Все товары», единица — «шт» (уже было). Co-Authored-By: Claude Opus 4.8 --- src/food-market.web/src/pages/DemandsPage.tsx | 5 ++--- src/food-market.web/src/pages/EntersPage.tsx | 5 ++--- src/food-market.web/src/pages/LossesPage.tsx | 5 ++--- src/food-market.web/src/pages/ProductEditPage.tsx | 14 +++++++++++--- .../src/pages/SupplierReturnsPage.tsx | 5 ++--- src/food-market.web/src/pages/TransfersPage.tsx | 5 ++--- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/food-market.web/src/pages/DemandsPage.tsx b/src/food-market.web/src/pages/DemandsPage.tsx index 0fdce4d..84751a4 100644 --- a/src/food-market.web/src/pages/DemandsPage.tsx +++ b/src/food-market.web/src/pages/DemandsPage.tsx @@ -1,4 +1,5 @@ import { useRef } from 'react' +import { DocStatusBadge } from '@/components/DocStatusBadge' import { Link, useNavigate } from 'react-router-dom' import { Plus, Truck } from 'lucide-react' import { ListPageShell } from '@/components/ListPageShell' @@ -67,9 +68,7 @@ export function DemandsPage() { { header: '№', width: '160px', sortKey: 'number', cell: (r) => {r.number} }, { header: 'Дата', width: '120px', sortKey: 'date', cell: (r) => new Date(r.date).toLocaleDateString('ru') }, { header: 'Статус', width: '110px', sortKey: 'status', cell: (r) => ( - r.status === DemandStatus.Posted - ? Проведён - : Черновик + )}, { header: 'Контрагент', sortKey: 'customer', cell: (r) => r.customerName }, { header: 'Склад', width: '160px', cell: (r) => r.storeName }, diff --git a/src/food-market.web/src/pages/EntersPage.tsx b/src/food-market.web/src/pages/EntersPage.tsx index c26f957..716fc10 100644 --- a/src/food-market.web/src/pages/EntersPage.tsx +++ b/src/food-market.web/src/pages/EntersPage.tsx @@ -1,4 +1,5 @@ import { useRef } from 'react' +import { DocStatusBadge } from '@/components/DocStatusBadge' import { Link, useNavigate } from 'react-router-dom' import { Plus, PackagePlus } from 'lucide-react' import { ListPageShell } from '@/components/ListPageShell' @@ -67,9 +68,7 @@ export function EntersPage() { { header: '№', width: '160px', sortKey: 'number', cell: (r) => {r.number} }, { header: 'Дата', width: '120px', sortKey: 'date', cell: (r) => new Date(r.date).toLocaleDateString('ru') }, { header: 'Статус', width: '130px', sortKey: 'status', cell: (r) => ( - r.status === EnterStatus.Posted - ? Проведён - : Черновик + )}, { header: 'Склад', sortKey: 'store', cell: (r) => r.storeName }, { header: 'Позиций', width: '100px', className: 'text-right', cell: (r) => r.lineCount }, diff --git a/src/food-market.web/src/pages/LossesPage.tsx b/src/food-market.web/src/pages/LossesPage.tsx index 548fa3e..e769c27 100644 --- a/src/food-market.web/src/pages/LossesPage.tsx +++ b/src/food-market.web/src/pages/LossesPage.tsx @@ -1,4 +1,5 @@ import { useRef } from 'react' +import { DocStatusBadge } from '@/components/DocStatusBadge' import { Link, useNavigate } from 'react-router-dom' import { Plus, Trash2 } from 'lucide-react' import { ListPageShell } from '@/components/ListPageShell' @@ -67,9 +68,7 @@ export function LossesPage() { { header: '№', width: '160px', sortKey: 'number', cell: (r) => {r.number} }, { header: 'Дата', width: '120px', sortKey: 'date', cell: (r) => new Date(r.date).toLocaleDateString('ru') }, { header: 'Статус', width: '110px', sortKey: 'status', cell: (r) => ( - r.status === LossStatus.Posted - ? Проведён - : Черновик + )}, { header: 'Причина', width: '140px', sortKey: 'reason', cell: (r) => lossReasonLabel[r.reason] ?? r.reason }, { header: 'Склад', sortKey: 'store', cell: (r) => r.storeName }, diff --git a/src/food-market.web/src/pages/ProductEditPage.tsx b/src/food-market.web/src/pages/ProductEditPage.tsx index e78dee5..511ddb5 100644 --- a/src/food-market.web/src/pages/ProductEditPage.tsx +++ b/src/food-market.web/src/pages/ProductEditPage.tsx @@ -1,7 +1,7 @@ import { useState, useEffect, type FormEvent, type ReactNode } from 'react' import { useNavigate, useParams, Link } from 'react-router-dom' import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query' -import { ArrowLeft, Plus, Trash2, Save } from 'lucide-react' +import { ArrowLeft, Plus, Trash2, Save, RefreshCw } from 'lucide-react' import { api, humanizeError } from '@/lib/api' import { Button } from '@/components/Button' import { Field, TextInput, TextArea, Select, AsyncSelect, Checkbox, MoneyInput, NumberInput } from '@/components/Field' @@ -329,8 +329,16 @@ export function ProductEditPage() {
{form.barcodes.map((b, i) => (
-
- updateBarcode(i, { code: e.target.value })} /> +
+ updateBarcode(i, { code: e.target.value })} className="flex-1" /> +