| <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> |