feat(profile): 资料编辑可修改字段调整
This commit is contained in:
@@ -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>) => {
|
||||||
|
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<{}>>(
|
useFetchWrapped<Partial<UserSchema> & AuthedRequest, BaseResponse<{}>>(
|
||||||
'App.User_User.EditProfile',
|
'App.User_User.EditProfile',
|
||||||
{
|
payload
|
||||||
token: loginState.token!,
|
|
||||||
user_id: loginState.user.id,
|
|
||||||
...(event.data as UserSchema),
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
.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="公司/学校/组织名称"
|
||||||
|
|||||||
Reference in New Issue
Block a user