import { useState } from 'react'; import { motion } from 'framer-motion'; import { MapPin, Phone, Mail, Clock, Send, User, MessageSquare, Building2, Briefcase, ArrowRight, CheckCircle, } from 'lucide-react'; import { Header } from '../components/Header'; import { Footer } from '../components/Footer'; import { COMPANY_INFO, CONTACT_INFO } from '../lib/constants'; import { usePageTitle } from '../hooks/usePageTitle'; /** * Contact 组件 - 联系我们页面 */ // 招聘信息数据 const jobPositions = [ { id: 1, title: '高级投资经理', department: '投资部', location: '北京', type: '全职', salary: '30K-50K/月', }, { id: 2, title: 'Java 开发工程师', department: '技术部', location: '北京', type: '全职', salary: '25K-40K/月', }, { id: 3, title: '财务顾问', department: '金融部', location: '上海', type: '全职', salary: '20K-35K/月', }, { id: 4, title: '产品经理', department: '产品部', location: '北京', type: '全职', salary: '28K-45K/月', }, ]; // 表单状态类型 interface ContactFormData { name: string; email: string; subject: string; message: string; } interface FormErrors { name?: string; email?: string; subject?: string; message?: string; } /** * Contact 组件 */ export const Contact: React.FC = () => { usePageTitle('联系我们'); const [formData, setFormData] = useState({ name: '', email: '', subject: '', message: '', }); const [errors, setErrors] = useState({}); const [isSubmitting, setIsSubmitting] = useState(false); const [submitSuccess, setSubmitSuccess] = useState(false); // 表单验证 const validateForm = (): boolean => { const newErrors: FormErrors = {}; if (!formData.name.trim()) { newErrors.name = '请输入您的姓名'; } if (!formData.email.trim()) { newErrors.email = '请输入您的邮箱'; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { newErrors.email = '请输入有效的邮箱地址'; } if (!formData.subject.trim()) { newErrors.subject = '请输入邮件主题'; } if (!formData.message.trim()) { newErrors.message = '请输入留言内容'; } else if (formData.message.trim().length < 10) { newErrors.message = '留言内容至少需要 10 个字符'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; // 处理输入变化 const handleInputChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); // 清除对应字段的错误 if (errors[name as keyof FormErrors]) { setErrors((prev) => ({ ...prev, [name]: undefined })); } }; // 处理表单提交 const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!validateForm()) return; setIsSubmitting(true); // 模拟表单提交 await new Promise((resolve) => setTimeout(resolve, 1500)); setIsSubmitting(false); setSubmitSuccess(true); setFormData({ name: '', email: '', subject: '', message: '' }); // 3秒后重置成功状态 setTimeout(() => setSubmitSuccess(false), 3000); }; return ( {/* 顶部导航 */}
{/* 主内容 */}
{/* 页面标题 */}

联系我们

诚挚期待与您合作,欢迎随时与我们联系

{/* 联系信息 */}
{CONTACT_INFO.map((info, index) => { const Icon = info.icon; return (

{info.title}

{info.content}

); })}
{/* 联系表单和地图 */}
{/* 联系表单 */}

发送留言

请填写以下表单,我们将尽快与您联系

{/* 成功提示 */} {submitSuccess && (

提交成功!

我们已收到您的留言,会尽快回复您。

)}
{/* 姓名 */}
{errors.name && (

{errors.name}

)}
{/* 邮箱 */}
{errors.email && (

{errors.email}

)}
{/* 主题 */}
{errors.subject && (

{errors.subject}

)}
{/* 留言内容 */}