"use client"; import { useEffect, useState } from "react"; import Image from "next/image"; import Link from "next/link"; const WECHAT_STORAGE_KEY = "salon_join_wechat"; interface RecordData { id?: string; wechatId?: string; nickname?: string; media?: string; is_volunteer?: boolean; } interface UserRecord { hasRecord: boolean; record: RecordData | null; isComplete: boolean; isApproved: boolean; isRejected: boolean; vip: boolean; } function getStatusLabel(data: UserRecord): string { if (data.isComplete || (data.vip && data.hasRecord)) return "报名成功"; if (data.isRejected) return "审核拒绝"; if (data.isApproved) return "审核通过"; return "审核中"; } function getStatusColor(status: string): string { if (status === "报名成功") return "bg-emerald-50 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-300"; if (status === "审核通过") return "bg-emerald-50 dark:bg-emerald-900/30 text-emerald-600 dark:text-emerald-400"; if (status === "审核拒绝") return "bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-400"; return "bg-amber-50 dark:bg-amber-900/30 text-amber-600 dark:text-amber-400"; } export default function MyRegistrationStatus() { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const fetchStatus = () => { if (typeof window === "undefined") return; try { const stored = localStorage.getItem(WECHAT_STORAGE_KEY); const wechatId = (stored || "").trim(); if (!wechatId) { setLoading(false); setData(null); return; } setLoading(true); fetch(`/api/join/by-wechat?wechat_id=${encodeURIComponent(wechatId)}`) .then((r) => r.json()) .then((d) => { if (d?.hasRecord) { const rec = d.record ?? null; setData({ hasRecord: !!d.hasRecord, record: rec ? { ...rec, wechatId: rec.wechatId || wechatId } : null, isComplete: !!d.isComplete, isApproved: !!d.isApproved, isRejected: !!d.isRejected, vip: !!d.vip, }); } else { setData(null); } }) .catch(() => setData(null)) .finally(() => setLoading(false)); } catch { setLoading(false); } }; useEffect(() => { if (typeof window === "undefined") return; let cancelled = false; fetchStatus(); const onUpdate = () => { if (!cancelled) fetchStatus(); }; window.addEventListener("vip:updated", onUpdate); return () => { cancelled = true; window.removeEventListener("vip:updated", onUpdate); }; }, []); if (loading || !data?.hasRecord || !data.record) return null; const rec = data.record; const status = getStatusLabel(data); const statusColor = getStatusColor(status); return (

👤 我的报名

{rec.media ? ( ) : (
👤
)}
{rec.is_volunteer && ( 志愿者 )}

{rec.nickname || "—"}

{rec.wechatId && (

微信号: {rec.wechatId}

)} {status}
查看详情 →
); }