From bf911bac962fc462d3d0f2c768bbb2d6aeda5d4d Mon Sep 17 00:00:00 2001 From: zhongzm Date: Fri, 13 Dec 2024 19:13:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=B3=A8=E5=86=8C=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/langs/en-us.ts | 7 +- src/locales/langs/zh-cn.ts | 7 +- src/views/_builtin/login/modules/register.vue | 87 ++++++++----------- 3 files changed, 48 insertions(+), 53 deletions(-) diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 5f19baf..f24f10f 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -595,7 +595,12 @@ const local: any = { deleteFailed: "Delete failed.", fetchFailed: "Failed to retrieve the list of devices.", lastActive: "Last active time.", - } + }, + profile: { + getUserInfoFailed: 'Failed to get user info', + updateSuccess: 'Update successful', + updateFailed: 'Update failed' + }, }, form: { required: 'Cannot be empty', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index e83028f..67cf952 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -595,7 +595,12 @@ const local:any = { deleteFailed: "删除失败", fetchFailed: "获取设备列表失败", lastActive: "最后活跃时间", - } + }, + profile: { + getUserInfoFailed: '获取用户信息失败', + updateSuccess: '更新成功', + updateFailed: '更新失败' + }, }, form: { required: '不能为空', diff --git a/src/views/_builtin/login/modules/register.vue b/src/views/_builtin/login/modules/register.vue index 6489f6a..7414398 100644 --- a/src/views/_builtin/login/modules/register.vue +++ b/src/views/_builtin/login/modules/register.vue @@ -32,36 +32,6 @@ const currentStep = ref(0); // 是否同意协议 const agreeTerms = ref(false); -// 定义一个统一的数据模型 -interface RegisterModel { - username: string; - password: string; - email: string; - fullName: string; - age: number; - gender: string; - phone: string; - address: string; - code: string; - uuid: string; - authType: string; -} - -// 使用一个统一的 model -const model = reactive({ - username: '', - password: '', - email: '', - fullName: '', - age: 0, - gender: '', - phone: '', - address: '', - code: '', - uuid: '', - authType: 'u' -}); - // 第一步表单数据 interface BasicFormModel { username: string; @@ -114,19 +84,29 @@ const basicRules = computed>(() => { }; const validatePhone = async (_rule: Rule, value: string) => { - if (!value) return Promise.resolve(); + // 如果没有填写手机号,直接返回成功 + if (!value || value.trim() === '') { + return Promise.resolve(); + } + // 手机号格式验证 const phonePattern = /^1[3-9]\d{9}$/; - if (!phonePattern.test(value)) { return Promise.reject(t('page.login.register.phoneInvalid')); } - const { exists } = await authStore.checkUserRepeat({ phonenumber: value, authType: 'u' }); - if (exists) { - return Promise.reject(t('page.login.register.phoneExists')); + // 手机号重复性验证 + try { + const { exists } = await authStore.checkUserRepeat({ phonenumber: value, authType: 'u' }); + if (exists) { + return Promise.reject(t('page.login.register.phoneExists')); + } + return Promise.resolve(); + } catch (error) { + // 如果服务器验证出错,不阻止表单提交 + console.error('Phone validation error:', error); + return Promise.resolve(); } - return Promise.resolve(); }; return { @@ -224,22 +204,27 @@ async function handleSubmit() { await securityFormRef.value?.validate(); // 整合表单数据 - model.username = basicModel.username; - model.password = securityModel.password; - model.email = securityModel.email; // 使用第三步的 email - model.fullName = basicModel.fullName; - model.gender = basicModel.gender; - model.phone = basicModel.phone; - model.address = basicModel.address; - model.code = securityModel.code; - model.uuid = securityModel.uuid; - - const success = await authStore.register({ - ...model, + const baseData = { + username: basicModel.username, + password: securityModel.password, + email: securityModel.email, + fullName: basicModel.fullName, + gender: basicModel.gender, + address: basicModel.address, + code: securityModel.code, + uuid: securityModel.uuid, age: dayjs().diff(dayjs(basicModel.birthDate), 'year'), - sex: model.gender, - phonenumber: model.phone - }); + sex: basicModel.gender, + authType: 'u' + }; + + // 创建最终的提交数据,只在有手机号时添加 + const submitData = { + ...baseData, + ...(basicModel.phone ? { phonenumber: basicModel.phone } : {}) + }; + + const success = await authStore.register(submitData); if (success) { window.$message?.success(t('page.login.register.registerSuccess'));