From 1466806339a2a95484502b6c2a8afbe651baa681 Mon Sep 17 00:00:00 2001 From: 3030332422 <3030332422@qq.com> Date: Mon, 6 Oct 2025 20:01:06 +0800 Subject: [PATCH] =?UTF-8?q?update:=E7=A7=BB=E5=8A=A8=E7=AB=AF=E5=BF=98?= =?UTF-8?q?=E8=AE=B0=E5=AF=86=E7=A0=81=E9=A1=B5=E9=9D=A2=E7=9A=84=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/manager-mobile/src/api/auth.ts | 18 ++++++++ .../src/pages/forgot-password/index.vue | 45 +++++++++++-------- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/main/manager-mobile/src/api/auth.ts b/main/manager-mobile/src/api/auth.ts index 8b3b2d2b..f9750a08 100644 --- a/main/manager-mobile/src/api/auth.ts +++ b/main/manager-mobile/src/api/auth.ts @@ -123,3 +123,21 @@ export function register(data: RegisterData) { }, }) } + +// 忘记密码数据类型 +export interface ForgotPasswordData { + phone: string + code: string + password: string + captchaId: string +} + +// 忘记密码(找回密码) +export function retrievePassword(data: ForgotPasswordData) { + return http.Put('/user/retrieve-password', data, { + meta: { + ignoreAuth: true, + toast: true, + }, + }) +} diff --git a/main/manager-mobile/src/pages/forgot-password/index.vue b/main/manager-mobile/src/pages/forgot-password/index.vue index deab9c09..f574d0e9 100644 --- a/main/manager-mobile/src/pages/forgot-password/index.vue +++ b/main/manager-mobile/src/pages/forgot-password/index.vue @@ -16,6 +16,8 @@ import { getEnvBaseUrl, sm2Encrypt } from "@/utils"; import { toast } from "@/utils/toast"; // 导入国际化相关功能 import { t, initI18n } from "@/i18n"; +// 导入API接口 +import { retrievePassword, sendSmsCode } from "@/api/auth"; // 获取屏幕边界到安全区域距离 let safeAreaInsets; @@ -129,7 +131,7 @@ async function refreshCaptcha() { } // 发送短信验证码 -async function sendSmsCode() { +async function handleSendSmsCode() { // 手机号格式验证 const phoneRegex = /^1[3-9]\d{9}$/; if (!phoneRegex.test(formData.value.mobile)) { @@ -144,12 +146,14 @@ async function sendSmsCode() { try { smsLoading.value = true; - // TODO: 调用发送短信验证码API - // await sendSmsCode({ - // mobile: formData.value.mobile, - // captcha: formData.value.captcha, - // captchaId: formData.value.captchaId - // }) + // 将手机号转换为国际格式 + const internationalPhone = formData.value.areaCode + formData.value.mobile; + // 调用发送短信验证码API + await sendSmsCode({ + phone: internationalPhone, + captcha: formData.value.captcha, + captchaId: formData.value.captchaId + }) toast.success(t("retrievePassword.captchaSendSuccess")); @@ -188,6 +192,9 @@ async function handleResetPassword() { return; } + // 将手机号转换为国际格式 + const internationalPhone = formData.value.areaCode + formData.value.mobile; + if (!formData.value.captcha) { toast.warning(t("retrievePassword.captchaRequired")); return; @@ -218,7 +225,7 @@ async function handleResetPassword() { // 检查SM2公钥是否配置 if (!sm2PublicKey.value) { - toast.warning(t('sm2.publicKeyNotConfigured')); + toast.warning(t("sm2.publicKeyNotConfigured")); return; } @@ -230,17 +237,17 @@ async function handleResetPassword() { encryptedPassword = sm2Encrypt(sm2PublicKey.value, captchaAndPassword); } catch (error) { console.error("密码加密失败:", error); - toast.warning(t('sm2.encryptionFailed')); + toast.warning(t("sm2.encryptionFailed")); return; } - // TODO: 调用重置密码API - // await resetPassword({ - // mobile: formData.value.mobile, - // mobileCaptcha: formData.value.mobileCaptcha, - // password: encryptedPassword, - // captchaId: formData.value.captchaId - // }) + // 调用重置密码API + await retrievePassword({ + phone: internationalPhone, + code: formData.value.mobileCaptcha, + password: encryptedPassword, + captchaId: formData.value.captchaId + }) toast.success(t("retrievePassword.passwordUpdateSuccess")); @@ -358,11 +365,11 @@ onMounted(async () => { :placeholder="t('retrievePassword.mobileCaptchaPlaceholder')" :maxlength="6" /> - + {{ smsCountdown > 0 - ? `${smsCountdown}${t("register.secondsLater")}` + ? `${smsCountdown}s` : t("retrievePassword.getMobileCaptcha") }} @@ -446,7 +453,7 @@ onMounted(async () => { custom-class="confirm-btn" @click="closeAreaCodeSheet" > - {{ t('login.confirm') }} + {{ t("login.confirm") }}