Explorar o código

Merge remote-tracking branch 'origin/hotfixes_v5.0.2_20240311_updates' into dev_v5.0.3

deason hai 1 ano
pai
achega
265473a5e1

+ 7 - 1
src/constants/constants.js

@@ -115,11 +115,17 @@ export const STUDENT_CLIENT_VERSION = [
   { code: "1.0.0", name: "1.0.0" },
   { code: "2.0.0", name: "2.0.0" },
 ];
-//考生端支持的登录方
+//考生端支持的登录方
 export const LOGIN_SUPPORT = [
   { code: "NATIVE", name: "考生端登录" },
   { code: "BROWSER", name: "浏览器登录" },
 ];
+//考生端展示的用户信息
+export const SHOW_INFO = [
+  { code: "STU_NAME", name: "学生姓名" },
+  { code: "STU_CODE", name: "学号" },
+  { code: "IDENTITY_NUMBER", name: "学生证件号" },
+];
 
 //活体检查 - 动作选项
 export const ACTION_OPTION_LIST = [

+ 37 - 0
src/modules/basic/view/clientConfig.vue

@@ -165,6 +165,18 @@
                 >
               </el-checkbox-group>
             </el-form-item>
+            <el-form-item label="考生端展示信息" prop="show_info_list">
+              <el-checkbox-group v-model="ruleForm.show_info_list">
+                <el-checkbox
+                  v-for="lt in showInfoList"
+                  :key="lt.code"
+                  v-model="lt.code"
+                  name="show_info_list"
+                  :label="lt.code"
+                  >{{ lt.name }}</el-checkbox
+                >
+              </el-checkbox-group>
+            </el-form-item>
 
             <el-form-item
               label="控制台配置"
@@ -446,6 +458,7 @@ import {
   STUDENT_CLIENT_VERSION,
   CORE_API,
   LOGIN_SUPPORT,
+  SHOW_INFO,
 } from "@/constants/constants.js";
 let checkWeight = (rule, value, callback) => {
   if ("0" != value && !value) {
@@ -476,6 +489,7 @@ export default {
       rootOrgList: [],
       loginTypes: LOGIN_TYPE,
       loginSupports: LOGIN_SUPPORT,
+      showInfoList: SHOW_INFO,
       propertyGroupId: "",
       preventCheatingConfigs: PREVENT_CHEATING_CONFIG,
       studentClientVersions: STUDENT_CLIENT_VERSION,
@@ -495,6 +509,8 @@ export default {
         STUDENT_CODE_LOGIN_ALIAS: "学号登录",
         IDENTITY_NUMBER_LOGIN_ALIAS: "身份证号登录",
         LOGIN_SUPPORT: "",
+        SHOW_INFO: "",
+        show_info_list: [],
         IS_CUSTOM_MENU_LOGO: "false",
         CUS_MENU_LOGO_FILE_URL: "",
         STUDENT_CLIENT_BG_PICTURE_URL: "",
@@ -510,6 +526,7 @@ export default {
           STUDENT_CODE_LOGIN_ALIAS: "学号登录",
           IDENTITY_NUMBER_LOGIN_ALIAS: "身份证号登录",
           LOGIN_SUPPORT: "",
+          SHOW_INFO: "",
           IS_CUSTOM_MENU_LOGO: "false",
           CUS_MENU_LOGO_FILE_URL: "",
           STUDENT_CLIENT_BG_PICTURE_URL: "",
@@ -724,6 +741,10 @@ export default {
               newForm.loginSupport,
               this.originalRuleForm.loginSupport
             ) &&
+            this.equalArrayIgnoreSequence(
+              newForm.show_info_list,
+              this.originalRuleForm.show_info_list
+            ) &&
             this.equalArrayIgnoreSequence(
               newForm.preventCheatingConfig,
               this.originalRuleForm.preventCheatingConfig
@@ -873,6 +894,8 @@ export default {
             this.ruleForm.loginType.join(",");
           this.ruleForm.properties.LOGIN_SUPPORT = this.ruleForm.LOGIN_SUPPORT =
             this.ruleForm.loginSupport.join(",");
+          this.ruleForm.properties.SHOW_INFO = this.ruleForm.SHOW_INFO =
+            this.ruleForm.show_info_list.join(",");
           this.ruleForm.properties.STUDENT_CODE_LOGIN_ALIAS =
             this.ruleForm.STUDENT_CODE_LOGIN_ALIAS;
           this.ruleForm.properties.IDENTITY_NUMBER_LOGIN_ALIAS =
@@ -1169,6 +1192,8 @@ export default {
           this.ruleForm.LOGIN_SUPPORT =
             this.ruleForm.properties.LOGIN_SUPPORT ||
             this.ruleForm.LOGIN_SUPPORT;
+          this.ruleForm.SHOW_INFO =
+            this.ruleForm.properties.SHOW_INFO || this.ruleForm.SHOW_INFO;
           this.ruleForm.PREVENT_CHEATING_CONFIG =
             this.ruleForm.properties.PREVENT_CHEATING_CONFIG ||
             this.ruleForm.PREVENT_CHEATING_CONFIG;
@@ -1206,6 +1231,18 @@ export default {
               this.ruleForm.properties.LOGIN_SUPPORT.split(",");
           }
 
+          if (this.ruleForm.properties.SHOW_INFO) {
+            this.ruleForm.show_info_list =
+              this.ruleForm.properties.SHOW_INFO.split(",");
+          } else {
+            // 默认值
+            let defaultValue = [];
+            for (let lt of SHOW_INFO) {
+              defaultValue.push(lt.code);
+            }
+            this.ruleForm.show_info_list = defaultValue;
+          }
+
           if (this.ruleForm.properties.PREVENT_CHEATING_CONFIG) {
             if (this.ruleForm.properties.PREVENT_CHEATING_CONFIG != "NONE") {
               this.ruleForm.preventCheatingConfig =

+ 1 - 0
src/modules/basic/view/user.vue

@@ -400,6 +400,7 @@
           <el-table-column prop="id" width="80" label="ID" />
           <el-table-column prop="name" width="120" label="姓名" />
           <el-table-column prop="loginName" width="100" label="登录名" />
+          <el-table-column prop="phoneNumber" width="100" label="联系方式" />
           <el-table-column prop="rootOrgName" label="学校" />
           <!-- <el-table-column prop="roleNamesStr" width="110" label="角色" /> -->
           <el-table-column width="120" label="角色">

+ 34 - 22
src/modules/examwork/view/examIpLimit.vue

@@ -24,10 +24,10 @@
               :disabled="true"
             ></el-input>
           </el-form-item>
-          <el-form-item label="ip">
+          <el-form-item label="IP">
             <el-input
               v-model="formSearch.ip"
-              placeholder="请输入ip"
+              placeholder="请输入IP"
               class="input"
             ></el-input>
           </el-form-item>
@@ -75,16 +75,16 @@
           size="small"
           type="primary"
           icon="el-icon-edit"
-          :disabled="noBatchSelected"
-          @click="editIpLimitType"
-          >类型设置</el-button
+          @click="editIpLimitProperty"
+          >整体控制设置</el-button
         >
         <el-button
           size="small"
           type="primary"
           icon="el-icon-edit"
-          @click="editIpLimitProperty"
-          >控制设置</el-button
+          :disabled="noBatchSelected"
+          @click="editIpLimitType"
+          >批量限制类型设置</el-button
         >
         <el-button
           size="small"
@@ -127,7 +127,7 @@
           <el-table-column type="selection" width="50"></el-table-column>
           <el-table-column
             prop="id"
-            width="100"
+            width="80"
             label="ID"
             sortable
           ></el-table-column>
@@ -137,19 +137,21 @@
           <el-table-column
             prop="limitType"
             label="限制类型"
+            width="130"
             sortable
           ></el-table-column>
+          <el-table-column prop="remark" label="备注"></el-table-column>
           <el-table-column
-            width="180"
+            width="170"
             prop="creationTime"
             label="创建时间"
           ></el-table-column>
           <el-table-column
-            width="180"
+            width="170"
             prop="updateTime"
             label="修改时间"
           ></el-table-column>
-          <el-table-column label="操作" width="300">
+          <el-table-column label="操作" width="320">
             <div slot-scope="scope">
               <el-button
                 size="mini"
@@ -170,7 +172,7 @@
                 type="primary"
                 icon="el-icon-edit"
                 @click="editIpLimitType(scope.row)"
-                >切换类型</el-button
+                >限制类型设置</el-button
               >
             </div>
           </el-table-column>
@@ -189,20 +191,19 @@
 
         <!-- 新增弹出窗口 -->
         <el-dialog
-          title="IP限制信息页面"
+          title="IP限制信息设置"
           :visible.sync="addingIpLimitDialog"
-          width="650px"
+          width="350px"
           @close="closeAddIpLimitDialog"
         >
           <el-form
             ref="addIpLimitForm"
             :rules="rules"
             :model="examIpLimitForm"
-            :inline="true"
             label-width="85px"
             class="editForm"
           >
-            <el-form-item label="ip" prop="ip">
+            <el-form-item label="IP" prop="ip">
               <el-input
                 v-model="examIpLimitForm.ip"
                 class="input"
@@ -226,6 +227,14 @@
                 ></el-option>
               </el-select>
             </el-form-item>
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                v-model="examIpLimitForm.remark"
+                class="input"
+                auto-complete="off"
+                maxlength="30"
+              ></el-input>
+            </el-form-item>
           </el-form>
           <div style="text-align: center">
             <el-button type="primary" @click="addIpLimit">确 定</el-button>
@@ -235,9 +244,9 @@
 
         <!-- 切换类型弹出窗口 -->
         <el-dialog
-          title="类型切换页面"
+          title="限制类型设置"
           :visible.sync="editIpLimitTypeDialog"
-          width="650px"
+          width="350px"
           @close="closeEditIpLimitTypeDialog"
         >
           <el-form
@@ -273,9 +282,9 @@
 
         <!-- 控制修改弹出窗口 -->
         <el-dialog
-          title="控制修改页面"
+          title="整体控制设置"
           :visible.sync="editIpLimitPropertyDialog"
-          width="650px"
+          width="350px"
           @close="closeEditIpLimitPropertyDialog"
         >
           <el-form
@@ -327,8 +336,8 @@
 
         <!-- 导入弹窗 -->
         <el-dialog
-          title="Ip限制信息导入页"
-          size="tiny"
+          title="IP限制信息导入"
+          width="500px"
           :visible.sync="ipLimitImportDialog"
         >
           <el-form ref="ipLimitImportForm" :model="ipLimitImportForm">
@@ -447,6 +456,7 @@ export default {
         ip: "",
         examId: "",
         limitType: "",
+        remark: "",
       },
       examIpLimitTypeForm: {
         id: "",
@@ -536,6 +546,7 @@ export default {
       this.examIpLimitForm.id = null;
       this.examIpLimitForm.ip = null;
       this.examIpLimitForm.limitType = null;
+      this.examIpLimitForm.remark = null;
       this.addingIpLimitDialog = true;
       this.showIpColumn = true;
     },
@@ -614,6 +625,7 @@ export default {
       }
       this.examIpLimitForm.id = row.id;
       this.examIpLimitForm.ip = row.ip;
+      this.examIpLimitForm.remark = row.remark;
       this.examIpLimitForm.limitType = this.getLimitType(row.limitType);
       this.addingIpLimitDialog = true;
       this.showIpColumn = true;

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

@@ -229,6 +229,7 @@
                     >开启手机app考试,将不能开启人脸身份检测</span
                   >-->
                 </el-row>
+
                 <el-row>
                   <el-form-item
                     label="开启IP访问设置"
@@ -241,6 +242,23 @@
                     ></el-switch>
                   </el-form-item>
                 </el-row>
+
+                <el-row>
+                  <el-form-item
+                    label="开启多选题作答提示"
+                    :label-width="style.label_width_tab1"
+                  >
+                    <el-switch
+                      v-model="form.properties.SHOW_MULTIPLE_CHOICE_WARNING"
+                      on-text="是"
+                      off-text="否"
+                    ></el-switch>
+                    <span style="font-size: 12px; margin-left: 30px"
+                      >*开启后,考生作答多选题所选答案不足两个时警告提示</span
+                    >
+                  </el-form-item>
+                </el-row>
+
                 <el-row>
                   <el-form-item
                     label="开启审核全通过"
@@ -1435,6 +1453,7 @@ export default {
           WARN_THRESHOLD: 50,
           MARKING_TYPE: "ALL",
           IP_LIMIT: "false",
+          SHOW_MULTIPLE_CHOICE_WARNING: "false",
           AUDIT_ALL_PASS: "false",
           IP_ADDRESSES: null,
           LIVING_WARN_THRESHOLD: 50,
@@ -1675,6 +1694,9 @@ export default {
             this.form.properties.IP_LIMIT =
               this.form.properties.IP_LIMIT === "true";
 
+            this.form.properties.SHOW_MULTIPLE_CHOICE_WARNING =
+              this.form.properties.SHOW_MULTIPLE_CHOICE_WARNING === "true";
+
             this.form.properties.AUDIT_ALL_PASS =
               this.form.properties.AUDIT_ALL_PASS === "true";