|  | @@ -5,12 +5,13 @@
 | 
											
												
													
														|  |        <el-form ref="form" :model="formData" :rules="formRules" :validate-on-rule-change="false" label-position="right"
 |  |        <el-form ref="form" :model="formData" :rules="formRules" :validate-on-rule-change="false" label-position="right"
 | 
											
												
													
														|  |                 label-width="70px">
 |  |                 label-width="70px">
 | 
											
												
													
														|  |          <el-row :gutter="20">
 |  |          <el-row :gutter="20">
 | 
											
												
													
														|  | -          <el-col :span="14">
 |  | 
 | 
											
												
													
														|  | 
 |  | +          <el-col :span="24">
 | 
											
												
													
														|  |              <el-form-item prop="username" label="姓 名">
 |  |              <el-form-item prop="username" label="姓 名">
 | 
											
												
													
														|  |                <el-input type="text" v-model="formData.username" placeholder="请输入姓名"></el-input>
 |  |                <el-input type="text" v-model="formData.username" placeholder="请输入姓名"></el-input>
 | 
											
												
													
														|  |              </el-form-item>
 |  |              </el-form-item>
 | 
											
												
													
														|  |            </el-col>
 |  |            </el-col>
 | 
											
												
													
														|  | -          <el-col :span="10">
 |  | 
 | 
											
												
													
														|  | 
 |  | +          <!-- 暂时不需要学年,学年从年级上选择 -->
 | 
											
												
													
														|  | 
 |  | +          <el-col v-if="false" :span="10">
 | 
											
												
													
														|  |              <el-form-item prop="year" label="学 年">
 |  |              <el-form-item prop="year" label="学 年">
 | 
											
												
													
														|  |                <el-select v-model="formData.year" placeholder="请选择学年">
 |  |                <el-select v-model="formData.year" placeholder="请选择学年">
 | 
											
												
													
														|  |                  <el-option v-for="(y, idx) in yearOptions" :key="idx" :label="y" :value="y"></el-option>
 |  |                  <el-option v-for="(y, idx) in yearOptions" :key="idx" :label="y" :value="y"></el-option>
 | 
											
										
											
												
													
														|  | @@ -47,10 +48,10 @@
 | 
											
												
													
														|  |            <el-col :span="12">
 |  |            <el-col :span="12">
 | 
											
												
													
														|  |              <el-form-item v-if="isFrontStudent" prop="clazzId" label="班 级">
 |  |              <el-form-item v-if="isFrontStudent" prop="clazzId" label="班 级">
 | 
											
												
													
														|  |                <el-cascader
 |  |                <el-cascader
 | 
											
												
													
														|  | -                v-model="formData.clazzId"
 |  | 
 | 
											
												
													
														|  | -                :disabled="!formData.schoolId"
 |  | 
 | 
											
												
													
														|  | -                :placeholder="formData.schoolId?'选择年级-班级':'请先选择学校'"
 |  | 
 | 
											
												
													
														|  | -                :options="classTree"
 |  | 
 | 
											
												
													
														|  | 
 |  | +                  v-model="formData.clazzId"
 | 
											
												
													
														|  | 
 |  | +                  :disabled="!formData.schoolId"
 | 
											
												
													
														|  | 
 |  | +                  :placeholder="formData.schoolId?'选择年级-班级':'请先选择学校'"
 | 
											
												
													
														|  | 
 |  | +                  :options="classTree"
 | 
											
												
													
														|  |                ></el-cascader>
 |  |                ></el-cascader>
 | 
											
												
													
														|  |              </el-form-item>
 |  |              </el-form-item>
 | 
											
												
													
														|  |            </el-col>
 |  |            </el-col>
 | 
											
										
											
												
													
														|  | @@ -59,12 +60,12 @@
 | 
											
												
													
														|  |            <!-- 这里的name另外定义了一个,因为内部for循环+v-model方式会引发循环赋值(uni-app的实现问题) -->
 |  |            <!-- 这里的name另外定义了一个,因为内部for循环+v-model方式会引发循环赋值(uni-app的实现问题) -->
 | 
											
												
													
														|  |            <el-form-item prop="gradeClass" label="年级组">
 |  |            <el-form-item prop="gradeClass" label="年级组">
 | 
											
												
													
														|  |              <el-cascader
 |  |              <el-cascader
 | 
											
												
													
														|  | -              v-model="formData.gradeClass"
 |  | 
 | 
											
												
													
														|  | -              :disabled="!formData.schoolId"
 |  | 
 | 
											
												
													
														|  | -              :options="classTree"
 |  | 
 | 
											
												
													
														|  | -              :placeholder="formData.schoolId?'选择年级组':'请先选择学校'"
 |  | 
 | 
											
												
													
														|  | -              :props="{multiple:true}"
 |  | 
 | 
											
												
													
														|  | -              class="width100"
 |  | 
 | 
											
												
													
														|  | 
 |  | +                v-model="formData.gradeClass"
 | 
											
												
													
														|  | 
 |  | +                :disabled="!formData.schoolId"
 | 
											
												
													
														|  | 
 |  | +                :options="classTree"
 | 
											
												
													
														|  | 
 |  | +                :placeholder="formData.schoolId?'选择年级组':'请先选择学校'"
 | 
											
												
													
														|  | 
 |  | +                :props="{multiple:true}"
 | 
											
												
													
														|  | 
 |  | +                class="width100"
 | 
											
												
													
														|  |              ></el-cascader>
 |  |              ></el-cascader>
 | 
											
												
													
														|  |            </el-form-item>
 |  |            </el-form-item>
 | 
											
												
													
														|  |            <el-row :gutter="20">
 |  |            <el-row :gutter="20">
 | 
											
										
											
												
													
														|  | @@ -76,12 +77,12 @@
 | 
											
												
													
														|  |              <el-col :span="18">
 |  |              <el-col :span="18">
 | 
											
												
													
														|  |                <el-form-item v-if="formData.isHeadteacher" prop="headteacherClassId" label="带 班" required>
 |  |                <el-form-item v-if="formData.isHeadteacher" prop="headteacherClassId" label="带 班" required>
 | 
											
												
													
														|  |                  <el-cascader
 |  |                  <el-cascader
 | 
											
												
													
														|  | -                  :disabled="!formData.schoolId"
 |  | 
 | 
											
												
													
														|  | -                  :options="classTree"
 |  | 
 | 
											
												
													
														|  | -                  v-model="formData.headteacherClassId"
 |  | 
 | 
											
												
													
														|  | -                  :placeholder="formData.schoolId?'选择年级-班级':'请先选择学校'"
 |  | 
 | 
											
												
													
														|  | -                  :props="{emitPath: false}"
 |  | 
 | 
											
												
													
														|  | -                  class="width100"
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    :disabled="!formData.schoolId"
 | 
											
												
													
														|  | 
 |  | +                    :options="classTree"
 | 
											
												
													
														|  | 
 |  | +                    v-model="formData.headteacherClassId"
 | 
											
												
													
														|  | 
 |  | +                    :placeholder="formData.schoolId?'选择年级-班级':'请先选择学校'"
 | 
											
												
													
														|  | 
 |  | +                    :props="{emitPath: false}"
 | 
											
												
													
														|  | 
 |  | +                    class="width100"
 | 
											
												
													
														|  |                  ></el-cascader>
 |  |                  ></el-cascader>
 | 
											
												
													
														|  |                </el-form-item>
 |  |                </el-form-item>
 | 
											
												
													
														|  |              </el-col>
 |  |              </el-col>
 | 
											
										
											
												
													
														|  | @@ -98,10 +99,10 @@
 | 
											
												
													
														|  |                <div class="fx-row fx-bet-cen">
 |  |                <div class="fx-row fx-bet-cen">
 | 
											
												
													
														|  |                  <el-input type="text" v-model="formData.code" placeholder="请输入验证码" class="fx-1"></el-input>
 |  |                  <el-input type="text" v-model="formData.code" placeholder="请输入验证码" class="fx-1"></el-input>
 | 
											
												
													
														|  |                  <el-button
 |  |                  <el-button
 | 
											
												
													
														|  | -                  type="primary"
 |  | 
 | 
											
												
													
														|  | -                  class="mx-send"
 |  | 
 | 
											
												
													
														|  | -                  :class="{'inactive':countdown>0}"
 |  | 
 | 
											
												
													
														|  | -                  @click="handleSendSms"
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    type="primary"
 | 
											
												
													
														|  | 
 |  | +                    class="mx-send"
 | 
											
												
													
														|  | 
 |  | +                    :class="{'inactive':countdown>0}"
 | 
											
												
													
														|  | 
 |  | +                    @click="handleSendSms"
 | 
											
												
													
														|  |                  >{{ countdown > 0 ? `(${countdown})秒` : '获取' }}
 |  |                  >{{ countdown > 0 ? `(${countdown})秒` : '获取' }}
 | 
											
												
													
														|  |                  </el-button>
 |  |                  </el-button>
 | 
											
												
													
														|  |                </div>
 |  |                </div>
 | 
											
										
											
												
													
														|  | @@ -123,12 +124,7 @@ import transferMixin from '@/components/mx-transfer-mixin.js'
 | 
											
												
													
														|  |  import userValidateMixin from '@/views/components/user-validation-mixin.js'
 |  |  import userValidateMixin from '@/views/components/user-validation-mixin.js'
 | 
											
												
													
														|  |  import { getSubjectsList } from '@/api/webApi/system'
 |  |  import { getSubjectsList } from '@/api/webApi/system'
 | 
											
												
													
														|  |  import { getAllGradeClasses } from '@/api/webApi/grade'
 |  |  import { getAllGradeClasses } from '@/api/webApi/grade'
 | 
											
												
													
														|  | -import {
 |  | 
 | 
											
												
													
														|  | -  getAreaSchoolAndYears,
 |  | 
 | 
											
												
													
														|  | -  improveUserInfo,
 |  | 
 | 
											
												
													
														|  | -  sendSms,
 |  | 
 | 
											
												
													
														|  | -  validateSms
 |  | 
 | 
											
												
													
														|  | -} from '@/api/login'
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { getAreaSchoolAndYears, improveUserInfo, sendSms, validateSms } from '@/api/login'
 | 
											
												
													
														|  |  import { mapGetters } from 'vuex'
 |  |  import { mapGetters } from 'vuex'
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  export default {
 |  |  export default {
 | 
											
										
											
												
													
														|  | @@ -171,9 +167,9 @@ export default {
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  |      groupedSchoolOptions() {
 |  |      groupedSchoolOptions() {
 | 
											
												
													
														|  |        return this.schoolOptions.groupBy(
 |  |        return this.schoolOptions.groupBy(
 | 
											
												
													
														|  | -        (sc) => sc.area,
 |  | 
 | 
											
												
													
														|  | -        'label',
 |  | 
 | 
											
												
													
														|  | -        'options'
 |  | 
 | 
											
												
													
														|  | 
 |  | +          (sc) => sc.area,
 | 
											
												
													
														|  | 
 |  | +          'label',
 | 
											
												
													
														|  | 
 |  | +          'options'
 | 
											
												
													
														|  |        )
 |  |        )
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |    },
 |  |    },
 | 
											
										
											
												
													
														|  | @@ -206,7 +202,7 @@ export default {
 | 
											
												
													
														|  |          this.rawClassTree = res.data
 |  |          this.rawClassTree = res.data
 | 
											
												
													
														|  |          // 挂载动态属性,用于表单校验
 |  |          // 挂载动态属性,用于表单校验
 | 
											
												
													
														|  |          this.rawClassTree.forEach(
 |  |          this.rawClassTree.forEach(
 | 
											
												
													
														|  | -          (grade) => (this.formData.gradeClass[grade.name] = [])
 |  | 
 | 
											
												
													
														|  | 
 |  | +            (grade) => (this.formData.gradeClass[grade.name] = [])
 | 
											
												
													
														|  |          )
 |  |          )
 | 
											
												
													
														|  |        })
 |  |        })
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
										
											
												
													
														|  | @@ -235,28 +231,28 @@ export default {
 | 
											
												
													
														|  |            code: this.formData.code
 |  |            code: this.formData.code
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          validateSms(validateData)
 |  |          validateSms(validateData)
 | 
											
												
													
														|  | -          .then((_) => {
 |  | 
 | 
											
												
													
														|  | -            // 从formData到提交结构还需要轻微转换
 |  | 
 | 
											
												
													
														|  | -            const postData = this.formDataToPostData(
 |  | 
 | 
											
												
													
														|  | -              this.formData,
 |  | 
 | 
											
												
													
														|  | -              this.rawClassTree
 |  | 
 | 
											
												
													
														|  | -            )
 |  | 
 | 
											
												
													
														|  | -            console.log(
 |  | 
 | 
											
												
													
														|  | -              'sms code valid & will post data',
 |  | 
 | 
											
												
													
														|  | -              postData
 |  | 
 | 
											
												
													
														|  | -            )
 |  | 
 | 
											
												
													
														|  | -            improveUserInfo(postData)
 |  | 
 | 
											
												
													
														|  | -              .then((res) => {
 |  | 
 | 
											
												
													
														|  | -                // reset login token
 |  | 
 | 
											
												
													
														|  | -                auth.setToken(res.data.token)
 |  | 
 | 
											
												
													
														|  | -                this.$store.dispatch('GetInfo').then((_) => {
 |  | 
 | 
											
												
													
														|  | -                  // to index page
 |  | 
 | 
											
												
													
														|  | -                  this.$emit('completed')
 |  | 
 | 
											
												
													
														|  | -                })
 |  | 
 | 
											
												
													
														|  | -              })
 |  | 
 | 
											
												
													
														|  | -              .finally(() => this.loading = false)
 |  | 
 | 
											
												
													
														|  | -          })
 |  | 
 | 
											
												
													
														|  | -          .finally(() => this.loading = false)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            .then((_) => {
 | 
											
												
													
														|  | 
 |  | +              // 从formData到提交结构还需要轻微转换
 | 
											
												
													
														|  | 
 |  | +              const postData = this.formDataToPostData(
 | 
											
												
													
														|  | 
 |  | +                  this.formData,
 | 
											
												
													
														|  | 
 |  | +                  this.rawClassTree
 | 
											
												
													
														|  | 
 |  | +              )
 | 
											
												
													
														|  | 
 |  | +              console.log(
 | 
											
												
													
														|  | 
 |  | +                  'sms code valid & will post data',
 | 
											
												
													
														|  | 
 |  | +                  postData
 | 
											
												
													
														|  | 
 |  | +              )
 | 
											
												
													
														|  | 
 |  | +              improveUserInfo(postData)
 | 
											
												
													
														|  | 
 |  | +                  .then((res) => {
 | 
											
												
													
														|  | 
 |  | +                    // reset login token
 | 
											
												
													
														|  | 
 |  | +                    auth.setToken(res.data.token)
 | 
											
												
													
														|  | 
 |  | +                    this.$store.dispatch('GetInfo').then((_) => {
 | 
											
												
													
														|  | 
 |  | +                      // to index page
 | 
											
												
													
														|  | 
 |  | +                      this.$emit('completed')
 | 
											
												
													
														|  | 
 |  | +                    })
 | 
											
												
													
														|  | 
 |  | +                  })
 | 
											
												
													
														|  | 
 |  | +                  .finally(() => this.loading = false)
 | 
											
												
													
														|  | 
 |  | +            })
 | 
											
												
													
														|  | 
 |  | +            .finally(() => this.loading = false)
 | 
											
												
													
														|  |        })
 |  |        })
 | 
											
												
													
														|  |      },
 |  |      },
 | 
											
												
													
														|  |      beginCountDown() {
 |  |      beginCountDown() {
 |