import React, { useState, useEffect } from 'react'; import { Package, ArrowRightLeft, Clock, FileText, CheckCircle2, ClipboardList, Bot, Info, Layers, ChevronRight, Smartphone } from 'lucide-react'; // Корпоративные цвета Koblik Group const COLORS = { primary: '#FF9E00', // Фирменный оранжевый dark: '#414449', // Корпоративный графитовый background: '#F8F9FA', text: '#2D2F33', white: '#FFFFFF' }; export default function App() { const [currentTime, setCurrentTime] = useState(new Date()); useEffect(() => { const timer = setInterval(() => setCurrentTime(new Date()), 1000); return () => clearInterval(timer); }, []); // Список активных приоритетных документов в работе const priorityDocuments = [ { id: "Заказ № 1042-88", client: 'ООО "Вектор"', total: 1250, picked: 875, type: 'Отгрузка', priority: 'Высокий' }, { id: "Заказ № 1042-95", client: 'АО "АгроТех"', total: 400, picked: 380, type: 'Кросс-докинг', priority: 'Критический' }, { id: "Приемка № 884-П", client: 'Завод "Деталь"', total: 2000, picked: 450, type: 'Приемка', priority: 'Средний' } ]; // Данные активности сотрудников: ТСД заменено на Номер заказа const tsdActivity = [ { orderId: 'ЗКЗ-1042-88', worker: 'Иванов И.А.', item: 'Вал карданный L=1200', quantity: 12, unit: 'шт', itemStatus: 'arrived' }, { orderId: 'ЗКЗ-1042-95', worker: 'Смирнов А.В.', item: 'Подшипник 206 (закрытый)', quantity: 48, unit: 'шт', itemStatus: 'planned' }, { orderId: 'ЗКЗ-1042-92', worker: 'Петрова Е.С.', item: 'Редуктор цилиндрический Ц2У', quantity: 2, unit: 'шт', itemStatus: 'arrived' }, { orderId: 'ЗКЗ-1042-89', worker: 'Сидоров К.М.', item: 'Звездочка Z-24 t=19.05', quantity: 120, unit: 'шт', itemStatus: 'planned' }, ]; const containerMoves = [ { id: 1, container: 'CONT-8892', robot: 'RBT-14', from: 'Приемка', to: 'A-12-04', status: 'В пути', statusType: 'moving' }, { id: 2, container: 'CONT-1024', robot: 'RBT-02', from: 'B-05-01', to: 'Отгрузка', status: 'Ожидает ТС', statusType: 'waiting' }, { id: 3, container: 'CONT-5531', robot: 'RBT-09', from: 'Консолидация', to: 'Буфер', status: 'В пути', statusType: 'moving' }, ]; const getStatusBadge = (type, text) => { const styles = { moving: "bg-orange-50 text-orange-700 border-orange-200", waiting: "bg-slate-100 text-slate-600 border-slate-200", error: "bg-red-50 text-red-700 border-red-200", processing: "bg-[#FF9E00] text-white border-[#E68E00]", new: "bg-slate-50 text-slate-500 border-slate-200", done: "bg-green-50 text-green-700 border-green-200" }; return ( {text} ); }; return (
{/* Шапка KOBLIK */}

WMS Dashboard

Текущее время
{currentTime.toLocaleTimeString('ru-RU')}
{/* СЕКЦИЯ: ПРИОРИТЕТНЫЕ ЗАДАНИЯ В РАБОТЕ */}

Приоритетные задания

Всего в работе: {priorityDocuments.length}
{priorityDocuments.map((doc, index) => { const progress = Math.round((doc.picked / doc.total) * 100); return (
{doc.priority} {doc.type}

{doc.id}

{doc.client}

{doc.picked} / {doc.total} ед. {progress}%
); })}
{/* Операторы ТСД (Активность по заказам) */}

Операторы ТСД

{tsdActivity.map((task, index) => ( ))}
Сотрудник / Заказ Номенклатура и план Наличие в зоне
{task.worker}
{task.orderId}
{task.item}
Потребность: {task.quantity} {task.unit}.
{task.itemStatus === 'arrived' ? ( В зоне отбора ) : ( Ожидает подвоза )}
{/* Логистика роботов */}

Логистика роботов

{containerMoves.map((move) => ( ))}
ID Тары Маршрут Юнит Статус
{move.container}
{move.from} {move.to}
{move.robot}
{getStatusBadge(move.statusType, move.status)}
); }