- {/* Заголовки таблицы */}
-
-
-
Товар
-
Остаток
-
К клиенту
-
От клиента
-
Складов
-
Характеристики
-
-
-
+
+
{/* Таблица товаров */}
{filteredStocks.map((item, index) => (
@@ -653,383 +351,4 @@ export function WBWarehouseDashboard() {
)
-}
-
-// Табличная строка товара
-function StockTableRow({ item }: { item: WBStock }) {
-
- // Получение изображений карточки через WildberriesService
- const getCardImages = (item: WBStock): string[] => {
- if (item.photos && item.photos.length > 0) {
- const urls = item.photos
- .map(photo => photo.c246x328 || photo.c516x688 || photo.big)
- .filter((url): url is string => Boolean(url))
- return urls
- }
-
- if (item.mediaFiles && item.mediaFiles.length > 0) {
- return item.mediaFiles
- }
-
- const vol = Math.floor(item.nmId / 100000)
- const part = Math.floor(item.nmId / 1000)
- const fallbackUrl = `https://basket-${String(vol).padStart(2, '0')}.wbbasket.ru/vol${vol}/part${part}/${item.nmId}/images/c246x328/1.webp`
- return [fallbackUrl]
- }
-
- const getStockStatus = (quantity: number) => {
- if (quantity === 0) return {
- color: 'text-red-400',
- bgColor: 'bg-red-500/10',
- label: 'Нет в наличии'
- }
- if (quantity < 10) return {
- color: 'text-orange-400',
- bgColor: 'bg-orange-500/10',
- label: 'Мало'
- }
- return {
- color: 'text-green-400',
- bgColor: 'bg-green-500/10',
- label: 'В наличии'
- }
- }
-
- const stockStatus = getStockStatus(item.totalQuantity)
- const images = getCardImages(item)
- const mainImage = images[0] || null
-
- // Отбираем ключевые характеристики для отображения в таблице
- const keyCharacteristics = item.characteristics?.slice(0, 3) || []
-
- return (
-
- {/* Основная строка товара */}
-
- {/* Товар (3 колонки) */}
-
-
- {mainImage ? (
-

- ) : (
-
- )}
-
-
-
-
- {item.brand || 'Без бренда'}
-
- #{item.nmId}
-
-
- {item.title}
-
-
- {item.vendorCode}
-
-
-
-
- {/* Остаток */}
-
-
-
- {item.totalQuantity.toLocaleString()}
-
-
- {stockStatus.label}
-
-
-
-
- {/* К клиенту */}
-
-
-
- {item.stocks.reduce((sum, s) => sum + s.inWayToClient, 0)}
-
-
в пути
-
-
-
- {/* От клиента */}
-
-
-
- {item.stocks.reduce((sum, s) => sum + s.inWayFromClient, 0)}
-
-
возвраты
-
-
-
- {/* Складов */}
-
-
-
- {item.stocks.length}
-
-
активных
-
-
-
- {/* Характеристики (5 колонок) */}
-
-
- {keyCharacteristics.map((char, index) => (
-
- {char.name}:
-
- {Array.isArray(char.value) ? char.value.join(', ') : String(char.value)}
-
-
- ))}
- {item.subjectName && (
-
- Категория:
- {item.subjectName}
-
- )}
-
-
-
-
- {/* Города в модулях */}
-
-
- {item.stocks.map((stock, stockIndex) => (
-
- {/* Название города */}
-
- {stock.warehouseName}
-
-
- {/* Цифры */}
-
-
-
0 ? 'text-green-400' : 'text-white/30'}`}>
- {stock.quantity}
-
-
остаток
-
-
- {(stock.inWayToClient > 0 || stock.inWayFromClient > 0) && (
- <>
-
-
- {stock.inWayToClient > 0 && (
-
-
{stock.inWayToClient}
-
к клиенту
-
- )}
-
- {stock.inWayFromClient > 0 && (
-
-
{stock.inWayFromClient}
-
от клиента
-
- )}
- >
- )}
-
-
- ))}
-
-
-
- )
-}
-
-// Супер современная карточка товара (СТАРАЯ ВЕРСИЯ - НЕ ИСПОЛЬЗУЕТСЯ)
-function StockCard({ item }: { item: WBStock }) {
- // Получение изображений карточки через WildberriesService
- const getCardImages = (item: WBStock): string[] => {
- if (item.photos && item.photos.length > 0) {
- const urls = item.photos
- .map(photo => photo.c246x328 || photo.c516x688 || photo.big)
- .filter((url): url is string => Boolean(url))
- return urls
- }
-
- if (item.mediaFiles && item.mediaFiles.length > 0) {
- return item.mediaFiles
- }
-
- const vol = Math.floor(item.nmId / 100000)
- const part = Math.floor(item.nmId / 1000)
- const fallbackUrl = `https://basket-${String(vol).padStart(2, '0')}.wbbasket.ru/vol${vol}/part${part}/${item.nmId}/images/c246x328/1.webp`
- return [fallbackUrl]
- }
-
- const getStockStatus = (quantity: number) => {
- if (quantity === 0) return {
- color: 'from-red-500/20 to-red-600/5 border-red-500/30',
- textColor: 'text-red-400',
- label: 'Нет в наличии',
- icon: '❌'
- }
- if (quantity < 10) return {
- color: 'from-orange-500/20 to-orange-600/5 border-orange-500/30',
- textColor: 'text-orange-400',
- label: 'Мало',
- icon: '⚠️'
- }
- return {
- color: 'from-green-500/20 to-green-600/5 border-green-500/30',
- textColor: 'text-green-400',
- label: 'В наличии',
- icon: '✅'
- }
- }
-
- const stockStatus = getStockStatus(item.totalQuantity)
- const images = getCardImages(item)
- const mainImage = images[0] || null
-
- return (
-
- {/* Градиентный фон при hover */}
-
-
-
- {/* Хедер карточки */}
-
- {/* Изображение товара */}
-
-
- {mainImage ? (
-

- ) : (
-
- )}
-
- {/* WB Badge */}
-
-
-
- {/* Инфо товара */}
-
-
-
-
-
- {item.brand || 'Без бренда'}
-
- #{item.nmId}
-
-
- {item.title}
-
-
-
- {/* Статус */}
-
- {stockStatus.icon}
- {stockStatus.label}
-
-
-
-
- Артикул: {item.vendorCode}
-
-
-
-
- {/* Компактная статистика */}
-
-
-
{item.totalQuantity.toLocaleString()}
-
Остаток
-
-
-
{item.stocks.length}
-
Складов
-
-
-
- {item.stocks.reduce((sum, s) => sum + s.inWayToClient, 0)}
-
-
К клиенту
-
-
-
- {item.stocks.reduce((sum, s) => sum + s.inWayFromClient, 0)}
-
-
От клиента
-
-
-
- {/* Склады - компактно */}
-
-
-
- Склады
-
-
- {item.stocks.slice(0, 3).map((stock, stockIndex) => (
-
-
-
{stock.warehouseName}
-
ID: {stock.warehouseId}
-
-
-
-
0 ? 'text-green-400' : 'text-white/30'}`}>
- {stock.quantity}
-
-
-
-
0 ? 'text-orange-400' : 'text-white/30'}`}>
- {stock.inWayToClient}
-
-
-
-
0 ? 'text-red-400' : 'text-white/30'}`}>
- {stock.inWayFromClient}
-
-
-
-
- ))}
- {item.stocks.length > 3 && (
-
- +{item.stocks.length - 3} ещё складов
-
- )}
-
-
-
- {/* Категория */}
- {item.subjectName && (
-
-
- Категория: {item.subjectName}
-
-
- )}
-
-
- )
}
\ No newline at end of file