xiangpei
2024-10-30 c62192be42c2b5870ca54d3ac800507d20f7019b
非空提示、学员管理新增学员bug
7个文件已修改
117 ■■■■■ 已修改文件
src/views/class-management/ClassStaff.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/education/cheat/list.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/education/subject/edit.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/exam/monitor.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/paper/edit.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/question/edit/multiple-choice.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/question/edit/single-choice.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/class-management/ClassStaff.vue
@@ -85,16 +85,16 @@
      :before-close="handleAddClose"
      :close-on-click-modal="false">
      <el-form :model="studentForm" :rules="studentRules" ref="studentForm" label-width="100px" class="demo-ruleForm">
        <el-form-item label="真实姓名:" prop="realName" required>
        <el-form-item label="真实姓名:" prop="realName">
        <el-input v-model="studentForm.realName"></el-input>
      </el-form-item>
      <el-form-item label="手机号码:" prop="phone" required>
      <el-form-item label="手机号码:" prop="phone">
        <el-input v-model="studentForm.phone"></el-input>
      </el-form-item>
      <el-form-item label="登录账号:" prop="userName" required>
      <el-form-item label="登录账号:" prop="userName">
        <el-input v-model="studentForm.userName" autocomplete="off"></el-input>
      </el-form-item>
      <el-form-item v-if="!studentForm.id" label="登录密码:" prop="password" required>
      <el-form-item v-if="!studentForm.id" label="登录密码:" prop="password">
        <el-input v-model="studentForm.password" show-password autocomplete="off"></el-input>
      </el-form-item>
      <el-form-item label="年龄:">
@@ -109,7 +109,7 @@
        <el-date-picker v-model="studentForm.birthDay" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"/>
      </el-form-item>
      <el-form-item label="状态:" required>
      <el-form-item label="状态:">
        <el-select v-model="studentForm.status" placeholder="状态">
          <el-option v-for="item in statusEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
@@ -163,6 +163,30 @@
export default {
  components: { Pagination },
  data () {
    var validatePassword = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入登录密码'))
      } else if (!/[A-Z]/.test(value)) {
        callback(new Error('密码必须包含至少一个大写字母'))
      } else if (!/[a-z]/.test(value)) {
        callback(new Error('密码必须包含至少一个小写字母'))
      } else if (!/[0-9]/.test(value)) {
        callback(new Error('密码必须包含至少一个数字'))
      } else {
        callback()
      }
    }
    var validatePhone = (rule, value, callback) => {
      // 手机号验证逻辑
      const phoneRegex = /^1[3-9]\d{9}$/;
      if (!value) {
        callback(new Error('请输入手机号'));
      } else if (!phoneRegex.test(value)) {
        callback(new Error('手机号格式不正确'));
      } else {
        callback();
      }
    }
    return {
      studentForm: {
        id: null,
@@ -175,17 +199,17 @@
        password: ''
      },
      studentRules: {
        realName: [
          { required: true, message: '请填写学员姓名', trigger: 'blur' }
        userName: [
          { required: true, message: '请输入登录账号', trigger: 'blur' }
        ],
        sex: [
          { required: true, message: '请选择学员性别', trigger: 'change' }
        realName: [
          { required: true, message: '请输入真实姓名', trigger: 'blur' }
        ],
        password: [
          { validator: validatePassword, trigger: 'blur' }
        ],
        phone: [
          { required: true, message: '请填写学员电话', trigger: 'blur' }
        ],
        userName: [
          { required: true, message: '请填写学员登录账号', trigger: 'blur' }
          { validator: validatePhone, trigger: 'blur' }
        ]
      },
      studentTitle: '新增学员',
@@ -238,23 +262,12 @@
        console.log(this.studentForm)
        if (valid) {
          this.studentForm.classesId = this.classes.id
          if (this.studentForm.id) {
            editClassesUser(this.studentForm).then(res => {
              this.addOpen = false
              this.$message.success(res.data.message)
              this.page()
              this.resetStudentForm()
            })
            window.location.reload()
          } else {
            addClassesUser(this.studentForm).then(res => {
              this.addOpen = false
              this.$message.success(res.data.message)
              this.page()
              this.resetStudentForm()
            })
            window.location.reload()
          }
          addClassesUser(this.studentForm).then(res => {
            this.addOpen = false
            this.$message.success(res.data.message)
            this.page()
            this.resetStudentForm()
          })
        }
      })
    },
src/views/education/cheat/list.vue
@@ -24,10 +24,10 @@
    <el-dialog :visible.sync="visible" width="400px">
      <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
        <el-form-item label="名称:" prop="name" required>
        <el-form-item label="名称:" prop="name">
          <el-input v-model="form.name" maxlength="10" show-word-limit />
        </el-form-item>
        <el-form-item label="排序:" prop="itemOrder" required>
        <el-form-item label="排序:" prop="itemOrder">
          <el-input-number v-model="form.itemOrder" type="number" :min="1" :max="100" />
        </el-form-item>
        <el-form-item>
src/views/education/subject/edit.vue
@@ -2,10 +2,10 @@
  <div class="app-container">
    <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading">
      <el-form-item label="学科:" required>
      <el-form-item label="学科:">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-form-item label="年级:" required>
      <el-form-item label="年级:">
        <el-select v-model="form.level" placeholder="年级">
          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
src/views/exam/exam/monitor.vue
@@ -51,10 +51,10 @@
    <el-dialog :visible.sync="visible" width="400px">
      <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
        <el-form-item label="名称:" prop="name" required>
        <el-form-item label="名称:" prop="name">
          <el-input v-model="form.name" maxlength="10" show-word-limit/>
        </el-form-item>
        <el-form-item label="排序:" prop="itemOrder" required>
        <el-form-item label="排序:" prop="itemOrder">
          <el-input-number v-model="form.itemOrder" type="number" :min="1" :max="100"/>
        </el-form-item>
        <el-form-item>
src/views/exam/paper/edit.vue
@@ -1,16 +1,16 @@
<template>
  <div class="app-container">
    <el-form :model="form" ref="form" label-width="150px" v-loading="formLoading" :rules="rules">
      <el-form-item label="试卷类型:" prop="paperType" required>
      <el-form-item label="试卷类型:" prop="paperType">
        <el-select v-model="form.paperType" placeholder="试卷类型">
          <el-option v-for="item in paperTypeEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="试卷名称:" prop="name" required>
      <el-form-item label="试卷名称:" prop="name">
        <el-input style="width: 300px" v-model="form.name"/>
      </el-form-item>
      <!-- 题目详细信息 -->
      <el-form-item :key="index" :label="'标题'+(index+1)+':'" required
      <el-form-item :key="index" :label="'标题'+(index+1)+':'"
                    v-for="(titleItem,index) in form.questionTitleList"
                    v-show="form.paperType===1 || (form.paperType ===3 && form.id)">
        <el-input v-model="titleItem.title" style="width: 50%"/>
@@ -63,7 +63,7 @@
                           v-show="form.deductType === 2 || form.deductType === 3" :min="0"/>
        </div>
      </el-form-item>
      <el-form-item label="建议时长(分钟):" prop="suggestTime" required>
      <el-form-item label="建议时长(分钟):" prop="suggestTime">
        <el-input-number v-model="form.suggestTime" placeholder="分钟" :min="0"/>
      </el-form-item>
      <el-form-item label="权限:" prop="visibility">
src/views/exam/question/edit/multiple-choice.vue
@@ -1,28 +1,28 @@
<template>
  <div class="app-container">
    <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading"  :rules="rules">
      <el-form-item label="学科:" prop="subjectId" required>
      <el-form-item label="学科:" prop="subjectId">
        <el-select v-model="form.subjectId" placeholder="学科" >
          <el-option v-for="item in subjects" :key="item.id" :value="item.id" :label="item.name"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="题干:" prop="title" required>
      <el-form-item label="题干:" prop="title">
        <el-input v-model="form.title"   @focus="inputClick(form,'title')" />
      </el-form-item>
      <el-form-item label="选项:" required>
      <el-form-item label="选项:">
        <el-form-item :label="item.prefix" :key="item.prefix"  v-for="(item,index) in form.items"  label-width="50px" class="question-item-label">
          <el-input v-model="item.prefix"  style="width:50px;" />
          <el-input v-model="item.content"   @focus="inputClick(item,'content')"  class="question-item-content-input"/>
          <el-button type="danger" size="mini" class="question-item-remove" icon="el-icon-delete" @click="questionItemRemove(index)"></el-button>
        </el-form-item>
      </el-form-item>
      <el-form-item label="解析:" prop="analyze" required>
      <el-form-item label="解析:" prop="analyze">
        <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
      </el-form-item>
      <el-form-item label="难度:" required>
      <el-form-item label="难度:">
        <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
      </el-form-item>
      <el-form-item label="正确答案:" prop="correctArray" required>
      <el-form-item label="正确答案:" prop="correctArray">
        <el-checkbox-group v-model="form.correctArray">
          <el-checkbox v-for="item in form.items" :label="item.prefix" :key="item.prefix">{{item.prefix}}</el-checkbox>
        </el-checkbox-group>
src/views/exam/question/edit/single-choice.vue
@@ -1,28 +1,28 @@
<template>
  <div class="app-container">
    <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
      <el-form-item label="学科:" prop="subjectId" required>
      <el-form-item label="学科:" prop="subjectId">
        <el-select v-model="form.subjectId" placeholder="学科" >
          <el-option v-for="item in subjects" :key="item.id" :value="item.id" :label="item.name"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="题干:" prop="title" required>
      <el-form-item label="题干:" prop="title">
        <el-input v-model="form.title"   @focus="inputClick(form,'title')" />
      </el-form-item>
      <el-form-item label="选项:" required>
      <el-form-item label="选项:">
        <el-form-item :label="item.prefix" :key="item.prefix"  v-for="(item,index) in form.items"  label-width="50px" class="question-item-label">
          <el-input v-model="item.prefix"  style="width:50px;" />
          <el-input v-model="item.content"   @focus="inputClick(item,'content')"  class="question-item-content-input"/>
           <el-button type="danger" size="mini" class="question-item-remove" icon="el-icon-delete" @click="questionItemRemove(index)"></el-button>
        </el-form-item>
      </el-form-item>
      <el-form-item label="解析:" prop="analyze" required>
      <el-form-item label="解析:" prop="analyze">
        <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
      </el-form-item>
      <el-form-item label="难度:" required>
      <el-form-item label="难度:">
        <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
      </el-form-item>
      <el-form-item label="正确答案:" prop="correct" required>
      <el-form-item label="正确答案:" prop="correct">
        <el-radio-group v-model="form.correct">
          <el-radio  v-for="item in form.items"  :key="item.prefix"  :label="item.prefix">{{item.prefix}}</el-radio>
        </el-radio-group>