import {
AlertTriangle,
ArrowLeft,
CheckCircle,
Clock,
MessageSquare,
RefreshCw,
Star,
XCircle,
} from "lucide-react"
import Link from "next/link"
import { notFound } from "next/navigation"
import { Badge } from "@/components/ui/badge"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Separator } from "@/components/ui/separator"
import { statusLabels } from "@/lib/constants"
import { mockChatSessions, mockOrders, mockReviews } from "@/lib/mock-data"
import type { OrderStatus } from "@/lib/types"
const statusSteps: OrderStatus[] = [
"pending_payment",
"pending_accept",
"in_progress",
"pending_close",
"pending_review",
"completed",
]
export default async function OrderDetailPage({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params
const order = mockOrders.find((o) => o.id === id)
if (!order) notFound()
const reviews = mockReviews.filter((r) => r.orderId === id)
const chatSession = mockChatSessions.find((s) => s.orderId === id)
const currentStepIndex = statusSteps.indexOf(order.status)
return (
返回订单列表
订单详情
{statusLabels[order.status]}
{order.status !== "disputed" && order.status !== "cancelled" && (
{statusSteps.map((step, i) => {
const isActive = i <= currentStepIndex
const isCurrent = i === currentStepIndex
return (
{isActive ? : i + 1}
{statusLabels[step]}
)
})}
)}
服务信息
服务
{order.service.title}
游戏
{order.service.gameName}
单价
¥{order.service.price}/{order.service.unit}
打手
{order.playerName}
{order.shopName && (
店铺
{order.shopName}
)}
总价
¥{order.totalPrice}
{order.note && (
备注:
{order.note}
)}
时间线
下单时间:
{new Date(order.createdAt).toLocaleString("zh-CN")}
{order.acceptedAt && (
接单时间:
{new Date(order.acceptedAt).toLocaleString("zh-CN")}
)}
{order.closedAt && (
结单时间:
{new Date(order.closedAt).toLocaleString("zh-CN")}
)}
{order.completedAt && (
完成时间:
{new Date(order.completedAt).toLocaleString("zh-CN")}
)}
{reviews.length > 0 && (
评价
{reviews.map((review) => (
{review.fromUserName}
{[1, 2, 3, 4, 5].map((star) => (
))}
{review.content && (
{review.content}
)}
{new Date(review.createdAt).toLocaleDateString("zh-CN")}
))}
)}
{order.status === "pending_accept" && (
)}
{(order.status === "in_progress" || order.status === "pending_close") && chatSession && (
)}
{order.status === "pending_review" && (
)}
{["in_progress", "pending_close"].includes(order.status) && (
)}
{order.status === "completed" && (
)}
)
}