import React, { useEffect, useState } from 'react'; import { useParams, useNavigate, useSearchParams } from 'react-router-dom'; import { Typography, Button, Spin, Empty, Descriptions, Tag, Row, Col, Modal, Form, Input, message } from 'antd'; import { ArrowLeftOutlined, ClockCircleOutlined, UserOutlined, BookOutlined, FormOutlined } from '@ant-design/icons'; import { getVCCourseDetail, createOrder } from '../api'; import { motion } from 'framer-motion'; const { Title, Paragraph } = Typography; const VCCourseDetail = () => { const { id } = useParams(); const navigate = useNavigate(); const [searchParams] = useSearchParams(); const [course, setCourse] = useState(null); const [loading, setLoading] = useState(true); const [isModalOpen, setIsModalOpen] = useState(false); const [submitting, setSubmitting] = useState(false); const [form] = Form.useForm(); // 优先从 URL 获取,如果没有则从 localStorage 获取 const refCode = searchParams.get('ref') || localStorage.getItem('ref_code'); useEffect(() => { const fetchDetail = async () => { try { const response = await getVCCourseDetail(id); setCourse(response.data); } catch (error) { console.error("Failed to fetch course detail:", error); } finally { setLoading(false); } }; fetchDetail(); }, [id]); const handleEnroll = async (values) => { setSubmitting(true); try { const orderData = { course: course.id, customer_name: values.customer_name, phone_number: values.phone_number, ref_code: refCode, quantity: 1, // 将其他信息放入收货地址字段中 shipping_address: `[课程报名] 微信号: ${values.wechat_id || '无'}, 邮箱: ${values.email || '无'}, 备注: ${values.message || '无'}` }; await createOrder(orderData); message.success('报名咨询已提交,我们的课程顾问将尽快与您联系!'); setIsModalOpen(false); } catch (error) { console.error(error); message.error('提交失败,请重试'); } finally { setSubmitting(false); } }; if (loading) { return (
* 提交后我们的顾问将尽快与您联系确认
请填写您的联系方式,我们将为您安排课程顾问。