<template> <div class="setInfo-box"> <div class="setInfo"> <!-- <van-nav-bar title="修改个人信息" left-text="返回" left-arrow @click-left="onClickLeft" /> --> <van-form @submit="onSubmit"> <van-field v-model="personInfo.name" label="姓名" placeholder="姓名" :rules="[{ required: true, message: '请填写姓名' }]" /> <van-field v-model="personInfo.phone" type="number" maxlength="11" label="手机号" placeholder="手机号" :rules="[{ required: true, message: '请填写手机号码' }]" /> <field-picker label="性别" placeholder="点击选择性别" v-model="personInfo.sex" value-id="id" value-key="label" :columns="sexArry" /> <field-picker v-model="personInfo.termId" label="学期" placeholder="点击选择学期" value-id="termId" value-key="name" :columns="SemesterArry" /> <field-picker v-model="personInfo.classId" label="班级" placeholder="点击选择班级" value-id="classId" value-key="name" :columns="ClasssArry" /> <div style="margin: 20px; margin-top:3em;"> <van-button round block type="info" native-type="submit">提交</van-button> </div> </van-form> </div> </div> </template> <script> import { mapState } from 'vuex' import { SetUser, getSchoolterm, getSchoolClass } from '@/util/api' export default { components: { FieldPicker: () => import('@/components/FieldPicker') }, data() { return { personInfo: { name: null, sex: null, phone: null, termId: null, classId: null, }, sexArry: [{id: 1, label: '男'}, {id: 2, label: '女'}], SemesterArry: [], ClasssArry: [], } }, computed: { ...mapState({ user: (state) => state.user }) }, watch: { user: { handler(nw) { if (nw) { this.personInfo.name = nw.name this.personInfo.phone = nw.phone this.personInfo.classId = nw.classId this.personInfo.termId = nw.termId this.personInfo.sex = nw.sex } }, immediate: true } }, mounted() { this.getSemester() }, methods: { // 获取学期班级 star getSemester() { getSchoolterm({ pageSize: 999 }).then((e) => { console.log('获取学期', e) this.SemesterArry = e.records if ((!this.ClasssArry || this.ClasssArry.length < 1) && e.total > 0) { const first = this.SemesterArry[0] this.getClass(first.termId) } }) }, getClass(termId) { getSchoolClass(termId, { pageSize: 999 }).then((e) => { console.log('获取班级', e) this.ClasssArry = e.records }) }, // 获取学期班级 end onClickLeft() { this.$router.go(-1) }, //学期区------------------------ onSubmit(values) { console.log('submit', values) this.$toast.success('修改成功!') SetUser(this.$store.state.user.personId, { ...this.personInfo, personId: this.$store.state.user.personId, }).then((e) => { this.$store.commit('SET_USER_INFO', this.personInfo) this.$router.go(-1) }) } } } </script> <style lang="less" scoped> .setInfo-box { background-color: #fff; height: 100%; width: 100vw; display: flex; .setInfo { align-items: center; margin: 0 auto; width: 100%; height: 50vh; // border-bottom-left-radius: 20px; // border-bottom-right-radius: 20px; .van-form { position: relative; top: 4vh; .van-field { margin-bottom: 2em; font-size: 17px; font-weight: 600; } } } } </style>