Explorar el Código

Merge branch 'dev_v5.0.4' of http://git.qmth.com.cn/examcloud-frontend/examcloud-admin-web into dev_v5.0.4

刘洋 hace 10 meses
padre
commit
0b322519ee
Se han modificado 2 ficheros con 0 adiciones y 585 borrados
  1. 0 6
      src/modules/oe/routes/routes.js
  2. 0 579
      src/modules/oe/views/captureDetail.vue

+ 0 - 6
src/modules/oe/routes/routes.js

@@ -8,7 +8,6 @@ import illegalityType from "../views/illegalityType.vue";
 import scoreDetail from "../views/scoreDetail.vue";
 import examDetail from "../views/examDetail.vue";
 import examScheduling from "../views/examScheduling.vue";
-import captureDetail from "../views/captureDetail.vue";
 import examPaperDetail from "../views/examPaperDetail.vue";
 import examSummary from "../views/examSummary.vue";
 import exportTaskList from "../views/export_task_list.vue";
@@ -81,11 +80,6 @@ export default [
         name: "examScheduling",
         component: examScheduling, //考试进度详情
       },
-      {
-        path: "captureDetail/:examRecordDataId/:from",
-        name: "captureDetail",
-        component: captureDetail, //抓拍详情
-      },
       {
         path: "examSummary",
         name: "examSummary",

+ 0 - 579
src/modules/oe/views/captureDetail.vue

@@ -1,579 +0,0 @@
-<template>
-  <el-container>
-    <el-header id="capture-detail-header">
-      <LinkTitlesCustom :current-paths="currentPaths" />
-    </el-header>
-    <el-main style="overflow: unset; margin-left: 20px" class="el-main-padding">
-      <el-row>
-        <el-col :span="5">
-          <img :src="studentBasePhotoPath" alt width="180" />
-          <img :src="syncCapturePhotoPath" alt class="syncPhto" />
-        </el-col>
-        <el-col :span="19">
-          <el-row>
-            <el-col :span="8" class="capture-title">
-              <span>考试记录ID:{{ examRecordDataId }}</span>
-            </el-col>
-            <el-col v-if="showAudit" :span="8" style="text-align: center">
-              <el-button
-                circle
-                size="small"
-                type="primary"
-                icon="el-icon-d-arrow-left"
-                title="上一条"
-                @click="openNextAuditDetail('0')"
-              ></el-button>
-              <el-button
-                size="small"
-                type="success"
-                icon="el-icon-success"
-                title="通过"
-                @click="auditPass"
-                >通过</el-button
-              >
-              <el-button
-                size="small"
-                type="danger"
-                icon="el-icon-error"
-                title="不通过"
-                @click="openAuditDialog"
-                >不通过</el-button
-              >
-              <el-button
-                circle
-                size="small"
-                type="primary"
-                icon="el-icon-d-arrow-right"
-                title="下一条"
-                @click="openNextAuditDetail('1')"
-              ></el-button>
-            </el-col>
-            <el-col v-if="showAudit" :span="8" style="text-align: right">
-              <el-button
-                size="small"
-                icon="el-icon-arrow-left"
-                type="primary"
-                @click="back"
-                >返回</el-button
-              >
-            </el-col>
-            <el-col v-if="!showAudit" :span="16" style="text-align: right">
-              <el-button
-                size="small"
-                icon="el-icon-arrow-left"
-                type="primary"
-                @click="back"
-                >返回</el-button
-              >
-            </el-col>
-          </el-row>
-          <el-row class="margin-top-10">
-            <el-col :span="24">
-              <el-table :data="examAuditData" border>
-                <el-table-column
-                  label="姓名"
-                  prop="studentName"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column
-                  label="身份证号"
-                  prop="identityNumber"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column
-                  label="学号"
-                  prop="studentCode"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column
-                  label="课程代码"
-                  prop="courseCode"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column
-                  label="课程名称"
-                  prop="courseName"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column label="课程层次" width="80">
-                  <template slot-scope="scope">
-                    <span v-html="getLevel(scope.row.courseLevel)"></span>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  label="客观题总分"
-                  prop="objectiveTotalScore"
-                  width="95"
-                ></el-table-column>
-                <el-table-column
-                  label="学习中心"
-                  prop="orgName"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column
-                  label="年级"
-                  width="60"
-                  prop="grade"
-                ></el-table-column>
-              </el-table>
-            </el-col>
-          </el-row>
-          <el-row class="margin-top-20">
-            <el-col :span="24">
-              <el-table :data="examAuditData" border>
-                <el-table-column
-                  label="切屏次数"
-                  prop="switchScreenCount"
-                  width="80"
-                ></el-table-column>
-                <el-table-column
-                  label="校验次数"
-                  prop="faceTotalCount"
-                  width="80"
-                ></el-table-column>
-                <el-table-column
-                  label="成功次数"
-                  prop="faceSuccessCount"
-                  width="80"
-                ></el-table-column>
-                <el-table-column
-                  label="陌生人次数"
-                  prop="faceStrangerCount"
-                  width="95"
-                ></el-table-column>
-                <el-table-column
-                  width="100"
-                  label="人脸比对(%)"
-                  prop="faceSuccessPercent"
-                ></el-table-column>
-                <el-table-column
-                  width="115"
-                  label="人脸真实性(%)"
-                  prop="baiduFaceLivenessSuccessPercent"
-                ></el-table-column>
-                <el-table-column
-                  min-width="90px"
-                  label="虚拟设备"
-                  prop="virtualCameraNames"
-                ></el-table-column>
-                <el-table-column
-                  label="违纪类型"
-                  prop="disciplineType"
-                  min-width="90px"
-                ></el-table-column>
-                <el-table-column label="违纪说明" min-width="90px">
-                  <template slot-scope="scope">
-                    <span
-                      v-html="disciplineTypeFilter(scope.row.disciplineDetail)"
-                    ></span>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  width="80"
-                  label="审核结果"
-                  prop="status"
-                ></el-table-column>
-              </el-table>
-            </el-col>
-          </el-row>
-          <el-row class="margin-top-10 photorow">
-            <el-col
-              v-for="item in capturesList"
-              :key="item.id"
-              :span="6"
-              class="photocol"
-            >
-              <div v-show="item.pass" class="photo-pass">通过</div>
-              <div v-show="!item.pass" class="photo-nopass">不通过</div>
-              <img class="photo" :src="item.fileUrl" alt width="200" />
-              <div v-show="item.stranger" class="photo-stranger">陌生人</div>
-              <div
-                v-show="!item.isFacelivenessPass"
-                class="photo-facelivenessPass"
-              >
-                <i class="el-icon-warning" title="真实性不通过"></i>
-              </div>
-            </el-col>
-          </el-row>
-          <el-row class="margin-top-20">
-            <el-col :span="24">
-              <el-table :data="examProcessRecordData" border>
-                <el-table-column
-                  label="考试过程"
-                  prop="processName"
-                  width="180"
-                ></el-table-column>
-                <el-table-column
-                  label="记录时间"
-                  prop="recordTime"
-                  width="180"
-                ></el-table-column>
-                <el-table-column
-                  label="客户端IP"
-                  prop="sourceIp"
-                ></el-table-column>
-              </el-table>
-            </el-col>
-          </el-row>
-        </el-col>
-      </el-row>
-      <el-dialog title="审核" :visible.sync="dialogFormVisible">
-        <el-form ref="auditForm" :model="auditForm">
-          <el-form-item
-            label="违纪类型"
-            prop="illegallyTypeId"
-            :rules="[
-              { required: true, message: '请选择违纪类型', trigger: 'change' },
-            ]"
-          >
-            <el-select
-              v-model="auditForm.illegallyTypeId"
-              filterable
-              remote
-              :remote-method="getDisciplineTypeList"
-              clearable
-              placeholder="请选择"
-              size="small"
-              @clear="getDisciplineTypeList"
-            >
-              <el-option
-                v-for="item in disciplineTypeList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="详情描述" style="margin-top: 15px">
-            <el-input
-              v-model="auditForm.disciplineDetail"
-              type="textarea"
-              :autosize="{ minRows: 6, maxRows: 10 }"
-              placeholder="请输入内容"
-            ></el-input>
-          </el-form-item>
-          <div class="dialog-footer margin-top-10 text-center">
-            <el-button type="primary" @click="doAuditNoPass">确 定</el-button>
-            <el-button @click="dialogFormVisible = false">取 消</el-button>
-          </div>
-        </el-form>
-      </el-dialog>
-    </el-main>
-  </el-container>
-</template>
-<script>
-import { mapState } from "vuex";
-import LinkTitlesCustom from "@/components/LinkTitlesCustom.vue";
-export default {
-  components: { LinkTitlesCustom },
-  data() {
-    return {
-      examRecordDataId: "",
-      examAuditData: [],
-      examRecordData: [],
-      capturesList: [],
-      studentBasePhotoPath: "",
-      syncCapturePhotoPath: "",
-      showAudit: false,
-      dialogFormVisible: false,
-      auditForm: {
-        examRecordDataId: null,
-        illegallyTypeId: null,
-        disciplineDetail: "",
-        isPass: null,
-      },
-      currentPaths: ["抓拍详情"],
-      disciplineTypeList: [],
-      pendingOperate: false,
-      searchParam: {},
-      orderDesc: true,
-      first: false,
-      last: false,
-      examProcessRecordData: [],
-    };
-  },
-  computed: {
-    ...mapState({ user: (state) => state.user }),
-  },
-  created() {
-    this.examRecordDataId = this.$route.params.examRecordDataId;
-    this.pendingOperate = this.$route.query.pendingOperate;
-    if (this.$route.query.searchParam) {
-      this.searchParam = JSON.parse(this.$route.query.searchParam);
-    }
-    var fromPage = this.$route.params.from;
-    var currentPathJson = {
-      illegalityNameList: ["违纪名单", "抓拍详情"],
-      awaitingAudit: ["监考待审", "抓拍详情"],
-      alreadyAudited: ["监考已审", "抓拍详情"],
-      examDetail: ["考试明细", "抓拍详情"],
-    };
-    this.currentPaths = currentPathJson[fromPage];
-    this.getExamAuditData();
-    this.listExamCapture();
-    this.getDisciplineTypeList("");
-    this.getExamProcessRecordData();
-  },
-  methods: {
-    getDisciplineTypeList(name) {
-      if (!name) {
-        name = "";
-      }
-      this.$http
-        .get("/api/ecs_oe_admin/illegallyType/queryByNameLike", {
-          params: { name, queryScope: "audit" },
-        })
-        .then((response) => {
-          this.disciplineTypeList = response.data;
-        });
-    },
-    getExamAuditData() {
-      var param = new URLSearchParams({
-        examRecordDataId: this.examRecordDataId,
-      });
-      let isPendingAudit = this.pendingOperate;
-      this.$http
-        .post("/api/ecs_oe_admin/exam/capture/audit/detail", param)
-        .then((response) => {
-          if (response.data) {
-            this.showAudit =
-              isPendingAudit == "true" &&
-              response.data.isWarn &&
-              !response.data.isAudit;
-            // if (response.data.virtualCameraNames === "") {
-            //   response.data.virtualCameraNames = ";";
-            // }
-            this.examAuditData = new Array(response.data);
-            var studentId = response.data.studentId;
-            this.syncCapturePhotoPath = response.data.syncCaptureFileUrl;
-            this.getStudentInfo(studentId);
-          }
-        });
-    },
-    getExamProcessRecordData() {
-      // var param = new URLSearchParams({
-      //   examRecordDataId: this.examRecordDataId,
-      // });
-      let url =
-        "/api/ecs_oe_admin/exam/capture/getExamProcessRecords?examRecordDataId=" +
-        this.examRecordDataId;
-      this.$http.get(url).then((response) => {
-        if (response.data) {
-          this.examProcessRecordData = response.data;
-        }
-      });
-    },
-    listExamCapture() {
-      var param = new URLSearchParams({
-        examRecordDataId: this.examRecordDataId,
-      });
-      this.$http
-        .post("/api/ecs_oe_admin/exam/capture/list", param)
-        .then((response) => {
-          this.capturesList = response.data;
-        });
-    },
-    getStudentInfo(studentId) {
-      this.$http
-        .get("/api/ecs_core/student/getStudentInfo?studentId=" + studentId)
-        .then((response) => {
-          if (response.data.photoPath) {
-            this.studentBasePhotoPath = response.data.photoPath;
-          }
-        });
-    },
-    /**
-     * 审核通过
-     */
-    auditPass() {
-      var auditParams = {
-        examRecordDataId: this.examRecordDataId,
-        isPass: true,
-      };
-      var param = new URLSearchParams(auditParams);
-      this.$http
-        .post("/api/ecs_oe_admin/exam/audit/single/audit", param)
-        .then(() => {
-          this.$notify({
-            title: "成功",
-            message: "操作成功",
-            type: "success",
-          });
-          this.auditNext();
-        });
-    },
-    auditNext() {
-      var url =
-        "/api/ecs_oe_admin/exam/record/waiting/audit/next?examRecordDataId=" +
-        this.examRecordDataId +
-        "&next=1";
-      this.$http.post(url, this.searchParam).then((response) => {
-        if (response.data) {
-          this.examRecordDataId = response.data;
-          this.getExamAuditData();
-          this.listExamCapture();
-          this.getDisciplineTypeList("");
-          this.getExamProcessRecordData();
-        } else {
-          this.$notify({
-            title: "成功",
-            message: "审核完毕",
-            type: "success",
-          });
-          this.back();
-        }
-      });
-    },
-    /**
-     * 下一条
-     */
-    openNextAuditDetail(next) {
-      var url =
-        "/api/ecs_oe_admin/exam/record/waiting/audit/next?examRecordDataId=" +
-        this.examRecordDataId +
-        "&next=" +
-        next;
-      this.$http.post(url, this.searchParam).then((response) => {
-        if (response.data) {
-          this.examRecordDataId = response.data;
-          this.getExamAuditData();
-          this.listExamCapture();
-          this.getDisciplineTypeList("");
-          this.getExamProcessRecordData();
-        } else {
-          var msg = "最后";
-          if (next === "0") {
-            msg = "第";
-          }
-          this.$notify({
-            title: "警告",
-            message: "当前数据为" + msg + "一条",
-            type: "warning",
-          });
-        }
-      });
-    },
-    openAuditDialog() {
-      this.dialogFormVisible = true;
-      this.auditForm = {
-        examRecordDataId: this.examRecordDataId,
-        illegallyTypeId: null,
-        disciplineDetail: "",
-        isPass: false,
-      };
-    },
-    doAuditNoPass() {
-      this.$refs["auditForm"].validate((valid) => {
-        if (valid) {
-          var param = new URLSearchParams(this.auditForm);
-          this.$http
-            .post("/api/ecs_oe_admin/exam/audit/single/audit", param)
-            .then(() => {
-              this.$notify({
-                title: "成功",
-                message: "操作成功",
-                type: "success",
-              });
-              this.dialogFormVisible = false;
-              this.auditNext();
-            });
-        } else {
-          return false;
-        }
-      });
-    },
-    back() {
-      this.$router.back();
-    },
-    disciplineTypeFilter: function (value) {
-      if (value && value.indexOf("&&") > -1) {
-        var arr = value.split("&&");
-        var detail = "";
-        for (var i = 0; i < arr.length; i++) {
-          detail += arr[i] + "<br>";
-        }
-        return detail;
-      } else {
-        return value;
-      }
-    },
-    getLevel(level) {
-      if (level == "ZSB") {
-        return "专升本";
-      } else if (level == "GQZ") {
-        return "高起专";
-      } else if (level == "GQB") {
-        return "高起本";
-      } else {
-        return "不限";
-      }
-    },
-  },
-};
-</script>
-<style scoped>
-#capture-detail-header {
-  height: 15px !important;
-}
-.capture-title {
-  font-size: 20px;
-  font-weight: bold;
-}
-.photorow {
-  border: 1px solid #ebeef5;
-  text-align: center;
-}
-.photocol {
-  position: relative;
-  margin: 20px 10px 0 10px;
-}
-.photo {
-  display: block;
-  width: 208px;
-  height: 159px;
-  object-fit: contain;
-}
-.photo-pass {
-  position: absolute;
-  top: 2px;
-  width: 208px;
-  text-align: center;
-  color: white;
-  font-size: 12px;
-  background-color: rgba(10, 10, 10, 0.4);
-}
-.photo-nopass {
-  position: absolute;
-  top: 2px;
-  width: 208px;
-  text-align: center;
-  color: red;
-  font-size: 12px;
-  background-color: rgba(10, 10, 10, 0.4);
-}
-.photo-stranger {
-  position: absolute;
-  top: 140px;
-  width: 208px;
-  text-align: center;
-  color: red;
-  font-size: 12px;
-  background-color: rgba(10, 10, 10, 0.4);
-}
-.photo-facelivenessPass {
-  position: absolute;
-  top: 160px;
-  width: 208px;
-  font-size: 14px;
-  text-align: center;
-  color: red;
-}
-.syncPhto {
-  margin-top: 30px;
-  display: block;
-  width: 180px;
-  height: 159px;
-  object-fit: contain;
-}
-</style>
-<style scoped src="../style/common.css"></style>