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))}
+ />
+
+
+
+
+
+
+
+
+
+ 支付信息
+
+
+
+
+ {service.title} × {quantity}
+
+ ¥{totalPrice}
+
+
+
+ 应付金额
+ ¥{totalPrice}
+
+
+
+ 钱包余额: ¥{walletBalance}
+ {walletBalance < totalPrice && (余额不足)}
+
+
+
+ 资金由平台托管,服务完成后支付给打手
+
+
+
+
+
+
+
+ )
+}