feat(profile): 资料编辑可修改字段调整

This commit is contained in:
2025-01-21 00:47:44 +08:00
parent e46fd27707
commit 0ad6179b81

View File

@@ -38,8 +38,7 @@ const currentTab = computed({
}) })
const editProfileSchema = object({ const editProfileSchema = object({
nickname: string(), username: string().required('请输入姓名'),
email: string().notRequired().email('请输入正确的邮箱地址'),
sex: number().required('请选择性别'), sex: number().required('请选择性别'),
company: string().required('请输入公司名称'), company: string().required('请输入公司名称'),
}) })
@@ -47,8 +46,7 @@ const editProfileSchema = object({
type EditProfileSchema = InferType<typeof editProfileSchema> type EditProfileSchema = InferType<typeof editProfileSchema>
const editProfileState = reactive({ const editProfileState = reactive({
nickname: loginState.user?.nickname || '', username: loginState.user?.username || '',
email: loginState.user?.email || '',
sex: loginState.user.sex || 0, sex: loginState.user.sex || 0,
company: loginState.user?.company || '', company: loginState.user?.company || '',
}) })
@@ -56,13 +54,26 @@ const editProfileState = reactive({
const isEditProfileModified = ref(false) const isEditProfileModified = ref(false)
const onEditProfileSubmit = (event: FormSubmitEvent<EditProfileSchema>) => { const onEditProfileSubmit = (event: FormSubmitEvent<EditProfileSchema>) => {
useFetchWrapped<Partial<UserSchema> & AuthedRequest, BaseResponse<{}>>( let payload: Partial<UserSchema> & AuthedRequest = {
'App.User_User.EditProfile',
{
token: loginState.token!, token: loginState.token!,
user_id: loginState.user.id, user_id: loginState.user.id,
...(event.data as UserSchema), // 排除 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<Partial<UserSchema> & AuthedRequest, BaseResponse<{}>>(
'App.User_User.EditProfile',
payload
) )
.then((res) => { .then((res) => {
if (res.ret === 200) { if (res.ret === 200) {
@@ -215,28 +226,21 @@ const onChangePasswordSubmit = (
> >
<UFormGroup <UFormGroup
name="username" name="username"
label="账户名" label="名"
help="您的真实姓名,将用于登录系统"
hint="账户名"
> >
<p class="text-sm text-neutral-500 dark:text-neutral-400"> <UInput v-model="editProfileState.username" />
{{ loginState.user?.username }}
</p>
<!-- <UInput v-model="editProfileState.username" /> -->
</UFormGroup> </UFormGroup>
<UFormGroup <UFormGroup
name="mobile" name="mobile"
label="手机号码" label="手机号码"
help="手机号作为登录和找回密码的凭证,暂不支持修改"
> >
<p class="text-sm text-neutral-500 dark:text-neutral-400"> <UInput
{{ loginState.user?.mobile }} :placeholder="loginState.user?.mobile || 'nil'"
</p> disabled
<!-- <UInput v-model="editProfileState.mobile" /> --> />
</UFormGroup>
<UFormGroup
name="nickname"
label="姓名"
help="您的真实姓名,便于系统管理员联系您"
>
<UInput v-model="editProfileState.nickname" />
</UFormGroup> </UFormGroup>
<UFormGroup <UFormGroup
name="sex" name="sex"
@@ -251,12 +255,6 @@ const onChangePasswordSubmit = (
]" ]"
/> />
</UFormGroup> </UFormGroup>
<UFormGroup
name="email"
label="电子邮箱"
>
<UInput v-model="editProfileState.email" />
</UFormGroup>
<UFormGroup <UFormGroup
name="company" name="company"
label="公司/学校/组织名称" label="公司/学校/组织名称"