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 (
Loading...
); } if (!course) { return (
); } return (
{course.tag && {course.tag}} {course.course_type_display || (course.course_type === 'hardware' ? '硬件课程' : '软件课程')}
{course.title} {course.description}
<div style={{ width: 4, height: 18, background: '#00f0ff', marginRight: 10, borderRadius: 2 }} /> 课程信息 讲师}>
{course.instructor_avatar_url && ( avatar )} {course.instructor} {course.instructor_title && ( {course.instructor_title} )}
时长}> {course.duration} 课时}> {course.lesson_count} 课时
{/* 讲师简介 */} {course.instructor_desc && (
讲师简介: {course.instructor_desc}
)}
{/* 课程详细内容区域 */} {course.content && (
课程大纲与详情
{course.content}
)}
{course.display_detail_image ? (
{course.title}
) : null}
报名咨询
{parseFloat(course.price) > 0 ? ( <> ¥{course.price} ) : ( 免费咨询 )}

* 提交后我们的顾问将尽快与您联系确认

{/* Enroll Modal */} setIsModalOpen(false)} footer={null} destroyOnHidden >

请填写您的联系方式,我们将为您安排课程顾问。

); }; export default VCCourseDetail;