import React, { useEffect, useState } from 'react'; import { Form, Input, Button, Spin, message, Row, Col } from 'antd'; import { UserRegistr } from '@/services/services/login'; import { history, request } from '@umijs/max'; const Register: React.FC = () => { const [form] = Form.useForm(); const [spinning, setSpinning] = useState(false); const [messageApi, messageHolder] = message.useMessage(); const [countdown, setCountdown] = useState(0); // 倒计时状态 useEffect(() => { // 检查当前网址是不是包含query,并且?aff=后面有6位数字 const urlParams = new URLSearchParams(window.location.search); const affiliateCode = urlParams.get('aff'); if (affiliateCode) { form.setFieldsValue({ affiliateCode }); } }, []); // 发送邮箱验证码 const sendVerificationCode = async () => { try { debugger; const email = form.getFieldsValue().email; if (!email) { messageApi.warning('请先填写邮箱'); return; } // 验证邮箱格式 const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { messageApi.warning('请输入有效的邮箱格式'); return; } // 开始请求发送的接口 let res = await request>(`/lms/User/SendVerificationCode`, { method: 'POST', data: { email } }); if (res.code != 1) { throw new Error(res.message); } // 设置倒计时 setCountdown(60); const timer = setInterval(() => { setCountdown((prevCountdown) => { if (prevCountdown <= 1) { clearInterval(timer); return 0; } return prevCountdown - 1; }); }, 1000); messageApi.success('验证码已发送,请查收邮箱'); } catch (error: any) { messageApi.error(error.message || '发送验证码失败'); } finally { } }; const onFinish = async (values: UserModel.UserRegisterParams) => { // 判断两次密码是否一致 if (values.password !== values.confirm) { messageApi.warning('两次密码不一致!'); return; } debugger // 开始注册 setSpinning(true); try { await UserRegistr(values); messageApi.success('注册成功,即将跳转到登录界面'); // 注册成功后,跳转到登录页面 setTimeout(() => { history.push('/user/login'); }, 3000); } catch (error: any) { messageApi.error(error.message); } finally { setSpinning(false); } }; return (

注册

({ validator(_, value) { if (!value || getFieldValue('password') === value) { return Promise.resolve(); } return Promise.reject(new Error('两次输入的密码不一致!')); }, }), { pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?.&.])[A-Za-z\d@$!%*?.&]{8,}$/, message: '密码必须包含至少八位,必须包含大小写字母,数字,特殊字符 @$!%*?.&. ', }, ]} >
{messageHolder}
); }; export default Register;