import { useState, useEffect } from "react" import { Button, Input, Textarea, Spinner, Popover, PopoverTrigger, PopoverContent, } from "@heroui/react" import { activeClient } from "../../../utils/client" export default function JoinForm() { const [formData, setFormData] = useState({ name: "", class: "", number: "", major: "", phone: "", qq: "", email: "", memo: "", }) const [loading, setLoading] = useState(false)// 添加加载状态 const [popoverOpen, setPopoverOpen] = useState(false)// 控制 Popover 显示 const [popoverMessage, setPopoverMessage] = useState("")// Popover 显示的消息 // 在组件挂载时加载本地存储的数据 useEffect(() => { const loadFromLocalStorage = () => { const data = localStorage.getItem("formData") if (data) { setFormData(JSON.parse(data)) } } loadFromLocalStorage() }, []) // 保存表单数据到本地存储 const saveToLocalStorage = () => { localStorage.setItem("formData", JSON.stringify(formData)) } // 处理表单输入变化 const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData(prevData => ({ ...prevData, [name]: value, })) setTimeout(() => { try { saveToLocalStorage() } catch (error) { console.error("Failed to save form data to local storage", error) } }, 100) } // 处理表单提交 const handleSubmit = async () => { setLoading(true)// 设置加载状态为 true try { await activeClient.freshman.postFreshmanAdd({ requestBody: formData, }) setPopoverMessage("提交成功!后续请加群获取!") setPopoverOpen(true) // 显示成功消息 // 延迟跳转以确保用户能看到 Popover 消息 setTimeout(() => { window.location.href = "/freshman/qrcode" }, 2000) } catch (error) { console.error("Error submitting form:", error) setPopoverMessage("提交失败,请稍后重试。") setPopoverOpen(true) } finally { setLoading(false)// 重置加载状态 } } return (
我们需要以下信息用于登记
我们需要以下信息以便联系你