CAT-03: Товары список + таб Удалённые
Что сделать
Создать страницу списка товаров с таблицей, пагинацией и табом “Удалённые”.
Смотри спеку
Таблица, Таб “Удалённые”, Состояния.
Конкретно
Страница /catalog/products. API: GET /api/v1/admin/products.
Заголовок “Товары” + кнопка “Добавить товар” (Franchise only, переход /catalog/products/new).
Табы: “Активные” (default), “Удалённые” (Franchise only, GET /api/v1/admin/products?deleted=true).
Колонки таблицы:
| Колонка | Данные | Примечание |
|---|---|---|
| Название | name | Кликабельное → /catalog/products/:id |
| Категория | category.name | |
| Тип | type | Бейдж: Блюдо / Продукт |
| Цена | base_price | Формат: 1 200,00 ₽ |
| Ед. изм. | unit_of_measure | шт / кг / г / л / мл / порция |
| Статус | status | Бейдж: active → зелёный “Активный”, inactive → серый “Неактивный” |
| Версия | version | v1, v2, … |
Пагинация: 20 записей/страница, номера страниц + стрелки. Query params: page, per_page.
Таб “Удалённые”: те же колонки, но вместо действий — кнопка “Восстановить”. API: POST /api/v1/admin/products/:id/restore. После успеха: toast “Товар восстановлен”, строка исчезает.
Состояния:
- Загрузка: skeleton-таблица
- Пусто (Franchise): “Товары пока не добавлены” + кнопка “Добавить товар”
- Пусто (Franchisee/Manager): “Товары пока не добавлены”
- Ошибка: “Не удалось загрузить данные” + кнопка “Повторить”
- Пустой поиск: “Ничего не найдено по запросу «…»”
API-модуль: создать web/src/api/catalog.ts с функциями getProducts, getProduct, createProduct, updateProduct, deleteProduct, restoreProduct, getCategories, createCategory, updateCategory, deleteCategory, getCatalogVersions, getCatalogVersion, publishCatalog, getPublishedCatalog.
Файлы
web/src/pages/catalog/ProductListPage.tsx— создатьweb/src/api/catalog.ts— создать
Зависит от
- CAT-01
- CAT-02