import React, { useEffect, useState } from 'react'; import { useParams, useNavigate, useSearchParams, useLocation } from 'react-router-dom'; import { Typography, Button, Spin, Empty, Descriptions, Tag, Row, Col, Modal, Form, Input, message, Statistic } from 'antd'; import { ArrowLeftOutlined, ClockCircleOutlined, GiftOutlined, ShoppingCartOutlined } from '@ant-design/icons'; import { getServiceDetail, createServiceOrder } from '../api'; import { useAuth } from '../context/AuthContext'; import { motion } from 'framer-motion'; const { Title, Paragraph } = Typography; const ServiceDetail = () => { const { id } = useParams(); const navigate = useNavigate(); const location = useLocation(); const [searchParams] = useSearchParams(); const { user, showLoginModal } = useAuth(); const [service, setService] = 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(() => { console.log('[ServiceDetail] Current ref_code:', refCode); }, [refCode]); useEffect(() => { const fetchDetail = async () => { try { const response = await getServiceDetail(id); setService(response.data); } catch (error) { console.error("Failed to fetch service detail:", error); } finally { setLoading(false); } }; fetchDetail(); }, [id]); useEffect(() => { if (isModalOpen && user && user.phone_number) { form.setFieldsValue({ phone_number: user.phone_number }); } }, [isModalOpen, user, form]); const handlePurchase = async (values) => { setSubmitting(true); try { const orderData = { service: service.id, customer_name: values.customer_name, company_name: values.company_name, phone_number: values.phone_number, email: values.email, requirements: values.requirements, ref_code: refCode }; await createServiceOrder(orderData); message.success('需求已提交,我们的销售顾问将尽快与您联系!'); setIsModalOpen(false); } catch (error) { console.error(error); message.error('提交失败,请重试'); } finally { setSubmitting(false); } }; if (loading) { return (
* 具体价格可能因需求复杂度而异,提交需求后我们将提供详细报价单
请填写您的联系方式和需求,我们的技术顾问将在 24 小时内与您联系。