| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <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';
- 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>
|