import React, { useEffect, useState } from "react"; import "./u2.css"; import { useNavigate } from "react-router-dom"; import DecorLine from "../../components/DecorLine"; import avatar from "../../assets/avatar.png"; import semicircle from "../../assets/semicircle.png"; import BackButton from "../../components/BackButton"; import ConfirmButton from "../../components/ConfirmButton"; import { getPatientInfo, getVipStatus, PatientInfo } from "../../api/hisApi"; const U2: React.FC = () => { const navigate = useNavigate(); // 不再通过路由传参,直接从 localStorage 读取上次保存的身份证号 const idCardNo = localStorage.getItem("lastIdCardNo"); const [patientInfo, setPatientInfo] = useState(null); const [loading, setLoading] = useState(false); const [isVip, setIsVip] = useState(null); const vipCalledRef = React.useRef(false); useEffect(() => { if (idCardNo) { setLoading(true); getPatientInfo(idCardNo) .then((res) => { if (res.Status === 200) { setPatientInfo(res.Data); } else { alert(`获取用户信息失败: ${res.Message}`); } }) .catch((err) => { console.error(err); alert("获取用户信息出错,请重试"); }) .finally(() => { setLoading(false); }); } }, [idCardNo]); // 获取 VIP 状态,避免重复请求(用 ref 保护) useEffect(() => { if (!idCardNo) return; if (vipCalledRef.current) return; vipCalledRef.current = true; getVipStatus(idCardNo) .then((res) => { if (res.Status === 200) { setIsVip(res.Data?.is_vip ?? 0); } else { console.warn("获取 VIP 状态失败:", res.Message); setIsVip(0); } }) .catch((err) => { console.error("getVipStatus error", err); setIsVip(0); }); }, [idCardNo]); const handleBack = () => { navigate(-1); }; const handleConfirm = () => { // 判断是否为 VIP 客户(0 否,1 是) if (isVip === 1) { navigate("/u3"); return; } else { // 是否套餐待定 const isPackageUndecided = false; // 这里可以替换为实际的判断逻辑 if (isPackageUndecided) { navigate("/u4"); } else { navigate("/u5"); } } }; return (
尊敬的张先生/女士,欢迎您的到来:
avatar
姓名:{loading ? "" : patientInfo?.name || "---"}
性别:{loading ? "" : patientInfo?.gender_name || "---"}
年龄:{loading ? "" : patientInfo?.age || "---"}
证件号:{idCardNo || patientInfo?.IdCard || "---"}
手机号:{loading ? "" : patientInfo?.phone || "---"}
婚姻状况:{loading ? "" : patientInfo?.marital_name || "---"}
* 如信息有误,请联系前台 start button
); }; export default U2;