xiatian 3 жил өмнө
parent
commit
61277b6fd7

+ 1 - 0
src/constants/constants.js

@@ -102,6 +102,7 @@ export const PREVENT_CHEATING_CONFIG = [
   // { code: "DISABLE_VIRTUAL_MACHINE", name: "禁用虚拟机" },
   { code: "FULL_SCREEN_TOP", name: "强制全屏置顶" },
   { code: "DISABLE_MULTISCREEN", name: "禁用双屏" },
+  { code: "RECORD_SWITCH_SCREEN", name: "计算切屏次数" },
 ];
 //学生端版本
 export const STUDENT_CLIENT_VERSION = [

+ 40 - 0
src/modules/examwork/view/onlineExam.vue

@@ -415,6 +415,24 @@
                     </el-input>
                   </el-form-item>
                 </el-row>
+                <el-row>
+                  <el-form-item
+                    label="切屏次数限制"
+                    prop="MAX_SWITCH_SCREEN_COUNT"
+                    :label-width="style.label_width_tab2"
+                  >
+                    <el-input
+                      v-model.trim.number="
+                        form.properties.MAX_SWITCH_SCREEN_COUNT
+                      "
+                      maxlength="5"
+                      auto-complete="off"
+                      class="input"
+                    >
+                      <template slot="append">次</template>
+                    </el-input>
+                  </el-form-item>
+                </el-row>
               </el-tab-pane>
               <el-tab-pane label="显示设置" name="tab3">
                 <el-row>
@@ -1044,6 +1062,20 @@ let validateMaxInterruptNum = (rule, value, callback) => {
     callback();
   }
 };
+let validateMaxSwitchScreenCount = (rule, value, callback) => {
+  let examReconnectTime = _this.form.properties.MAX_SWITCH_SCREEN_COUNT;
+  if (examReconnectTime === "") {
+    callback();
+  } else if (!examReconnectTime.toString().match(/^[0-9]\d*$/)) {
+    callback(new Error("只能是非负整数"));
+    if (!_this.toActiveName) {
+      _this.toActiveName = "tab2";
+      _this.activeName = "tab2";
+    }
+  } else {
+    callback();
+  }
+};
 
 let validateSnapshotInterval = (rule, value, callback) => {
   let isFaceEnable = _this.form.properties.IS_FACE_ENABLE;
@@ -1335,6 +1367,7 @@ export default {
           IS_OBJ_SCORE_VIEW: "true",
           IS_STRANGER_ENABLE: "false",
           MAX_INTERRUPT_NUM: "",
+          MAX_SWITCH_SCREEN_COUNT: "",
           EXAM_RECONNECT_TIME: 30,
           FREEZE_TIME: 0,
           BEFORE_EXAM_REMARK: "",
@@ -1412,6 +1445,13 @@ export default {
             trigger: "blur",
           },
         ],
+        MAX_SWITCH_SCREEN_COUNT: [
+          {
+            required: false,
+            validator: validateMaxSwitchScreenCount,
+            trigger: "blur",
+          },
+        ],
         SNAPSHOT_INTERVAL: [
           {
             required: true,

+ 41 - 0
src/modules/examwork/view/onlineHomework.vue

@@ -386,6 +386,24 @@
                     </el-input>
                   </el-form-item>
                 </el-row>
+                <el-row>
+                  <el-form-item
+                    label="切屏次数限制"
+                    prop="MAX_SWITCH_SCREEN_COUNT"
+                    :label-width="style.label_width_tab2"
+                  >
+                    <el-input
+                      v-model.trim.number="
+                        form.properties.MAX_SWITCH_SCREEN_COUNT
+                      "
+                      maxlength="5"
+                      auto-complete="off"
+                      class="input"
+                    >
+                      <template slot="append">次</template>
+                    </el-input>
+                  </el-form-item>
+                </el-row>
               </el-tab-pane>
               <el-tab-pane label="显示设置" name="tab3">
                 <el-row>
@@ -795,6 +813,21 @@ let validateMaxInterruptNum = (rule, value, callback) => {
   }
 };
 
+let validateMaxSwitchScreenCount = (rule, value, callback) => {
+  let examReconnectTime = _this.form.properties.MAX_SWITCH_SCREEN_COUNT;
+  if (examReconnectTime === "") {
+    callback();
+  } else if (!examReconnectTime.toString().match(/^[0-9]\d*$/)) {
+    callback(new Error("只能是非负整数"));
+    if (!_this.toActiveName) {
+      _this.toActiveName = "tab2";
+      _this.activeName = "tab2";
+    }
+  } else {
+    callback();
+  }
+};
+
 export default {
   components: {
     ckeditor,
@@ -838,6 +871,7 @@ export default {
           IS_OBJ_SCORE_VIEW: "true",
           IS_STRANGER_ENABLE: "false",
           MAX_INTERRUPT_NUM: "",
+          MAX_SWITCH_SCREEN_COUNT: "",
           EXAM_RECONNECT_TIME: 30,
           FREEZE_TIME: 0,
           BEFORE_EXAM_REMARK: "",
@@ -913,6 +947,13 @@ export default {
             trigger: "blur",
           },
         ],
+        MAX_SWITCH_SCREEN_COUNT: [
+          {
+            required: false,
+            validator: validateMaxSwitchScreenCount,
+            trigger: "blur",
+          },
+        ],
         examCycleWeekArr: [
           {
             required: true,