"use client"; import React, { useState, useEffect } from "react"; import { Product } from "../lib/data/products"; import { useCartStore } from "../lib/store/cartStore"; import { productService } from "../lib/services/productService"; import { motion, AnimatePresence } from "motion/react"; import { Building2, ShoppingCart, Search, ChevronRight, FileText, Package, CheckCircle2, X } from "lucide-react"; import SafeImage from "./SafeImage"; interface QuickOrderItem { product: Product; quantity: number; } export default function B2BPortal({ onClose }: { onClose: () => void }) { const [products, setProducts] = useState([]); const [quantities, setQuantities] = useState>({}); const [searchQuery, setSearchQuery] = useState(""); const { addItem } = useCartStore(); const [showSuccess, setShowSuccess] = useState(false); useEffect(() => { productService.getProducts({ limit: 999 }).then(res => setProducts(res.data)); }, []); const filteredProducts = products.filter(p => p.name.toLowerCase().includes(searchQuery.toLowerCase()) || p.artNo.includes(searchQuery) ); const handleQuantityChange = (id: string, val: string) => { const num = parseInt(val) || 0; setQuantities(prev => ({ ...prev, [id]: Math.max(0, num) })); }; const handleAddAll = () => { Object.entries(quantities).forEach(([id, qty]) => { const numQty = qty as number; if (numQty > 0) { const product = products.find(p => p.id === id); if (product) { addItem(product, numQty); } } }); setShowSuccess(true); setTimeout(() => setShowSuccess(false), 3000); }; const totalItems = Object.values(quantities).reduce((acc: number, val) => acc + (val as any), 0); return ( {/* Sidebar Info */}

پنل کلینیک‌ها
و داروخانه‌ها

این بخش اختصاصی برای ثبت سفارشات حجیم و استعلام موجودی آنی طراحی شده است. قیمت‌های نمایش داده شده، فی واحد کاتالوگ هستند.

دریافت لیست قیمت PDF
پیگیری محمولات قبلی
{/* Main Grid Area */}
{/* Header & Search */}
setSearchQuery(e.target.value)} className="w-full bg-medical-gray-50 border border-medical-gray-200 rounded-2xl py-3 pr-11 pl-4 text-sm focus:outline-none focus:ring-2 focus:ring-canina-blue/20" />
{/* Table */}
{filteredProducts.map(product => ( ))}
تصویر نام و کد کالا وضعیت موجودی تعداد سفارش
{product.name}
شناسه کالا: {product.artNo}
آماده ارسال handleQuantityChange(product.id, e.target.value)} placeholder="0" className="w-20 bg-medical-gray-50 border border-medical-gray-200 rounded-xl py-2 px-3 text-center font-mono font-bold focus:ring-2 focus:ring-canina-blue/20 outline-none" />
{showSuccess && ( سفارشات با موفقیت به سبد خرید اضافه شدند. )}
); }