import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { Form, Input, Button, message, Card } from 'antd' import { ArrowLeftOutlined, BankOutlined, LockOutlined } from '@ant-design/icons' import { loginCompany } from '../api/auth' import { setToken, setUserId, setMemberNo } from '../utils/request' import './CompanyLogin.css' const CompanyLogin = () => { const navigate = useNavigate() const [loading, setLoading] = useState(false) const onFinish = async (values: { phone: string; password: string }) => { setLoading(true) try { // 调用真实登录接口 (yapi mock) - accountType: UNIT_OR_ORG const result = await loginCompany({ phone: values.phone, password: values.password, }) console.log('[单位会员登录] 响应:', result) // 保存 token (存在则存) // 保存后端返回的 accessToken (后续会员接口 Authorization 头都使用此 token) const accessToken = result?.accessToken || result?.token if (accessToken) { setToken(accessToken) } // 保存后端返回的 userId (会员权益页面需要展示) const userId = (result?.userId as string) || '' if (userId) { setUserId(userId) } // 保存后端返回的 memberNo (会员编号,发票接口路径参数也使用) const memberNo = (result?.memberNo as string) || '' if (memberNo) { setMemberNo(memberNo) } // 根据后端返回的 isVip 判断会员状态 // - isVip = true: 已充值会员 -> 会员权益页(/member-valid) // - isVip = false/未返回: 未充值 -> 支付页(/payment) const isVip = result?.isVip === true const memberInfo = { userId, memberNo, memberId: (result?.memberId as string) || '', memberType: '单位会员', amount: 999.0, validPeriod: '1年', } message.success('登录成功!') setTimeout(() => { if (isVip) { // 已充值 -> 会员权益页 navigate('/member-valid', { state: memberInfo, }) } else { // 未充值 -> 支付页 navigate('/payment', { state: { ...memberInfo, isRenew: false, }, }) } }, 500) } catch (error) { // 请求拦截器已统一 message.error,这里不重复提示 console.error('[单位会员登录] 失败:', error) } finally { setLoading(false) } } const handleRegister = () => { navigate('/company-register') } return (
} placeholder="请输入单位账号手机号" maxLength={11} /> } placeholder="请输入密码" />

还没有账号?

) } export default CompanyLogin