diff --git a/src/apis/home.ts b/src/apis/home.ts index 4c49cc3..7fd0279 100644 --- a/src/apis/home.ts +++ b/src/apis/home.ts @@ -1,7 +1,15 @@ // 登陆相关接口 import request from '@/utils/index' +import { SmsType } from '@/constants/sms' + +// 获取短信验证码 +export const sendSMSCode = (phone: string, type: SmsType) => { + return request.post('/v1/auth/sendSMSCode', { + phone, + type, + }); +}; -// 轮播接口 export const getBannerList = () => request.get('/v1/home/home_banners') // GPU说明列表 export const getGpuList = () => request.get('/v1/home/home_products') diff --git a/src/constants/sms.ts b/src/constants/sms.ts new file mode 100644 index 0000000..5d092f9 --- /dev/null +++ b/src/constants/sms.ts @@ -0,0 +1,5 @@ +export enum SmsType { + REGISTER = 'register', + LOGIN = 'login', + RESET_PASSWORD = 'restp', // 注意:按你后端实际字段来,如果是 restp 就用 restp +} \ No newline at end of file diff --git a/src/views/login/component/register.vue b/src/views/login/component/register.vue index adbcde8..c2174c0 100644 --- a/src/views/login/component/register.vue +++ b/src/views/login/component/register.vue @@ -3,7 +3,7 @@ @finish-failed="onFinishFailed" >
Fast亼算云账号注册
- + @@ -35,15 +35,22 @@ import { reactive, ref, shallowRef, computed, onMounted } from 'vue'; import { useRouter } from 'vue-router'; import apis from '@/apis'; +import { sendSMSCode } from '@/apis/home' import { message, type FormInstance } from 'ant-design-vue'; import SmsCodeInput from '@/components/SmsCodeInput.vue'; import { validatePassword } from '@/utils/validotors'; // 根据实际路径调整 +import { SmsType } from '@/constants/sms'; + const router = useRouter(); const formRef = ref(); const codeValidateStatus = shallowRef<'success' | 'warning' | 'error' | ''>(''); const codeHelp = shallowRef(''); const checked = ref(false); + +// 获取 SmsCodeInput 的 ref(用于重置倒计时) +const smsInputRef = ref>(); + interface FormState { phone: string; code: string; @@ -64,6 +71,8 @@ const clearCodeError = () => { codeValidateStatus.value = ''; codeHelp.value = ''; }; + + const querenPassword = (rule, value) => { if (!value) { return Promise.reject('请输入密码!'); @@ -89,12 +98,35 @@ const onFinish = async (values: FormState) => { message.error(error); } }); - }; const onFinishFailed = (errorInfo: any) => { console.log('表单验证失败:', errorInfo); }; + +// 处理获取验证码 +const handleSendCode = async () => { + if (!formState.phone || !/^\d{11}$/.test(formState.phone)) { + message.warning('请输入正确的手机号'); + return; + } + + try { + // 调用短信接口(注册场景) + const res: any = await sendSMSCode(formState.phone, SmsType.REGISTER); + console.log('发送验证码请求成功:', res); + if (res.code === 1) { + message.success(res.msg); + // 重置子组件的倒计时 + } else { + message.error(res.message); + } + // message.success('验证码已发送'); + } catch (error: any) { + console.error('发送验证码失败:', error); + message.error(error?.response?.data?.message || '发送失败,请稍后重试'); + } +};