diff --git a/apps/vben5/packages/@abp/account/src/api/useProfileApi.ts b/apps/vben5/packages/@abp/account/src/api/useProfileApi.ts index 9a13b0242..63c77d849 100644 --- a/apps/vben5/packages/@abp/account/src/api/useProfileApi.ts +++ b/apps/vben5/packages/@abp/account/src/api/useProfileApi.ts @@ -2,9 +2,11 @@ import type { AuthenticatorDto, AuthenticatorRecoveryCodeDto, ChangePasswordInput, + ChangePhoneNumberInput, ChangePictureInput, ConfirmEmailInput, ProfileDto, + SendChangePhoneNumberCodeInput, SendEmailConfirmCodeDto, TwoFactorEnabledDto, UpdateProfileDto, @@ -49,6 +51,30 @@ export function useProfileApi() { }); } + /** + * 发送修改手机号验证码 + * @param input 参数 + */ + function sendChangePhoneNumberCodeApi( + input: SendChangePhoneNumberCodeInput, + ): Promise { + return request('/api/account/my-profile/send-phone-number-change-code', { + data: input, + method: 'POST', + }); + } + + /** + * 修改手机号 + * @param input 参数 + */ + function changePhoneNumberApi(input: ChangePhoneNumberInput): Promise { + return request('/api/account/my-profile/change-phone-number', { + data: input, + method: 'PUT', + }); + } + /** * 修改头像 * @param input 参数 @@ -158,6 +184,7 @@ export function useProfileApi() { return { cancel, changePasswordApi, + changePhoneNumberApi, changePictureApi, changeTwoFactorEnabledApi, confirmEmailApi, @@ -166,6 +193,7 @@ export function useProfileApi() { getPictureApi, getTwoFactorEnabledApi, resetAuthenticatorApi, + sendChangePhoneNumberCodeApi, sendEmailConfirmLinkApi, updateApi, verifyAuthenticatorCodeApi, diff --git a/apps/vben5/packages/@abp/account/src/components/MySetting.vue b/apps/vben5/packages/@abp/account/src/components/MySetting.vue index f90190ccb..20c07367f 100644 --- a/apps/vben5/packages/@abp/account/src/components/MySetting.vue +++ b/apps/vben5/packages/@abp/account/src/components/MySetting.vue @@ -96,6 +96,11 @@ const [ChangePasswordModal, changePasswordModalApi] = useVbenModal({ () => import('./components/ChangePasswordModal.vue'), ), }); +const [ChangePhoneNumberModal, changePhoneNumberModalApi] = useVbenModal({ + connectedComponent: defineAsyncComponent( + () => import('./components/ChangePhoneNumberModal.vue'), + ), +}); function onEmailConfirm() { if (query?.confirmToken) { emailConfirmModalApi.setData({ @@ -109,6 +114,11 @@ async function onGetProfile() { const profile = await getApi(); myProfile.value = profile; } +async function onPhoneNumberChange(phoneNumber: string) { + userStore.$patch((state) => { + state.userInfo && (state.userInfo.phoneNumber = phoneNumber); + }); +} async function onUpdateProfile(input: UpdateProfileDto) { Modal.confirm({ centered: true, @@ -128,8 +138,7 @@ function onChangePassword() { changePasswordModalApi.open(); } function onChangePhoneNumber() { - // TODO: onChangePhoneNumber 暂时未实现! - console.warn('onChangePhoneNumber 暂时未实现!'); + changePhoneNumberModalApi.open(); } onMounted(async () => { await onGetProfile(); @@ -174,6 +183,7 @@ onMounted(async () => { + diff --git a/apps/vben5/packages/@abp/account/src/components/components/ChangePhoneNumberModal.vue b/apps/vben5/packages/@abp/account/src/components/components/ChangePhoneNumberModal.vue new file mode 100644 index 000000000..e7e063004 --- /dev/null +++ b/apps/vben5/packages/@abp/account/src/components/components/ChangePhoneNumberModal.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/apps/vben5/packages/@abp/account/src/types/profile.ts b/apps/vben5/packages/@abp/account/src/types/profile.ts index f5a4d57ab..d9f0bd050 100644 --- a/apps/vben5/packages/@abp/account/src/types/profile.ts +++ b/apps/vben5/packages/@abp/account/src/types/profile.ts @@ -36,6 +36,15 @@ interface ChangePasswordInput { newPassword: string; } +interface ChangePhoneNumberInput { + code: string; + newPhoneNumber: string; +} + +interface SendChangePhoneNumberCodeInput { + newPhoneNumber: string; +} + interface ChangePictureInput { file: File; } @@ -73,9 +82,11 @@ export type { AuthenticatorDto, AuthenticatorRecoveryCodeDto, ChangePasswordInput, + ChangePhoneNumberInput, ChangePictureInput, ConfirmEmailInput, ProfileDto, + SendChangePhoneNumberCodeInput, SendEmailConfirmCodeDto, TwoFactorEnabledDto, UpdateProfileDto, diff --git a/apps/vben5/packages/@abp/settings/src/components/settings/SettingForm.vue b/apps/vben5/packages/@abp/settings/src/components/settings/SettingForm.vue index e7b0a6104..4849331c9 100644 --- a/apps/vben5/packages/@abp/settings/src/components/settings/SettingForm.vue +++ b/apps/vben5/packages/@abp/settings/src/components/settings/SettingForm.vue @@ -78,7 +78,7 @@ async function onSubmit() { } function onCheckChange(setting: SettingDetail) { - setting.value = setting.value === 'true' ? 'false' : 'true'; + setting.value = setting.value?.toLowerCase() === 'true' ? 'false' : 'true'; onValueChange(setting); } @@ -202,7 +202,7 @@ onMounted(onGet); {{ detail.displayName }}