"use client" import { useState, useEffect } from 'react' import { Card } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Sidebar } from '@/components/dashboard/sidebar' import { useSidebar } from '@/hooks/useSidebar' import { StatsCard } from '@/components/supplies/ui/stats-card' import { StatsGrid } from '@/components/supplies/ui/stats-grid' import { Package, TrendingUp, AlertTriangle, RotateCcw, Wrench, Users, ShoppingBag, ChevronDown, ChevronUp, Box, Zap, Target, Activity, BarChart3, Eye, EyeOff, Warehouse } from 'lucide-react' export function FulfillmentWarehouseDashboard() { const { getSidebarMargin } = useSidebar() // Состояния для свёртывания блоков const [expandedSections, setExpandedSections] = useState({ warehouse: true }) // Состояние для живых изменений продуктов const [liveChange, setLiveChange] = useState({ value: 12, isPositive: true, timestamp: Date.now() }) // Состояние для модуля товары с дополнительными значениями const [goodsData, setGoodsData] = useState({ processing: 245, // В обработке (положительное) rejected: 18, // Отклонено (отрицательное) efficiency: 87, // Эффективность обработки isActive: true, // Активность процесса pulse: 0 // Для анимации пульса }) // Симуляция живых изменений для продуктов useEffect(() => { const interval = setInterval(() => { const change = Math.floor(Math.random() * 20) - 10 // от -10 до +10 setLiveChange({ value: Math.abs(change), isPositive: change >= 0, timestamp: Date.now() }) }, 3000) // каждые 3 секунды return () => clearInterval(interval) }, []) // Симуляция изменений для товаров useEffect(() => { const interval = setInterval(() => { setGoodsData(prev => ({ ...prev, processing: prev.processing + Math.floor(Math.random() * 10) - 5, rejected: Math.max(0, prev.rejected + Math.floor(Math.random() * 6) - 3), efficiency: Math.min(100, Math.max(70, prev.efficiency + Math.floor(Math.random() * 6) - 3)), pulse: prev.pulse + 1 })) }, 2500) // каждые 2.5 секунды return () => clearInterval(interval) }, []) // Мок данные для статистики склада фулфилмента const warehouseStats = { // Текущие данные currentProducts: 856, // Готовые продукты currentGoods: 391, // Товары в процессе currentDefects: 23, currentReturns: 156, currentFulfillmentSupplies: 89, currentSellerSupplies: 234, // Тренды (в процентах) productsTrend: 12, goodsTrend: 8, defectsTrend: -5, returnsTrend: 8, suppliesTrend: 15, // Дополнительная аналитика efficiency: 94.5, turnover: 2.3, utilizationRate: 87 } const formatNumber = (num: number) => { return num.toLocaleString('ru-RU') } const toggleSection = (section: keyof typeof expandedSections) => { setExpandedSections(prev => ({ ...prev, [section]: !prev[section] })) } // Компонент заголовка секции с кнопкой свёртывания const SectionHeader = ({ title, section, badge, color = "text-white" }: { title: string section: keyof typeof expandedSections badge?: number color?: string }) => (

{title}

{badge && ( {badge} )}
) return (
{/* Объединенный блок склада - ПЕРВЫЙ СВЕРХУ */}
{expandedSections.warehouse && (
{/* Уникальный модуль "Продукты" */}
{/* Живой индикатор изменений */}
{liveChange.isPositive ? '+' : '-'}{liveChange.value}
{/* Заголовок с иконкой */}
ПРОДУКТЫ
{/* Мини-график тренда */}
{/* Основное значение */}
{formatNumber(warehouseStats.currentProducts)}
{liveChange.value}%
{/* Подпись */}
Готовые к отправке
{/* Прогресс-бар */}
0 1.2К
{/* Живое изменение значения */}
LIVE {liveChange.isPositive ? '+' : '-'}{liveChange.value}
{/* Декоративные элементы */}
{/* Уникальный модуль "Товары" */}
{/* Анимированный фон */}
{/* Статус активности */}
ACTIVE
{/* Заголовок с двойной иконкой */}
{/* Мини-индикатор обработки */}
ТОВАРЫ
{/* Круговой прогресс эффективности */}
{goodsData.efficiency}%
{/* Основное значение */}
{formatNumber(warehouseStats.currentGoods)}
LIVE
{/* Дополнительные значения */}
{/* Положительное значение */}
ОБРАБОТКА
+{formatNumber(goodsData.processing)}
{/* Отрицательное значение */}
ОТКЛОНЕНО
-{formatNumber(goodsData.rejected)}
{/* Подпись */}
В обработке
{/* Волновой прогресс */}
{/* Волновая анимация */}
{/* Hover эффект с детальной информацией */}
ДЕТАЛИ
+{goodsData.processing}
Активных
-{goodsData.rejected}
Проблем
{goodsData.efficiency}%
Успех
{/* Декоративные частицы */}
)}
{/* Компактный заголовок с ключевыми метриками */}
Эффективность {warehouseStats.efficiency}%
Оборачиваемость {warehouseStats.turnover}x
Загрузка склада
{warehouseStats.utilizationRate}%
{/* Нестандартные решения */}
{/* Интеллектуальные инсайты */}

Умные рекомендации

AI-анализ
Оптимизация

Рекомендуется увеличить запас расходников на 15% для покрытия пикового спроса

Прогноз

Ожидается рост возвратов на 12% в следующем месяце. Подготовьте дополнительные места

Тренд

Эффективность обработки товаров выросла на 8% за последний месяц

{/* Быстрые действия */}

Быстрые действия

Основная функциональность склада будет добавлена на следующем этапе

) }