"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 (
Поставок
{filteredSupplies.length}
Общая сумма
{formatCurrency(getTotalAmount())}
Единиц товара
{getTotalQuantity()}
В пути
{filteredSupplies.filter(s => s.status === 'in-transit').length}
Маркетплейс | Наименование | SKU | Категория | Количество | Склад | Дата | Сумма | Статус |
---|---|---|---|---|---|---|---|---|
{getMarketplaceBadge(supply.marketplace)} | {supply.name} | {supply.sku} | {supply.category} | {supply.quantity} | {supply.warehouse} | {formatDate(supply.date)} | {formatCurrency(supply.amount)} | {getStatusBadge(supply.status)} |
Поставки не найдены
Измените фильтр или создайте новую поставку