diff --git a/app/(main)/player/[id]/page.tsx b/app/(main)/player/[id]/page.tsx index 19b4178..23375f0 100644 --- a/app/(main)/player/[id]/page.tsx +++ b/app/(main)/player/[id]/page.tsx @@ -150,7 +150,9 @@ export default async function PlayerDetailPage({ params }: { params: Promise<{ i - + ))} diff --git a/app/(order)/order/new/page.tsx b/app/(order)/order/new/page.tsx new file mode 100644 index 0000000..8144c04 --- /dev/null +++ b/app/(order)/order/new/page.tsx @@ -0,0 +1,178 @@ +"use client" + +import { ArrowLeft, CheckCircle, CreditCard, ShieldCheck } from "lucide-react" +import Link from "next/link" +import { useSearchParams } from "next/navigation" +import { useState } from "react" +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" +import { Button } from "@/components/ui/button" +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" +import { Separator } from "@/components/ui/separator" +import { Textarea } from "@/components/ui/textarea" +import { mockPlayers, mockServices, walletBalance } from "@/lib/mock-data" + +export default function NewOrderPage() { + const searchParams = useSearchParams() + const serviceId = searchParams.get("serviceId") + + const service = mockServices.find((s) => s.id === serviceId) + const player = service ? mockPlayers.find((p) => p.id === service.playerId) : null + + const [quantity, setQuantity] = useState(1) + const [note, setNote] = useState("") + const [submitted, setSubmitted] = useState(false) + + if (!service || !player) { + return ( +
+ 服务不存在 +
+ ) + } + + const totalPrice = service.price * quantity + + if (submitted) { + return ( +
+ +

下单成功

+

+ 订单已创建,等待打手接单。你可以在订单列表中查看进度。 +

+
+ + +
+
+ ) + } + + return ( +
+ + + 返回打手主页 + + +

确认下单

+ +
+ + + 服务信息 + + +
+ + + {player.user.nickname[0]} + +
+

{player.user.nickname}

+

+ {player.shopName ? `${player.shopName} · ` : ""} + {service.gameName} +

+
+
+ +
+
+ 服务 + {service.title} +
+
+ 单价 + + ¥{service.price}/{service.unit} + +
+ {service.rankRange && ( +
+ 段位范围 + {service.rankRange} +
+ )} +
+
+
+ + + + 订单信息 + + +
+ + setQuantity(Math.max(1, Number.parseInt(e.target.value, 10) || 1))} + /> +
+
+ +