import React, { useState } from 'react'; import { Modal, Form, Input, Button, message } from 'antd'; import { UserOutlined, LockOutlined, MobileOutlined } from '@ant-design/icons'; import { sendSms, phoneLogin } from '../api'; const LoginModal = ({ visible, onClose, onLoginSuccess }) => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [countdown, setCountdown] = useState(0); const handleSendCode = async () => { try { const phone = form.getFieldValue('phone_number'); if (!phone) { message.error('请输入手机号'); return; } // 简单的手机号校验 if (!/^1[3-9]\d{9}$/.test(phone)) { message.error('请输入有效的手机号'); return; } await sendSms({ phone_number: phone }); message.success('验证码已发送'); setCountdown(60); const timer = setInterval(() => { setCountdown((prev) => { if (prev <= 1) { clearInterval(timer); return 0; } return prev - 1; }); }, 1000); } catch (error) { console.error(error); message.error('发送失败: ' + (error.response?.data?.error || '网络错误')); } }; const handleSubmit = async (values) => { setLoading(true); try { const res = await phoneLogin(values); message.success('登录成功'); onLoginSuccess(res.data); onClose(); } catch (error) { console.error(error); message.error('登录失败: ' + (error.response?.data?.error || '网络错误')); } finally { setLoading(false); } }; return (
} placeholder="手机号码" size="large" />
} placeholder="验证码" size="large" />
未注册的手机号验证后将自动创建账号
已在小程序绑定的手机号将自动同步身份
); }; export default LoginModal;