<template>
|
<a-form
|
ref="formRef"
|
:model="formData"
|
class="form"
|
:label-col-props="{ span: 8 }"
|
:wrapper-col-props="{ span: 16 }"
|
>
|
<a-form-item
|
field="email"
|
:label="$t('userSetting.basicInfo.form.label.email')"
|
:rules="[
|
{
|
required: true,
|
message: $t('userSetting.form.error.email.required'),
|
},
|
]"
|
>
|
<a-input
|
v-model="formData.email"
|
:placeholder="$t('userSetting.basicInfo.placeholder.email')"
|
/>
|
</a-form-item>
|
<a-form-item
|
field="nickname"
|
:label="$t('userSetting.basicInfo.form.label.nickname')"
|
:rules="[
|
{
|
required: true,
|
message: $t('userSetting.form.error.nickname.required'),
|
},
|
]"
|
>
|
<a-input
|
v-model="formData.nickname"
|
:placeholder="$t('userSetting.basicInfo.placeholder.nickname')"
|
/>
|
</a-form-item>
|
<a-form-item
|
field="countryRegion"
|
:label="$t('userSetting.basicInfo.form.label.countryRegion')"
|
:rules="[
|
{
|
required: true,
|
message: $t('userSetting.form.error.countryRegion.required'),
|
},
|
]"
|
>
|
<a-select
|
v-model="formData.countryRegion"
|
:placeholder="$t('userSetting.basicInfo.placeholder.area')"
|
>
|
<a-option value="China">中国</a-option>
|
</a-select>
|
</a-form-item>
|
<a-form-item
|
field="area"
|
:label="$t('userSetting.basicInfo.form.label.area')"
|
:rules="[
|
{
|
required: true,
|
message: $t('userSetting.form.error.area.required'),
|
},
|
]"
|
>
|
<a-cascader
|
v-model="formData.area"
|
:placeholder="$t('userSetting.basicInfo.placeholder.area')"
|
:options="[
|
{
|
label: '北京',
|
value: 'beijing',
|
children: [
|
{
|
label: '北京',
|
value: 'beijing',
|
children: [
|
{
|
label: '朝阳',
|
value: 'chaoyang',
|
},
|
],
|
},
|
],
|
},
|
]"
|
allow-clear
|
/>
|
</a-form-item>
|
<a-form-item
|
field="address"
|
:label="$t('userSetting.basicInfo.form.label.address')"
|
>
|
<a-input
|
v-model="formData.address"
|
:placeholder="$t('userSetting.basicInfo.placeholder.address')"
|
/>
|
</a-form-item>
|
<a-form-item
|
field="profile"
|
:label="$t('userSetting.basicInfo.form.label.profile')"
|
:rules="[
|
{
|
maxLength: 200,
|
message: $t('userSetting.form.error.profile.maxLength'),
|
},
|
]"
|
row-class="keep-margin"
|
>
|
<a-textarea
|
v-model="formData.profile"
|
:placeholder="$t('userSetting.basicInfo.placeholder.profile')"
|
/>
|
</a-form-item>
|
<a-form-item>
|
<a-space>
|
<a-button type="primary" @click="validate">
|
{{ $t('userSetting.save') }}
|
</a-button>
|
<a-button type="secondary" @click="reset">
|
{{ $t('userSetting.reset') }}
|
</a-button>
|
</a-space>
|
</a-form-item>
|
</a-form>
|
</template>
|
|
<script lang="ts" setup>
|
import { ref } from 'vue';
|
import { FormInstance } from '@arco-design/web-vue/es/form';
|
import { BasicInfoModel } from '@/api/user-center';
|
|
const formRef = ref<FormInstance>();
|
const formData = ref<BasicInfoModel>({
|
email: '',
|
nickname: '',
|
countryRegion: '',
|
area: '',
|
address: '',
|
profile: '',
|
});
|
const validate = async () => {
|
const res = await formRef.value?.validate();
|
if (!res) {
|
// do some thing
|
// you also can use html-type to submit
|
}
|
};
|
const reset = async () => {
|
await formRef.value?.resetFields();
|
};
|
</script>
|
|
<style scoped lang="less">
|
.form {
|
width: 540px;
|
margin: 0 auto;
|
}
|
</style>
|