feat(profile): 资料编辑可修改字段调整
This commit is contained in:
@@ -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<typeof editProfileSchema>
|
||||
|
||||
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<EditProfileSchema>) => {
|
||||
let payload: Partial<UserSchema> & 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<Partial<UserSchema> & 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 = (
|
||||
>
|
||||
<UFormGroup
|
||||
name="username"
|
||||
label="账户名"
|
||||
label="姓名"
|
||||
help="您的真实姓名,将用于登录系统"
|
||||
hint="账户名"
|
||||
>
|
||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
{{ loginState.user?.username }}
|
||||
</p>
|
||||
<!-- <UInput v-model="editProfileState.username" /> -->
|
||||
<UInput v-model="editProfileState.username" />
|
||||
</UFormGroup>
|
||||
<UFormGroup
|
||||
name="mobile"
|
||||
label="手机号码"
|
||||
help="手机号作为登录和找回密码的凭证,暂不支持修改"
|
||||
>
|
||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||||
{{ loginState.user?.mobile }}
|
||||
</p>
|
||||
<!-- <UInput v-model="editProfileState.mobile" /> -->
|
||||
</UFormGroup>
|
||||
<UFormGroup
|
||||
name="nickname"
|
||||
label="姓名"
|
||||
help="您的真实姓名,便于系统管理员联系您"
|
||||
>
|
||||
<UInput v-model="editProfileState.nickname" />
|
||||
<UInput
|
||||
:placeholder="loginState.user?.mobile || 'nil'"
|
||||
disabled
|
||||
/>
|
||||
</UFormGroup>
|
||||
<UFormGroup
|
||||
name="sex"
|
||||
@@ -251,12 +255,6 @@ const onChangePasswordSubmit = (
|
||||
]"
|
||||
/>
|
||||
</UFormGroup>
|
||||
<UFormGroup
|
||||
name="email"
|
||||
label="电子邮箱"
|
||||
>
|
||||
<UInput v-model="editProfileState.email" />
|
||||
</UFormGroup>
|
||||
<UFormGroup
|
||||
name="company"
|
||||
label="公司/学校/组织名称"
|
||||
|
||||
Reference in New Issue
Block a user