|
@@ -0,0 +1,247 @@
|
|
|
|
+<template>
|
|
|
|
+ <el-container>
|
|
|
|
+ <el-header> <div class="header-title">抓拍详情</div> </el-header>
|
|
|
|
+ <el-main>
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="6">
|
|
|
|
+ <img :src="studentBasePhotoPath" alt="" width="180" />
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="18">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="16" class="capture-title"
|
|
|
|
+ ><span>监考数据ID:{{ examRecordDataId }}</span></el-col
|
|
|
|
+ >
|
|
|
|
+ <el-col :span="8" style="text-align: right;">
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="showAudit"
|
|
|
|
+ type="success"
|
|
|
|
+ icon="el-icon-success"
|
|
|
|
+ circle
|
|
|
|
+ title="通过"
|
|
|
|
+ ></el-button>
|
|
|
|
+
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="showAudit"
|
|
|
|
+ type="danger"
|
|
|
|
+ icon="el-icon-error"
|
|
|
|
+ title="不通过"
|
|
|
|
+ circle
|
|
|
|
+ @click="openAuditDialog"
|
|
|
|
+ ></el-button>
|
|
|
|
+ <el-button
|
|
|
|
+ icon="el-icon-back"
|
|
|
|
+ type="info"
|
|
|
|
+ title="返回"
|
|
|
|
+ circle
|
|
|
|
+ ></el-button
|
|
|
|
+ ></el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row class="margin-top-10">
|
|
|
|
+ <el-col :span="24">
|
|
|
|
+ <el-table :data="examAuditData" border>
|
|
|
|
+ <el-table-column sortable label="学号" prop="studentCode">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="身份证号"
|
|
|
|
+ prop="identityNumber"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column sortable label="姓名" prop="studentName">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column sortable label="课程代码" prop="courseCode">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column sortable label="课程名称" prop="courseName">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row class="margin-top-10">
|
|
|
|
+ <el-col :span="24">
|
|
|
|
+ <el-table :data="examAuditData" border>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="校验次数"
|
|
|
|
+ prop="faceTotalCount"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="成功次数"
|
|
|
|
+ prop="faceSuccessCount"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="陌生人"
|
|
|
|
+ prop="faceStrangerCount"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="成功率(%)"
|
|
|
|
+ prop="faceSuccessPercent"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="违纪类型"
|
|
|
|
+ prop="disciplineType"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column
|
|
|
|
+ sortable
|
|
|
|
+ label="违纪说明"
|
|
|
|
+ prop="disciplineDetail"
|
|
|
|
+ >
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column sortable label="审核结果" prop="status">
|
|
|
|
+ </el-table-column> </el-table
|
|
|
|
+ ></el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row class="margin-top-10 photorow">
|
|
|
|
+ <el-col
|
|
|
|
+ :span="6"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ v-for="item in capturesList"
|
|
|
|
+ class="photocol"
|
|
|
|
+ >
|
|
|
|
+ <div class="photo-nopass" v-show="item.pass">通过</div>
|
|
|
|
+ <div class="photo-nopass" v-show="!item.pass">不通过</div>
|
|
|
|
+ <img class="photo" :src="item.fileUrl" alt="" width="200" />
|
|
|
|
+ <div class="photo-stranger" v-show="item.stranger">陌生人</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-dialog title="审核" :visible.sync="dialogFormVisible">
|
|
|
|
+ <auditVue :auditForm="auditForm"
|
|
|
|
+ ><div class="dialog-footer">
|
|
|
|
+ <el-button @click="dialogFormVisible = false;">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="doAudit">确 定</el-button>
|
|
|
|
+ </div></auditVue
|
|
|
|
+ >
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </el-main>
|
|
|
|
+ </el-container>
|
|
|
|
+</template>
|
|
|
|
+<script>
|
|
|
|
+import { mapState } from "vuex";
|
|
|
|
+import auditVue from "../component/audit.vue";
|
|
|
|
+export default {
|
|
|
|
+ components: { auditVue },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ examRecordDataId: "",
|
|
|
|
+ examAuditData: [],
|
|
|
|
+ examRecordData: [],
|
|
|
|
+ capturesList: [],
|
|
|
|
+ studentBasePhotoPath: "",
|
|
|
|
+ showAudit: false,
|
|
|
|
+ dialogFormVisible: false,
|
|
|
|
+ auditForm: {
|
|
|
|
+ examRecordDataId: null,
|
|
|
|
+ disciplineType: "",
|
|
|
|
+ disciplineDetail: "",
|
|
|
|
+ isPass: null
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState({ user: state => state.user })
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ getExamAuditData() {
|
|
|
|
+ var param = new URLSearchParams({
|
|
|
|
+ examRecordDataId: this.examRecordDataId
|
|
|
|
+ });
|
|
|
|
+ this.$http
|
|
|
|
+ .post("/api/ecs_oe_admin/exam/capture/audit/detail", param)
|
|
|
|
+ .then(response => {
|
|
|
|
+ if (response.data) {
|
|
|
|
+ this.showAudit = response.data.isWarn && !response.data.isAudit;
|
|
|
|
+ this.examAuditData.push(response.data);
|
|
|
|
+ var studentId = response.data.studentId;
|
|
|
|
+ this.getStudentInfo(studentId);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ 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/" + studentId).then(response => {
|
|
|
|
+ if (response.data.photoPath) {
|
|
|
|
+ var prefix =
|
|
|
|
+ "http://exam-cloud-test.b0.upaiyun.com/student_base_photo/";
|
|
|
|
+ this.studentBasePhotoPath = prefix + response.data.photoPath;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ openAuditDialog() {
|
|
|
|
+ this.dialogFormVisible = true;
|
|
|
|
+ this.auditForm = {
|
|
|
|
+ examRecordDataId: this.examRecordDataId,
|
|
|
|
+ disciplineType: "",
|
|
|
|
+ disciplineDetail: "",
|
|
|
|
+ isPass: false
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ doAudit() {}
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ //this.examRecordDataId = this.$route.query.examRecordDataId;
|
|
|
|
+ this.examRecordDataId = 1136;
|
|
|
|
+ this.getExamAuditData();
|
|
|
|
+ this.listExamCapture();
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+</script>
|
|
|
|
+<style scoped>
|
|
|
|
+.margin-top-10 {
|
|
|
|
+ margin-top: 10px;
|
|
|
|
+}
|
|
|
|
+.capture-title {
|
|
|
|
+ font-size: 20px;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+}
|
|
|
|
+.photorow {
|
|
|
|
+ border: 1px solid #ebeef5;
|
|
|
|
+ text-align: center;
|
|
|
|
+ padding-left: 30px;
|
|
|
|
+}
|
|
|
|
+.photocol {
|
|
|
|
+ position: relative;
|
|
|
|
+ margin-top: 5px;
|
|
|
|
+}
|
|
|
|
+.photo {
|
|
|
|
+ display: block;
|
|
|
|
+ width: 208px;
|
|
|
|
+ height: 159px;
|
|
|
|
+}
|
|
|
|
+.photo-nopass {
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 2px;
|
|
|
|
+ width: 208px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ color: white;
|
|
|
|
+ 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);
|
|
|
|
+}
|
|
|
|
+</style>
|