"use client" import { useState } from 'react' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { Card } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { ShoppingCart, Package, Plus, Calendar, TrendingUp, AlertCircle, Building2 } from 'lucide-react' interface MarketplaceSupply { id: string name: string marketplace: 'wildberries' | 'ozon' category: string quantity: number status: 'planned' | 'in-transit' | 'delivered' | 'accepted' date: string warehouse: string amount: number sku: string } const mockMarketplaceSupplies: MarketplaceSupply[] = [ { id: '1', name: 'Наушники AirPods Pro', marketplace: 'wildberries', category: 'Аудио', quantity: 30, status: 'delivered', date: '2024-01-20', warehouse: 'WB Подольск', amount: 750000, sku: 'APL-AP-PRO2' }, { id: '2', name: 'Смарт часы Apple Watch', marketplace: 'ozon', category: 'Электроника', quantity: 25, status: 'in-transit', date: '2024-01-22', warehouse: 'Ozon Тверь', amount: 1250000, sku: 'APL-AW-S9' }, { id: '3', name: 'Зарядные устройства', marketplace: 'wildberries', category: 'Аксессуары', quantity: 100, status: 'accepted', date: '2024-01-18', warehouse: 'WB Электросталь', amount: 350000, sku: 'ACC-CHG-20W' } ] export function MarketplaceSuppliesTab() { const [activeMarketplace, setActiveMarketplace] = useState<'all' | 'wildberries' | 'ozon'>('all') const formatCurrency = (amount: number) => { return new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB', minimumFractionDigits: 0 }).format(amount) } const formatDate = (dateString: string) => { return new Date(dateString).toLocaleDateString('ru-RU', { day: '2-digit', month: '2-digit', year: 'numeric' }) } const getStatusBadge = (status: string) => { const statusConfig = { planned: { variant: 'outline' as const, color: 'text-blue-300 border-blue-400/30', label: 'Запланировано' }, 'in-transit': { variant: 'outline' as const, color: 'text-yellow-300 border-yellow-400/30', label: 'В пути' }, delivered: { variant: 'outline' as const, color: 'text-green-300 border-green-400/30', label: 'Доставлено' }, accepted: { variant: 'outline' as const, color: 'text-purple-300 border-purple-400/30', label: 'Принято' } } const config = statusConfig[status as keyof typeof statusConfig] || statusConfig.planned return ( {config.label} ) } const getMarketplaceBadge = (marketplace: string) => { if (marketplace === 'wildberries') { return ( Wildberries ) } else if (marketplace === 'ozon') { return ( Ozon ) } return null } const filteredSupplies = activeMarketplace === 'all' ? mockMarketplaceSupplies : mockMarketplaceSupplies.filter(supply => supply.marketplace === activeMarketplace) const getTotalAmount = () => { return filteredSupplies.reduce((sum, supply) => sum + supply.amount, 0) } const getTotalQuantity = () => { return filteredSupplies.reduce((sum, supply) => sum + supply.quantity, 0) } return (
{/* Компактный заголовок */}
Маркетплейсы
{/* Компактная статистика */}

Поставок

{filteredSupplies.length}

Общая сумма

{formatCurrency(getTotalAmount())}

Единиц товара

{getTotalQuantity()}

В пути

{filteredSupplies.filter(s => s.status === 'in-transit').length}

{/* Фильтры по маркетплейсу */}
Маркетплейс:
{/* Таблица поставок */}
{filteredSupplies.map((supply) => ( ))}
Маркетплейс Наименование SKU Категория Количество Склад Дата Сумма Статус
{getMarketplaceBadge(supply.marketplace)} {supply.name} {supply.sku} {supply.category} {supply.quantity} {supply.warehouse} {formatDate(supply.date)} {formatCurrency(supply.amount)} {getStatusBadge(supply.status)}
{filteredSupplies.length === 0 && (

Поставки не найдены

Измените фильтр или создайте новую поставку

)}
) }