Răsfoiți Sursa

网考后台场次相关功能修改

lideyin 4 ani în urmă
părinte
comite
fc449e4017

+ 83 - 1
src/modules/examwork/view/student.vue

@@ -464,6 +464,7 @@
                 clearable
                 v-model="stuExamSearch.examId"
                 placeholder="请选择"
+                @change="handleExamChange4Search"
               >
                 <el-option
                   v-for="item in examList4Search"
@@ -473,6 +474,26 @@
                 ></el-option>
               </el-select>
             </el-form-item>
+            <el-form-item label="场次" class="pull-left">
+              <el-select
+                clearable
+                :disabled="examStageDisabled4Search"
+                class="input"
+                :remote-method="queryExamStages4Search"
+                remote
+                :loading="queryExamStages4SearchLoading"
+                :filterable="false"
+                v-model="stuExamSearch.examStageId"
+                placeholder="请选择"
+              >
+                <el-option
+                  v-for="item in examStageList4Search"
+                  :label="item.stageOrder"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
             <el-form-item class="pull-left">
               <el-button
                 size="small"
@@ -500,6 +521,13 @@
               label="考试"
               sortable
             ></el-table-column>
+            <el-table-column
+              v-if="!examStageDisabled4Search"
+              prop="examStageOrder"
+              label="场次"
+              width="120"
+              sortable
+            ></el-table-column>
             <el-table-column
               prop="courseName"
               label="课程"
@@ -675,6 +703,7 @@ export default {
       stuExamSearch: {
         rootOrgId: "",
         examId: "",
+        examStageId: "",
         studentCode: "",
         studentName: "",
         orgId: "",
@@ -694,7 +723,10 @@ export default {
             trigger: "change"
           }
         ]
-      }
+      },
+      examStageDisabled4Search: true,
+      queryExamStages4SearchLoading: false,
+      examStageList4Search: []
     };
   },
   computed: {
@@ -1197,6 +1229,56 @@ export default {
       this.formSearch.rootOrgId = this.user.rootOrgId;
       this.getOrgList4Search("");
       this.searchForm();
+    },
+    handleExamChange4Search(value) {
+      if (this.examList4Search.length > 0) {
+        let examArr = this.examList4Search.filter(p => p.id == value);
+        if (examArr && examArr.length > 0) {
+          let exam = examArr[0];
+          if (
+            exam.specialSettingsEnabled &&
+            exam.specialSettingsType == "STAGE_BASED"
+          ) {
+            this.examStageDisabled4Search = false;
+            this.queryExamStages4Search("");
+          } else {
+            this.examStageList4Search = [];
+            this.examStageDisabled4Search = true;
+          }
+        }
+      }
+    },
+    queryExamStages4Search(name) {
+      this.queryExamStages(this.stuExamSearch.examId, name, "search");
+    },
+    queryExamStages(examId, name, where) {
+      console.log("queryExams; name: " + name);
+
+      this.$httpWithMsg
+        .get(
+          EXAM_WORK_API +
+            "/examStage/queryByNameLike?examId=" +
+            examId +
+            "&enable=true&name=" +
+            name
+        )
+        .then(response => {
+          if ("search" == where) {
+            this.queryExamStages4SearchLoading = false;
+            this.examStageList4Search = response.data;
+          } else if ("insertOrUpdate" == where) {
+            this.queryExamStages4InsertOrUpdateLoading = false;
+            this.examStageList4InsertOrUpdate = response.data;
+          }
+        })
+        .catch(response => {
+          console.log(response);
+          if ("search" == where) {
+            this.queryExamStages4SearchLoading = false;
+          } else if ("insertOrUpdate" == where) {
+            this.queryExamStages4InsertOrUpdateLoading = false;
+          }
+        });
     }
   },
   created() {

+ 80 - 2
src/modules/oe/component/commonForm.vue

@@ -23,6 +23,29 @@
         </el-select>
       </el-form-item>
     </el-col>
+    <el-col :span="6">
+      <el-form-item label="场次">
+        <el-select
+          clearable
+          :disabled="examStageDisabled4Search"
+          class="form_search_width"
+          :remote-method="queryExamStages4Search"
+          remote
+          :loading="queryExamStages4SearchLoading"
+          :filterable="false"
+          v-model="form.examStageId"
+          placeholder="请选择"
+          size="small"
+        >
+          <el-option
+            v-for="item in examStageList4Search"
+            :label="item.stageOrder"
+            :value="item.id"
+            :key="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+    </el-col>
     <el-col :span="6">
       <el-form-item label="学习中心">
         <el-select
@@ -126,7 +149,7 @@
   </el-form>
 </template>
 <script>
-import { COURSE_LEVELS } from "../constants/constants";
+import { COURSE_LEVELS, EXAM_WORK_API } from "@/constants/constants";
 import { mapState } from "vuex";
 export default {
   props: ["form", "getExamCondition"],
@@ -139,7 +162,10 @@ export default {
       currentPagePrivileges: {
         ORG_FIND_ALL: false //查询所有学习中心
       },
-      orgName: ""
+      orgName: "",
+      examStageDisabled4Search: true,
+      queryExamStages4SearchLoading: false,
+      examStageList4Search: []
     };
   },
   computed: {
@@ -195,12 +221,31 @@ export default {
         });
     },
     changeExam(examId) {
+      debugger;
       this.examList.forEach(exam => {
         if (exam.id == examId) {
           this.form.examType = exam.examType;
         }
       });
       this.getCourses();
+
+      //场次联动
+      if (this.examList.length > 0) {
+        let examArr = this.examList.filter(p => p.id == examId);
+        if (examArr && examArr.length > 0) {
+          let exam = examArr[0];
+          if (
+            exam.specialSettingsEnabled &&
+            exam.specialSettingsType == "STAGE_BASED"
+          ) {
+            this.examStageDisabled4Search = false;
+            this.queryExamStages4Search("");
+          } else {
+            this.examStageList4Search = [];
+            this.examStageDisabled4Search = true;
+          }
+        }
+      }
     },
     getCourses() {
       //this.form.courseId = "";
@@ -220,6 +265,39 @@ export default {
         .then(response => {
           this.courseList = response.data;
         });
+    },
+    queryExamStages4Search(name) {
+      debugger;
+      this.queryExamStages(this.form.examId, name, "search");
+    },
+    queryExamStages(examId, name, where) {
+      console.log("queryExams; name: " + name);
+
+      this.$httpWithMsg
+        .get(
+          EXAM_WORK_API +
+            "/examStage/queryByNameLike?examId=" +
+            examId +
+            "&enable=true&name=" +
+            name
+        )
+        .then(response => {
+          if ("search" == where) {
+            this.queryExamStages4SearchLoading = false;
+            this.examStageList4Search = response.data;
+          } else if ("insertOrUpdate" == where) {
+            this.queryExamStages4InsertOrUpdateLoading = false;
+            this.examStageList4InsertOrUpdate = response.data;
+          }
+        })
+        .catch(response => {
+          console.log(response);
+          if ("search" == where) {
+            this.queryExamStages4SearchLoading = false;
+          } else if ("insertOrUpdate" == where) {
+            this.queryExamStages4InsertOrUpdateLoading = false;
+          }
+        });
     }
   },
   created() {

+ 2 - 0
src/modules/oe/views/absent.vue

@@ -101,6 +101,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         identityNumber: null,
         orgId: null,
         studentCode: null,
@@ -131,6 +132,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         identityNumber: null,
         orgId: this.form.ORG_FIND_ALL ? null : this.form.orgId,
         studentCode: null,

+ 7 - 4
src/modules/oe/views/alreadyAudited.vue

@@ -118,9 +118,9 @@
                   type="text"
                   >{{ scope.row.examRecordDataId }}</el-button
                 >
-                <span v-show="!currentPagePrivileges.SNAPSHOT_DETAILS">{{
-                  scope.row.examRecordDataId
-                }}</span>
+                <span v-show="!currentPagePrivileges.SNAPSHOT_DETAILS">
+                  {{ scope.row.examRecordDataId }}
+                </span>
               </template>
             </el-table-column>
             <el-table-column
@@ -238,6 +238,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         faceSuccessPercentLower: null,
         faceSuccessPercentUpper: null,
         identityNumber: null,
@@ -266,7 +267,8 @@ export default {
         INVIGILATE_AUDIT_STATUS: false, //数据状态
         SNAPSHOT_DETAILS: false //详情查看
       },
-      getPermissionStatus: false //获取权限状态
+      getPermissionStatus: false, //获取权限状态
+      disciplineTypeList: []
     };
   },
   computed: {
@@ -280,6 +282,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         faceSuccessPercentLower: null,
         faceSuccessPercentUpper: null,
         identityNumber: null,

+ 5 - 3
src/modules/oe/views/awaitingAudit.vue

@@ -183,9 +183,9 @@
                   type="text"
                   >{{ scope.row.dataId }}</el-button
                 >
-                <span v-show="!currentPagePrivileges.SNAPSHOT_DETAILS">
-                  {{ scope.row.dataId }}
-                </span>
+                <span v-show="!currentPagePrivileges.SNAPSHOT_DETAILS">{{
+                  scope.row.dataId
+                }}</span>
               </template>
             </el-table-column>
             <el-table-column
@@ -381,6 +381,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         faceSuccessPercentLower: null,
         faceSuccessPercentUpper: null,
         livenessSuccessPercentLower: null,
@@ -443,6 +444,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         faceSuccessPercentLower: null,
         faceSuccessPercentUpper: null,
         livenessSuccessPercentLower: null,

+ 95 - 5
src/modules/oe/views/examSummary.vue

@@ -2,7 +2,7 @@
   <el-container>
     <el-main class="el-main-padding">
       <el-row>
-        <el-col :span="8">
+        <el-col :span="7">
           <el-form>
             <el-form-item label="考试批次">
               <el-select
@@ -26,7 +26,32 @@
             </el-form-item>
           </el-form>
         </el-col>
-        <el-col :span="16">
+        <el-col :span="7">
+          <el-form>
+            <el-form-item label="场次">
+              <el-select
+                clearable
+                :disabled="examStageDisabled4Search"
+                :remote-method="queryExamStages4Search"
+                remote
+                :loading="queryExamStages4SearchLoading"
+                :filterable="false"
+                v-model="examStageId"
+                placeholder="请选择"
+                size="small"
+                @change="changeExamStage"
+              >
+                <el-option
+                  v-for="item in examStageList4Search"
+                  :label="item.stageOrder"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="10">
           <el-form>
             <el-form-item label="考试数据同步状态">
               <el-progress
@@ -239,6 +264,7 @@ import "echarts/lib/component/tooltip";
 import "echarts/lib/component/title";
 import "echarts/lib/chart/bar";
 import "echarts/lib/chart/line";
+import { EXAM_WORK_API } from "@/constants/constants";
 export default {
   components: { "v-chart": ECharts },
   data() {
@@ -247,6 +273,7 @@ export default {
       orgList: [],
       courseList: [],
       examId: "",
+      examStageId: "",
       orgId: "",
       courseId: "",
       activeName: "first",
@@ -256,7 +283,11 @@ export default {
       pieOptions: {},
       exportOrgLoading: false,
       exportCourseLoading: false,
-      examSyncPercentage: 0
+      examSyncPercentage: 0,
+      examStageDisabled4Search: true,
+      queryExamStages4SearchLoading: false,
+      examStageList4Search: [],
+      currentExamType: null
     };
   },
   computed: {
@@ -303,6 +334,8 @@ export default {
         .post(
           "/api/ecs_oe_admin/exam/student/statistic/by/org?examId=" +
             this.examId +
+            "&examStageId=" +
+            this.examStageId +
             "&orgId=" +
             this.orgId
         )
@@ -319,6 +352,7 @@ export default {
         .get("/api/ecs_oe_admin/exam/student/courseProgress/list", {
           params: {
             examId: this.examId,
+            examStageId: this.examstageId,
             courseId: this.courseId
           }
         })
@@ -340,6 +374,7 @@ export default {
         .get("/api/ecs_oe_admin/exam/student/findCoursesByExamIdAndOrgId", {
           params: {
             examId: this.examId,
+            examStageId: this.examStageId,
             orgId: this.orgId
           }
         })
@@ -355,11 +390,37 @@ export default {
       var exam = this.examList.filter(item => {
         return item.id == examId;
       })[0];
-      this.getPieData(exam.examType);
+      this.currentExamType = exam.examType;
+      this.getPieData(this.currentExamType);
+      this.getCourses();
+      this.getOrgExamInfos();
+      this.getCourseProgress();
+
+      //场次联动
+      if (this.examList.length > 0) {
+        let examArr = this.examList.filter(p => p.id == examId);
+        if (examArr && examArr.length > 0) {
+          let exam = examArr[0];
+          if (
+            exam.specialSettingsEnabled &&
+            exam.specialSettingsType == "STAGE_BASED"
+          ) {
+            this.examStageDisabled4Search = false;
+            this.queryExamStages4Search("");
+          } else {
+            this.examStageList4Search = [];
+            this.examStageDisabled4Search = true;
+          }
+        }
+      }
+    },
+    changeExamStage() {
+      this.getPieData(this.currentExamType);
       this.getCourses();
       this.getOrgExamInfos();
       this.getCourseProgress();
     },
+
     getPieData(examType) {
       var completedWord =
         examType == "ONLINE" || examType == "ONLINE_HOMEWORK"
@@ -375,7 +436,9 @@ export default {
       this.$http
         .post(
           "/api/ecs_oe_admin/exam/student/statistic/by/finished?examId=" +
-            this.examId
+            this.examId +
+            "&examStageId=" +
+            this.examStageId
         )
         .then(response => {
           var resp = response.data;
@@ -638,6 +701,33 @@ export default {
             type: "error"
           });
         });
+    },
+    queryExamStages4Search(name) {
+      this.queryExamStages(this.examId, name, "search");
+    },
+    queryExamStages(examId, name, where) {
+      debugger;
+      console.log("queryExams; name: " + name);
+      let url =
+        EXAM_WORK_API +
+        "/examStage/queryByNameLike?examId=" +
+        examId +
+        "&enable=true&name=" +
+        name;
+      this.$httpWithMsg
+        .get(url)
+        .then(response => {
+          if ("search" == where) {
+            this.queryExamStages4SearchLoading = false;
+            this.examStageList4Search = response.data;
+          }
+        })
+        .catch(response => {
+          console.log(response);
+          if ("search" == where) {
+            this.queryExamStages4SearchLoading = false;
+          }
+        });
     }
   },
   created() {

+ 2 - 0
src/modules/oe/views/reexamine.vue

@@ -142,6 +142,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         faceSuccessPercentLower: null,
         faceSuccessPercentUpper: null,
         livenessSuccessPercentLower: null,
@@ -186,6 +187,7 @@ export default {
         courseId: null,
         courseLevel: null,
         examId: null,
+        examStageId: null,
         faceSuccessPercentLower: null,
         faceSuccessPercentUpper: null,
         livenessSuccessPercentLower: null,