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