12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <template>
- <mx-submit-layout :title="prevData.settingName" :loading="loading" @submit="handleSubmit">
- <uv-form ref="form" :model="model" :rules="rules">
- <name-gender-fields/>
- <phone-with-change-field/>
- <province-field disabled/>
- <gaokao-year-field v-if="isBind" disabled/>
- <school-info-fields v-if="isBind" disabled/>
- <type-major-fields :disabled="!enableAuthModify"/>
- </uv-form>
- </mx-submit-layout>
- </template>
- <script setup>
- import {ref, watch} from 'vue'
- import {useTransfer} from "@/hooks/useTransfer";
- import {useUserStore} from "@/hooks/useUserStore";
- import {improveUserInfo} from "@/api/login";
- import {sleep, toast} from "@/uni_modules/uv-ui-tools/libs/function";
- import PhoneWithChangeField from "@/pages/login/components/register-fields/phone-with-change-field.vue";
- import NameGenderFields from "@/pages/login/components/register-fields/name-gender-fields.vue";
- import ProvinceField from "@/pages/login/components/register-fields/province-field.vue";
- import {createBasicInfoModelRules} from "@/pages/login/components/hooks/defineFormModels";
- import {useProvideFormData} from "@/pages/login/components/hooks/useFormDataInjection";
- import _ from "lodash";
- import TypeMajorFields from "@/pages/login/components/register-fields/type-major-fields.vue";
- import GaokaoYearField from "@/pages/login/components/register-fields/gaokao-year-field.vue";
- import SchoolInfoFields from "@/pages/login/components/register-fields/school-info-fields.vue";
- const {prevData, relaunch} = useTransfer()
- const {currentUser, isBind, enableAuthModify, GetInfo} = useUserStore()
- const form = ref(null)
- const model = ref({}) // 不要改变model.value, 因为内部有很多服务在监听它。
- const loading = ref(false)
- // form & service
- const [m, r, modelToCommit] = createBasicInfoModelRules(model)
- const [, rules] = useProvideFormData(m, r)
- // hooks
- watch(currentUser, () => _.assign(model.value, currentUser.value), {immediate: true})
- // methods
- const handleSubmit = async () => {
- await form.value.validate()
- if (loading.value) return
- loading.value = true
- try {
- const commit = modelToCommit()
- await improveUserInfo(commit)
- await GetInfo()
- toast('保存成功,即将返回首页')
- await sleep(1000)
- relaunch()
- } finally {
- loading.value = false
- }
- }
- </script>
- <style scoped lang="scss">
- </style>
|