"use client"; import { useState, useEffect, type FormEvent } from "react"; import Link from "next/link"; import { SESSIONS } from "@/config/home.config"; const ageOptions = ["18-24", "25-30", "31-35", "36-40", "40+"]; const firstTimeOptions = ["是,第一次参加", "否,参加过类似活动"]; interface FormData { city: string; session: string; nickname: string; ageRange: string; wechatOrPhone: string; intro: string; firstTime: string; agreeRules: boolean; } function getSessionFromUrl(): string { if (typeof window === "undefined") return ""; return new URLSearchParams(window.location.search).get("session") || ""; } function getSessionInfo(sessionId: string) { return SESSIONS.find((s) => s.id === sessionId); } export default function JoinPage() { const [form, setForm] = useState({ city: "北京", session: "", nickname: "", ageRange: "", wechatOrPhone: "", intro: "", firstTime: "", agreeRules: false, }); const [submitted, setSubmitted] = useState(false); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); useEffect(() => { const sid = getSessionFromUrl(); if (sid) setForm((prev) => ({ ...prev, session: sid })); }, []); const set = (key: keyof FormData, value: string | boolean) => setForm((prev) => ({ ...prev, [key]: value })); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setError(null); setSubmitting(true); try { const res = await fetch("/api/join", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ city: form.city, session: form.session, nickname: form.nickname, age_range: form.ageRange, wechat_or_phone: form.wechatOrPhone, intro: form.intro, first_time: form.firstTime, agree_rules: form.agreeRules, }), }); const data = await res.json(); if (!res.ok || !data?.ok) { throw new Error(data?.error || "提交失败,请稍后重试"); } setSubmitted(true); } catch (err) { setError(err instanceof Error ? err.message : "网络错误,请重试"); } finally { setSubmitting(false); } }; const selectedSession = getSessionInfo(form.session); if (submitted) { return (

报名成功

我们会尽快通过您留下的联系方式与您确认

← 返回首页
); } return (
📍
北京周末新朋友活动

活动报名

填个简单表单即可,无需注册登录

{selectedSession && (

已选场次

{selectedSession.title}

{selectedSession.date} {selectedSession.time} · {selectedSession.place}

)}
set("city", e.target.value)} required className="form-input" />
set("nickname", e.target.value)} required className="form-input" />
set("wechatOrPhone", e.target.value)} required className="form-input" />
set("intro", e.target.value)} required className="form-input" />
{error && (

{error}

)}
← 返回首页
); } function Field({ label, children, }: { label: string; children: React.ReactNode; }) { return (
{children}
); }