"use client" import { useState } from 'react' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' import { Progress } from '@/components/ui/progress' import { Input } from '@/components/ui/input' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Calendar, Check, X, Clock, User, Package, Star, Heart, ShoppingCart, Edit, Trash2, Phone, Mail, MapPin, Building, TrendingUp, Award, Users, Briefcase, Eye, Plus, Minus, Store, Boxes, ChevronDown, ChevronRight, Hash, Package2, Truck } from 'lucide-react' export function BusinessDemo() { const [selectedProduct] = useState(null) const [cartQuantity, setCartQuantity] = useState(1) const [expandedSeller, setExpandedSeller] = useState(false) // Данные для демонстрации const scheduleData = Array.from({ length: 30 }, (_, i) => ({ day: i + 1, status: ['work', 'work', 'work', 'work', 'work', 'weekend', 'weekend'][i % 7], hours: [8, 8, 8, 8, 8, 0, 0][i % 7] })) const products = [ { id: '1', name: 'iPhone 15 Pro Max 256GB', article: 'APL-IP15PM-256', price: 89990, oldPrice: 99990, quantity: 45, category: 'Электроника', brand: 'Apple', rating: 4.8, reviews: 1234, image: '/placeholder-phone.jpg', seller: 'TechStore Moscow', isNew: true, inStock: true }, { id: '2', name: 'Беспроводные наушники AirPods Pro', article: 'APL-APP-PRO', price: 24990, quantity: 23, category: 'Аксессуары', brand: 'Apple', rating: 4.6, reviews: 856, image: '/placeholder-headphones.jpg', seller: 'Audio Expert', isNew: false, inStock: true }, { id: '3', name: 'Ноутбук MacBook Air M2', article: 'APL-MBA-M2', price: 0, quantity: 0, category: 'Компьютеры', brand: 'Apple', rating: 4.9, reviews: 445, image: '/placeholder-laptop.jpg', seller: 'Digital World', isNew: false, inStock: false } ] // Данные для поставки фулфилмента const fulfillmentSupply = { id: "1", supplyNumber: "ФФ-2024-001", supplyDate: "2024-01-15", seller: { id: "seller1", name: "TechStore LLC", storeName: "ТехноМагазин", managerName: "Иванов Иван Иванович", phone: "+7 (495) 123-45-67", email: "contact@techstore.ru", inn: "7701234567", }, itemsQuantity: 150, cargoPlaces: 5, volume: 12.5, responsibleEmployeeId: "emp1", logisticsPartnerId: "log1", status: "planned", totalValue: 2500000, } const employees = [ { id: "emp1", firstName: "Иван", lastName: "Петров", position: "Менеджер склада" }, { id: "emp2", firstName: "Мария", lastName: "Сидорова", position: "Логист" } ] const logisticsPartners = [ { id: "log1", name: "ТК Энергия", fullName: "ООО ТК Энергия" }, { id: "log2", name: "СДЭК", fullName: "ООО СДЭК" } ] const wholesalers = [ { id: '1', name: 'ТехноОпт Москва', fullName: 'ООО "Технологии Оптом"', inn: '7735123456', type: 'WHOLESALE', avatar: '/placeholder-company.jpg', rating: 4.8, reviewsCount: 2345, productsCount: 15670, completedOrders: 8934, responseTime: '2 часа', categories: ['Электроника', 'Компьютеры', 'Аксессуары'], location: 'Москва, Россия', workingSince: '2018', verifiedBadges: ['verified', 'premium', 'fast-delivery'], description: 'Крупнейший поставщик электроники и компьютерной техники в России', specialOffers: 3, minOrder: 50000 }, { id: '2', name: 'СтройБаза Регион', fullName: 'ИП Строительные материалы', inn: '7735987654', type: 'WHOLESALE', avatar: '/placeholder-construction.jpg', rating: 4.5, reviewsCount: 1876, productsCount: 8430, completedOrders: 5621, responseTime: '4 часа', categories: ['Стройматериалы', 'Инструменты', 'Сантехника'], location: 'Екатеринбург, Россия', workingSince: '2015', verifiedBadges: ['verified', 'eco-friendly'], description: 'Надежный поставщик строительных материалов по всей России', specialOffers: 1, minOrder: 30000 } ] const getStatusColor = (status: string) => { switch (status) { case 'work': return 'bg-green-500' case 'weekend': return 'bg-gray-400' case 'vacation': return 'bg-blue-500' case 'sick': return 'bg-yellow-500' case 'absent': return 'bg-red-500' default: return 'bg-gray-400' } } const getStatusText = (status: string) => { switch (status) { case 'work': return 'Работа' case 'weekend': return 'Выходной' case 'vacation': return 'Отпуск' case 'sick': return 'Больничный' case 'absent': return 'Прогул' default: return 'Неизвестно' } } const formatPrice = (price: number) => { return new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB', minimumFractionDigits: 0 }).format(price) } 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: { color: "text-blue-300 border-blue-400/30", label: "Запланировано", }, "in-transit": { color: "text-yellow-300 border-yellow-400/30", label: "В пути", }, delivered: { color: "text-green-300 border-green-400/30", label: "Доставлено", }, "in-processing": { color: "text-purple-300 border-purple-400/30", label: "Обрабатывается", }, } const config = statusConfig[status as keyof typeof statusConfig] || statusConfig.planned return ( {config.label} ) } return (
{/* Табель рабочего времени */} Табель рабочего времени {/* Заголовок табеля */}
ИИ

Иванов Иван Иванович

Менеджер по продажам • Март 2024

176 часов

Отработано в месяце

{/* Календарь */}
Пн
Вт
Ср
Чт
Пт
Сб
Вс
{scheduleData.map((day, index) => (
{day.day}
{day.hours > 0 && (
{day.hours}ч
)}
))}
{/* Легенда */}
Работа
Выходной
Отпуск
Больничный
Прогул
{/* Статистика */}
Рабочие дни
22
Выходные
8
Отпуск
0
Опозданий
2
{/* Карточки товаров */} Карточки товаров
{products.map((product) => (
{/* Изображение товара */}
{/* Бейджи */}
{product.isNew && ( Новинка )} {product.oldPrice && ( Скидка )}
{/* Кнопки действий */}
{/* Информация о товаре */}

{product.name}

Артикул: {product.article}

{/* Рейтинг и отзывы */}
{product.rating}
({product.reviews} отзывов)
{/* Категория и бренд */}
{product.category} {product.brand}
{/* Цена */}
{product.price > 0 ? (
{formatPrice(product.price)} {product.oldPrice && ( {formatPrice(product.oldPrice)} )}
) : ( Нет в наличии )} {product.inStock && product.quantity > 0 && (

В наличии: {product.quantity} шт.

)}
{/* Продавец */}
Продавец: {product.seller}
{/* Кнопки */}
{product.inStock && product.price > 0 ? ( <>
{cartQuantity}
) : ( )}
))}
{/* Карточка поставки фулфилмента */} Карточка поставки фулфилмента
{/* Компактный блок с названием магазина */}
{fulfillmentSupply.seller.storeName} {fulfillmentSupply.seller.managerName} {fulfillmentSupply.seller.phone}
{/* Скрытая детальная информация о магазине */} {expandedSeller && (

Юридическое название

{fulfillmentSupply.seller.name}

ИНН

{fulfillmentSupply.seller.inn}

Email

{fulfillmentSupply.seller.email}

)} {/* Единый блок со всеми параметрами в одной строке */}
{/* Номер поставки */}

Номер

{fulfillmentSupply.supplyNumber}

{/* Дата поставки */}

Дата

{formatDate(fulfillmentSupply.supplyDate)}

{/* Количество товаров */}

Товаров

{fulfillmentSupply.itemsQuantity}

{/* Количество мест */}

Мест

{fulfillmentSupply.cargoPlaces}

{/* Объём */}

Объём

{fulfillmentSupply.volume} м³

{/* Стоимость */}

Стоимость

{formatCurrency(fulfillmentSupply.totalValue)}

{/* Ответственный сотрудник */}

Ответственный

{/* Логистический партнер */}

Логистика

{/* Статус */}

Статус

{getStatusBadge(fulfillmentSupply.status)}
{/* Карточки оптовиков */} Карточки оптовиков
{wholesalers.map((wholesaler) => (
{/* Заголовок карточки */}
{wholesaler.name.charAt(0)}

{wholesaler.name}

{wholesaler.verifiedBadges.includes('verified') && ( Проверен )} {wholesaler.verifiedBadges.includes('premium') && ( Premium )}

{wholesaler.fullName}

ИНН: {wholesaler.inn}

{/* Рейтинг и статистика */}
{wholesaler.rating} ({wholesaler.reviewsCount})
{wholesaler.completedOrders} заказов
{/* Описание */}

{wholesaler.description}

{/* Статистика */}
Товаров
{wholesaler.productsCount.toLocaleString()}
Ответ
{wholesaler.responseTime}
{/* Категории */}

Категории:

{wholesaler.categories.map((category, index) => ( {category} ))}
{/* Дополнительная информация */}
{wholesaler.location}
Работает с {wholesaler.workingSince} года
Мин. заказ: {formatPrice(wholesaler.minOrder)}
{/* Специальные предложения */} {wholesaler.specialOffers > 0 && (
{wholesaler.specialOffers} специальных предложения
)} {/* Кнопки действий */}
))}
) }