From c62192be42c2b5870ca54d3ac800507d20f7019b Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 30 十月 2024 21:54:41 +0800
Subject: [PATCH] 非空提示、学员管理新增学员bug

---
 src/views/exam/exam/monitor.vue                  |    4 +-
 src/views/exam/question/edit/single-choice.vue   |   12 +++---
 src/views/education/cheat/list.vue               |    4 +-
 src/views/education/subject/edit.vue             |    4 +-
 src/views/exam/question/edit/multiple-choice.vue |   12 +++---
 src/views/exam/paper/edit.vue                    |    8 ++--
 src/views/class-management/ClassStaff.vue        |   73 +++++++++++++++++++++---------------
 7 files changed, 65 insertions(+), 52 deletions(-)

diff --git a/src/views/class-management/ClassStaff.vue b/src/views/class-management/ClassStaff.vue
index 92f1cfa..53ae6fc 100644
--- a/src/views/class-management/ClassStaff.vue
+++ b/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('鎵嬫満鍙锋牸寮忎笉姝g‘'));
+      } 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()
+          })
         }
       })
     },
diff --git a/src/views/education/cheat/list.vue b/src/views/education/cheat/list.vue
index 3cced0e..60aab2b 100644
--- a/src/views/education/cheat/list.vue
+++ b/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>
diff --git a/src/views/education/subject/edit.vue b/src/views/education/subject/edit.vue
index 323393f..f6bb7db 100644
--- a/src/views/education/subject/edit.vue
+++ b/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>
diff --git a/src/views/exam/exam/monitor.vue b/src/views/exam/exam/monitor.vue
index 0473fb0..09bd218 100644
--- a/src/views/exam/exam/monitor.vue
+++ b/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>
diff --git a/src/views/exam/paper/edit.vue b/src/views/exam/paper/edit.vue
index ff068b0..f02869e 100644
--- a/src/views/exam/paper/edit.vue
+++ b/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">
diff --git a/src/views/exam/question/edit/multiple-choice.vue b/src/views/exam/question/edit/multiple-choice.vue
index 15677d8..2c6f4d3 100644
--- a/src/views/exam/question/edit/multiple-choice.vue
+++ b/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="瑙f瀽锛�" prop="analyze" required>
+      <el-form-item label="瑙f瀽锛�" 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="姝g‘绛旀锛�" prop="correctArray" required>
+      <el-form-item label="姝g‘绛旀锛�" 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>
diff --git a/src/views/exam/question/edit/single-choice.vue b/src/views/exam/question/edit/single-choice.vue
index 2c05773..312fad9 100644
--- a/src/views/exam/question/edit/single-choice.vue
+++ b/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="瑙f瀽锛�" prop="analyze" required>
+      <el-form-item label="瑙f瀽锛�" 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="姝g‘绛旀锛�" prop="correct" required>
+      <el-form-item label="姝g‘绛旀锛�" 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>

--
Gitblit v1.8.0