2
0

修复忘记密码时提示错误问题

This commit is contained in:
lai
2025-02-20 16:08:46 +08:00
parent 1dd6d27d64
commit 9172a03e11
3 changed files with 83 additions and 100 deletions

View File

@@ -109,7 +109,7 @@ const handleCancel = () => {
<style scoped> <style scoped>
.order-info { .order-info {
padding: 20px; padding: 20px;
background: #f8f8f8; background: var(--text-color, var(--ant-text-color)); /* 使用主题变量 */
border-radius: 8px; border-radius: 8px;
margin-bottom: 24px; margin-bottom: 24px;
} }
@@ -127,12 +127,12 @@ const handleCancel = () => {
.label { .label {
width: 84px; width: 84px;
color: #666; color: var(--text-color, var(--ant-text-color)); /* 使用主题变量 */
} }
.value { .value {
flex: 1; flex: 1;
color: #333; color: var(--text-color, var(--ant-text-color)); /* 使用主题变量 */
} }
.value.highlight { .value.highlight {
@@ -147,7 +147,7 @@ const handleCancel = () => {
.payment-methods h4 { .payment-methods h4 {
margin-bottom: 16px; margin-bottom: 16px;
color: #333; color: var(--text-color, var(--ant-text-color)); /* 使用主题变量 */
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;
} }
@@ -171,7 +171,7 @@ const handleCancel = () => {
.method-item:hover { .method-item:hover {
border-color: #1890ff; border-color: #1890ff;
background: #f0f5ff; background: rgba(6, 42, 77, 0.192);
} }
.payment-icon { .payment-icon {
@@ -190,7 +190,7 @@ const handleCancel = () => {
.method-item.disabled { .method-item.disabled {
opacity: 0.5; opacity: 0.5;
cursor: not-allowed; cursor: not-allowed;
background: #f5f5f5; background: var(--text-color, var(--ant-text-color)); /* 使用主题变量 */
} }
.balance-icon { .balance-icon {
@@ -199,7 +199,7 @@ const handleCancel = () => {
.balance-info { .balance-info {
font-size: 12px; font-size: 12px;
color: #666; color: var(--text-color, var(--ant-text-color)); /* 使用主题变量 */
margin-top: 4px; margin-top: 4px;
} }

View File

@@ -79,14 +79,19 @@ async function handleSubmit() {
try { try {
await validate(); await validate();
await resetPasswordByEmail({
const { error } = resetPasswordByEmail({
email: model.email, email: model.email,
code: model.code, code: model.code,
password: model.password password: model.password
}); });
window.$message?.success(t('page.login.resetPwd.resetSuccess')); if (!error) {
toggleLoginModule('pwd-login'); window.$message?.success(t('page.login.resetPwd.resetSuccess'));
toggleLoginModule('pwd-login');
}
} catch (error) { } catch (error) {
console.error('Reset password failed:', error); console.error('Reset password failed:', error);
window.$message?.error(t('page.login.resetPwd.resetFailed')); window.$message?.error(t('page.login.resetPwd.resetFailed'));
@@ -97,34 +102,25 @@ async function handleSubmit() {
<template> <template>
<AForm ref="formRef" :model="model" :rules="rules"> <AForm ref="formRef" :model="model" :rules="rules">
<AFormItem name="email"> <AFormItem name="email">
<AInput v-model:value="model.email" size="large" :placeholder="t('page.login.common.emailPlaceholder')" autocomplete="off"/> <AInput v-model:value="model.email" size="large" :placeholder="t('page.login.common.emailPlaceholder')"
autocomplete="off" />
</AFormItem> </AFormItem>
<AFormItem name="code"> <AFormItem name="code">
<div class="w-full flex-y-center gap-8px"> <div class="w-full flex-y-center gap-8px">
<AInput v-model:value="model.code" size="large" :placeholder="t('page.login.common.codePlaceholder')" autocomplete="off"/> <AInput v-model:value="model.code" size="large" :placeholder="t('page.login.common.codePlaceholder')"
<AButton autocomplete="off" />
size="small" <AButton size="small" :disabled="isCounting" :loading="loading" @click="handleCaptcha">
:disabled="isCounting"
:loading="loading"
@click="handleCaptcha"
>
{{ label }} {{ label }}
</AButton> </AButton>
</div> </div>
</AFormItem> </AFormItem>
<AFormItem name="password"> <AFormItem name="password">
<AInputPassword <AInputPassword v-model:value="model.password" size="large"
v-model:value="model.password" :placeholder="t('page.login.common.passwordPlaceholder')" />
size="large"
:placeholder="t('page.login.common.passwordPlaceholder')"
/>
</AFormItem> </AFormItem>
<AFormItem name="confirmPassword"> <AFormItem name="confirmPassword">
<AInputPassword <AInputPassword v-model:value="model.confirmPassword" size="large"
v-model:value="model.confirmPassword" :placeholder="t('page.login.common.confirmPasswordPlaceholder')" />
size="large"
:placeholder="t('page.login.common.confirmPasswordPlaceholder')"
/>
</AFormItem> </AFormItem>
<ASpace direction="vertical" size="large" class="w-full"> <ASpace direction="vertical" size="large" class="w-full">
<AButton type="primary" block size="large" shape="round" @click="handleSubmit"> <AButton type="primary" block size="large" shape="round" @click="handleSubmit">

View File

@@ -118,29 +118,40 @@ async function handleSubmit() {
try { try {
await formRef.value?.validate(); await formRef.value?.validate();
if (resetType.value === 'password') { // if (resetType.value === 'password') {
// 通过原密码重置 // // 通过原密码重置
await resetPassword({ // await resetPassword({
oldPassword: formModel.oldPassword, // oldPassword: formModel.oldPassword,
newPassword: formModel.password // newPassword: formModel.password
}); // });
} else { // } else {
// 通过邮箱验证码重置 // // 通过邮箱验证码重置
await resetPasswordByEmail({ // await resetPasswordByEmail({
email: formModel.email, // email: formModel.email,
code: formModel.code, // code: formModel.code,
password: formModel.password // password: formModel.password
}); // });
} // }
message.success({ const { error } = await (resetType.value === 'password' ? resetPassword({
content: t('page.login.resetPwd.resetSuccess'), oldPassword: formModel.oldPassword,
duration: 2 newPassword: formModel.password
}); }) : resetPasswordByEmail({
email: formModel.email,
code: formModel.code,
password: formModel.password
}));
if (!error) {
message.success({
content: t('page.login.resetPwd.resetSuccess'),
duration: 2
});
// 延迟跳转
setTimeout(() => {
router.push('/userInfo/usercard');
}, 2000);
}
// 延迟跳转
setTimeout(() => {
router.push('/userInfo/usercard');
}, 2000);
} catch (error) { } catch (error) {
console.error('Reset password failed:', error); console.error('Reset password failed:', error);
@@ -169,51 +180,32 @@ const handleBack = () => {
<a-radio value="email">{{ t('page.login.resetPwd.byEmail') }}</a-radio> <a-radio value="email">{{ t('page.login.resetPwd.byEmail') }}</a-radio>
</a-radio-group> </a-radio-group>
<a-form <a-form ref="formRef" :model="formModel" :rules="formRules" :label-col="{
ref="formRef" xs: { span: 24 },
:model="formModel" sm: { span: 8 },
:rules="formRules" md: { span: 6 }
:label-col="{ }" :wrapper-col="{
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 8 }, sm: { span: 16 },
md: { span: 6 } md: { span: 18 }
}" }">
:wrapper-col="{
xs: { span: 24 },
sm: { span: 16 },
md: { span: 18 }
}"
>
<template v-if="resetType === 'password'"> <template v-if="resetType === 'password'">
<a-form-item name="oldPassword" :label="t('page.login.resetPwd.oldPassword')"> <a-form-item name="oldPassword" :label="t('page.login.resetPwd.oldPassword')">
<a-input-password <a-input-password v-model:value="formModel.oldPassword"
v-model:value="formModel.oldPassword" :placeholder="t('page.login.resetPwd.oldPasswordPlaceholder')" />
:placeholder="t('page.login.resetPwd.oldPasswordPlaceholder')"
/>
</a-form-item> </a-form-item>
</template> </template>
<template v-else> <template v-else>
<a-form-item name="email" :label="t('page.login.register.email')"> <a-form-item name="email" :label="t('page.login.register.email')">
<a-input <a-input v-model:value="formModel.email" :placeholder="t('page.login.common.emailPlaceholder')" />
v-model:value="formModel.email"
:placeholder="t('page.login.common.emailPlaceholder')"
/>
</a-form-item> </a-form-item>
<a-form-item name="code" :label="t('page.login.register.code')"> <a-form-item name="code" :label="t('page.login.register.code')">
<a-space> <a-space>
<a-input <a-input v-model:value="formModel.code" :placeholder="t('page.login.common.codePlaceholder')"
v-model:value="formModel.code" style="width: 200px" />
:placeholder="t('page.login.common.codePlaceholder')" <a-button type="primary" :loading="loading" :disabled="isCounting" @click="handleCaptcha">
style="width: 200px"
/>
<a-button
type="primary"
:loading="loading"
:disabled="isCounting"
@click="handleCaptcha"
>
{{ label }} {{ label }}
</a-button> </a-button>
</a-space> </a-space>
@@ -221,26 +213,20 @@ const handleBack = () => {
</template> </template>
<a-form-item name="password" :label="t('page.login.resetPwd.newPassword')"> <a-form-item name="password" :label="t('page.login.resetPwd.newPassword')">
<a-input-password <a-input-password v-model:value="formModel.password"
v-model:value="formModel.password" :placeholder="t('page.login.common.passwordPlaceholder')" />
:placeholder="t('page.login.common.passwordPlaceholder')"
/>
</a-form-item> </a-form-item>
<a-form-item name="confirmPassword" :label="t('page.login.register.confirmPassword')"> <a-form-item name="confirmPassword" :label="t('page.login.register.confirmPassword')">
<a-input-password <a-input-password v-model:value="formModel.confirmPassword"
v-model:value="formModel.confirmPassword" :placeholder="t('page.login.common.confirmPasswordPlaceholder')" />
:placeholder="t('page.login.common.confirmPasswordPlaceholder')"
/>
</a-form-item> </a-form-item>
<a-form-item <a-form-item :wrapper-col="{
:wrapper-col="{ xs: { span: 24, offset: 0 },
xs: { span: 24, offset: 0 }, sm: { span: 16, offset: 8 },
sm: { span: 16, offset: 8 }, md: { span: 18, offset: 6 }
md: { span: 18, offset: 6 } }">
}"
>
<a-button type="primary" block @click="handleSubmit"> <a-button type="primary" block @click="handleSubmit">
{{ t('common.confirm') }} {{ t('common.confirm') }}
</a-button> </a-button>
@@ -268,7 +254,8 @@ const handleBack = () => {
} }
:deep(.ant-form-item-label) { :deep(.ant-form-item-label) {
white-space: normal; /* 允许标签文字换行 */ white-space: normal;
/* 允许标签文字换行 */
height: auto; height: auto;
line-height: 1.5; line-height: 1.5;
padding-bottom: 8px; padding-bottom: 8px;