"use client" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { EmptyState } from "@/components/ui/empty-state" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { getOrderById, listReviewsByOrder } from "@/lib/api" import { submitReview } from "@/lib/api/reviews" import { notifyInfo, notifySuccess } from "@/lib/toast" import { useAuthStore } from "@/store/auth" import { ArrowLeft, Lock, Star } from "lucide-react" import Link from "next/link" import { use, useEffect, useState } from "react" export default function ReviewPage({ params }: { params: Promise<{ id: string }> }) { const { id } = use(params) const userId = useAuthStore((state) => state.user?.id) const [order, setOrder] = useState>>() const [reviews, setReviews] = useState>>([]) const [loading, setLoading] = useState(true) const [rating, setRating] = useState(0) const [hoverRating, setHoverRating] = useState(0) const [content, setContent] = useState("") useEffect(() => { let cancelled = false queueMicrotask(() => { if (cancelled) return setLoading(true) }) void Promise.all([getOrderById(id), Promise.resolve(listReviewsByOrder(id))]) .then(([nextOrder, nextReviews]) => { if (cancelled) return setOrder(nextOrder) setReviews(nextReviews) }) .catch(() => { if (cancelled) return setOrder(undefined) setReviews([]) }) .finally(() => { if (cancelled) return setLoading(false) }) return () => { cancelled = true } }, [id]) if (loading) { return (
) } if (!order) { return (
) } const hasSubmitted = Boolean(userId && reviews.some((review) => review.fromUserId === userId)) const isRevealed = reviews.length >= 2 && reviews.every((review) => !review.sealed) if (order.status !== "pending_review") { return (
返回订单详情 } />
) } if (hasSubmitted && !isRevealed) { return (
返回订单详情 } />
) } if (hasSubmitted && isRevealed) { return (
返回订单详情 } />
) } return (
返回订单 评价服务

{order.service.title}

{[1, 2, 3, 4, 5].map((star) => ( ))}