浏览代码

添加校验

Michael Wang 4 年之前
父节点
当前提交
dae62e9258
共有 1 个文件被更改,包括 44 次插入9 次删除
  1. 44 9
      src/features/examwork/ExamManagement/ExamEdit.vue

+ 44 - 9
src/features/examwork/ExamManagement/ExamEdit.vue

@@ -52,29 +52,28 @@
             </el-form-item>
           </el-row>
           <el-row>
-            <el-form-item label="考试次数限制">
+            <el-form-item label="考试次数限制" prop="examCount">
               <el-input-number
                 v-model.number.trim="form.examCount"
-                :min="0"
+                :min="1"
                 :max="10000"
               ></el-input-number>
             </el-form-item>
           </el-row>
           <el-row>
-            <el-form-item label="考试时长(分钟)">
+            <el-form-item label="考试时长(分钟)" prop="maxDurationSeconds">
               <MinuteInput v-model.trim="form.maxDurationSeconds">
               </MinuteInput>
             </el-form-item>
           </el-row>
           <el-row v-if="!isModeAnytime">
-            <el-form-item label="迟到时长(分钟)">
+            <el-form-item label="迟到时长(分钟)" prop="openingSeconds">
               <MinuteInput v-model.trim="form.openingSeconds"> </MinuteInput>
             </el-form-item>
           </el-row>
           <el-row>
-            <el-form-item label="冻结时间(分钟)">
-              <MinuteInput v-model.trim="form.minDurationSeconds">
-              </MinuteInput>
+            <el-form-item label="冻结时间(分钟)" prop="minDurationSeconds">
+              <MinuteInput v-model.trim="form.minDurationSeconds" />
             </el-form-item>
           </el-row>
           <el-row v-if="!isModeAnytime">
@@ -810,6 +809,42 @@ export default {
           { type: "string", min: 1, max: 30, message: "长度必须在1到30之间" },
         ],
         startEndTimeProxy: { required: true, message: "必填" },
+        examCount: [
+          { required: true, message: "必填" },
+          { type: "number", min: 1, message: "必须大于0" },
+        ],
+        maxDurationSeconds: [
+          { required: true, message: "必填" },
+          { type: "number", min: 1, message: "必须大于0" },
+        ],
+        openingSeconds: {
+          validator: (rule, value) => {
+            // console.log(value);
+            return new Promise((resolve, reject) => {
+              if (
+                !this.form.isModeAnytime &&
+                this.form.maxDurationSeconds < value
+              ) {
+                reject("迟到时长必须小于考试时长");
+              } else {
+                resolve();
+              }
+            });
+          },
+        },
+        minDurationSeconds: {
+          trigger: "change",
+          validator: (rule, value) => {
+            // console.log(value);
+            return new Promise((resolve, reject) => {
+              if (this.form.maxDurationSeconds < value) {
+                reject("冻结时长必须小于考试时长");
+              } else {
+                resolve();
+              }
+            });
+          },
+        },
         inProcessLivenessFixedRange: {
           validator: (rule, value) => {
             return new Promise((resolve, reject) => {
@@ -853,14 +888,14 @@ export default {
         },
         ipAllow: {
           validator: (rule, value) => {
-            console.log(value);
+            // console.log(value);
             return new Promise((resolve, reject) => {
               if (!this.form.enableIpLimit) {
                 resolve();
                 return;
               }
               const ips = value.split(",").map((v) => v.trim());
-              console.log(ips);
+              // console.log(ips);
               const checkIpSeg = (seg, idx) => {
                 if (idx < 2) {
                   if (!/^\d+$/.test(seg)) {