diff --git a/pages/profile.vue b/pages/profile.vue index 6d44259..59d6240 100644 --- a/pages/profile.vue +++ b/pages/profile.vue @@ -38,8 +38,7 @@ const currentTab = computed({ }) const editProfileSchema = object({ - nickname: string(), - email: string().notRequired().email('请输入正确的邮箱地址'), + username: string().required('请输入姓名'), sex: number().required('请选择性别'), company: string().required('请输入公司名称'), }) @@ -47,8 +46,7 @@ const editProfileSchema = object({ type EditProfileSchema = InferType const editProfileState = reactive({ - nickname: loginState.user?.nickname || '', - email: loginState.user?.email || '', + username: loginState.user?.username || '', sex: loginState.user.sex || 0, company: loginState.user?.company || '', }) @@ -56,13 +54,26 @@ const editProfileState = reactive({ const isEditProfileModified = ref(false) const onEditProfileSubmit = (event: FormSubmitEvent) => { + let payload: Partial & AuthedRequest = { + token: loginState.token!, + user_id: loginState.user.id, + // 排除 username 字段,因为如果 username 未修改,后端会返回错误 + ...Object.fromEntries( + Object.entries(event.data).filter(([key]) => key !== 'username') + ), + } + + // 如果用户名有变化,需要额外传递 username 字段 + if (event.data.username !== loginState.user.username) { + payload = { + ...payload, + username: event.data.username, + } + } + useFetchWrapped & AuthedRequest, BaseResponse<{}>>( 'App.User_User.EditProfile', - { - token: loginState.token!, - user_id: loginState.user.id, - ...(event.data as UserSchema), - } + payload ) .then((res) => { if (res.ret === 200) { @@ -215,28 +226,21 @@ const onChangePasswordSubmit = ( > -

- {{ loginState.user?.username }} -

- +
-

- {{ loginState.user?.mobile }} -

- -
- - + - - -