购物车
您的购物车是空的
去添加一些图书吧
{item.title}
单价: ¥{item.price.toFixed(2)}
"use client" import { MainNav } from "@/components/main-nav" import { SearchBar } from "@/components/search-bar" import { ThemeToggle } from "@/components/theme-toggle" import { UserNav } from "@/components/user-nav" import { Button } from "@/components/ui/button" import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Separator } from "@/components/ui/separator" import { useToast } from "@/components/ui/use-toast" import { useAuth } from "@/context/auth-context" import { useCart } from "@/context/cart-context" import { Minus, Plus, ShoppingCart, Trash2 } from "lucide-react" import { useRouter } from "next/navigation" import { fetchWithAuth } from "@/lib/api" export default function CartPage() { const { cart, updateQuantity, removeFromCart, clearCart } = useCart() const { user } = useAuth() const { toast } = useToast() const router = useRouter() const totalPrice = cart.reduce((total, item) => total + item.price * item.quantity, 0) const handleCheckout = async () => { if (!user) { toast({ title: "请先登录", description: "您需要登录后才能结账", variant: "destructive", }) router.push("/login") return } if (cart.length === 0) { toast({ title: "购物车为空", description: "请先添加商品到购物车", variant: "destructive", }) return } try { const orderData = { items: cart.map((item) => ({ bookId: item.id, quantity: item.quantity, })), } const response = await fetchWithAuth("orders/create", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(orderData), }) const result = await response.json() if (result.code === 0) { toast({ title: "订单创建成功", description: `订单号: ${result.data.orderId}`, }) clearCart() router.push(`/orders/${result.data.orderId}`) } else { toast({ variant: "destructive", title: "订单创建失败", description: result.msg || "创建订单时出错", }) } } catch (error) { toast({ variant: "destructive", title: "订单创建失败", description: "服务器连接错误,请稍后再试", }) } } return (
去添加一些图书吧
单价: ¥{item.price.toFixed(2)}