|
@@ -0,0 +1,354 @@
|
|
|
+<template>
|
|
|
+ <el-container>
|
|
|
+ <el-header> <div class="header-title">监考待审</div> </el-header>
|
|
|
+ <el-main>
|
|
|
+ <commonFormVue :form="form" :getExamCondition="getExamCondition">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="考试ID">
|
|
|
+ <el-input v-model="form.examRecordDataId"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="需要审核">
|
|
|
+ <el-select v-model="form.isWarn" clearable placeholder="全部">
|
|
|
+ <el-option value="true" label="是"></el-option>
|
|
|
+ <el-option value="false" label="否"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="陌生人脸">
|
|
|
+ <el-select v-model="form.hasStranger" clearable placeholder="全部">
|
|
|
+ <el-option value="true" label="有"></el-option>
|
|
|
+ <el-option value="false" label="无"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="人脸识别成功率">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="form.faceSuccessPercentLower"
|
|
|
+ label="下限"
|
|
|
+ ></el-input>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"> </el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="form.faceSuccessPercentUpper"
|
|
|
+ label="上限"
|
|
|
+ ></el-input>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="人脸真实性比率">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="form.livenessSuccessPercentLower"
|
|
|
+ label="下限"
|
|
|
+ ></el-input>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2"> </el-col>
|
|
|
+ <el-col :span="10">
|
|
|
+ <el-input
|
|
|
+ size="mini"
|
|
|
+ v-model="form.livenessSuccessPercentUpper"
|
|
|
+ label="上限"
|
|
|
+ ></el-input>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </commonFormVue>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-button @click="search" size="medium" type="primary"
|
|
|
+ >查询</el-button
|
|
|
+ >
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" style="text-align: right;">
|
|
|
+ <el-button-group>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :disabled="batchAuditBtnDisabled"
|
|
|
+ @click="batchAudit('pass');"
|
|
|
+ >通过</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :disabled="batchAuditBtnDisabled"
|
|
|
+ @click="batchAudit('nopass');"
|
|
|
+ >不通过
|
|
|
+ </el-button>
|
|
|
+ </el-button-group>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="margin-top-10"
|
|
|
+ ><el-col :span="24">
|
|
|
+ <el-table
|
|
|
+ v-loading="tableLoading"
|
|
|
+ element-loading-text="数据加载中"
|
|
|
+ ref="multipleTable"
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ :data="tableData"
|
|
|
+ border
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ type="selection"
|
|
|
+ width="55"
|
|
|
+ :selectable="selectable"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="考试ID" prop="dataId">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="姓名" prop="studentName">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="身份证号" prop="identityNumber">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="学号" prop="studentCode">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="学习中心" prop="orgName">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="课程" prop="courseName">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column sortable label="课程层次" prop="courseLevel">
|
|
|
+ </el-table-column>
|
|
|
+ <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="baiduFaceLivenessSuccessPercent"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.isWarn"
|
|
|
+ size="mini"
|
|
|
+ type="success"
|
|
|
+ icon="el-icon-success"
|
|
|
+ >通过</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.isWarn"
|
|
|
+ size="mini"
|
|
|
+ type="danger"
|
|
|
+ icon="el-icon-error"
|
|
|
+ @click="openAuditDialog(scope.row.dataId);"
|
|
|
+ >不通过
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="block">
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page.sync="form.pageNo"
|
|
|
+ :page-sizes="[10, 30, 50, 100]"
|
|
|
+ :page-size="form.pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="total"
|
|
|
+ >
|
|
|
+ </el-pagination></div></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 commonFormVue from "../component/commonForm.vue";
|
|
|
+import auditVue from "../component/audit.vue";
|
|
|
+export default {
|
|
|
+ components: { commonFormVue, auditVue },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ total: 0,
|
|
|
+ tableLoading: false,
|
|
|
+ exportLoading: false,
|
|
|
+ dialogFormVisible: false,
|
|
|
+ form: {
|
|
|
+ examRecordDataId: null,
|
|
|
+ hasStranger: null,
|
|
|
+ courseId: null,
|
|
|
+ courseLevel: null,
|
|
|
+ examId: null,
|
|
|
+ examRecordId: null,
|
|
|
+ faceSuccessPercentLower: null,
|
|
|
+ faceSuccessPercentUpper: null,
|
|
|
+ livenessSuccessPercentLower: null,
|
|
|
+ livenessSuccessPercentUpper: null,
|
|
|
+ identityNumber: null,
|
|
|
+ orgId: null,
|
|
|
+ studentCode: null,
|
|
|
+ studentName: null,
|
|
|
+ isWarn: null,
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10
|
|
|
+ },
|
|
|
+ auditForm: {
|
|
|
+ examRecordDataId: null,
|
|
|
+ disciplineType: "",
|
|
|
+ disciplineDetail: "",
|
|
|
+ isPass: null
|
|
|
+ },
|
|
|
+ getExamCondition: {
|
|
|
+ params: {
|
|
|
+ name: "",
|
|
|
+ examTypes: "ONLINE",
|
|
|
+ propertyKeys: "IS_FACE_ENABLE"
|
|
|
+ },
|
|
|
+ filterCondition: "IS_FACE_ENABLE"
|
|
|
+ },
|
|
|
+ tableData: [],
|
|
|
+ multipleSelection: [],
|
|
|
+ batchAuditBtnDisabled: true
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState({ user: state => state.user })
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ search() {
|
|
|
+ if (!this.form.examId) {
|
|
|
+ this.$notify({
|
|
|
+ title: "警告",
|
|
|
+ message: "请选择考试批次",
|
|
|
+ type: "warning",
|
|
|
+ duration: 1000
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ this.tableLoading = true;
|
|
|
+ this.$http
|
|
|
+ .post("/api/ecs_oe_admin/exam/record/waiting/audit/list", this.form)
|
|
|
+ .then(response => {
|
|
|
+ if (response.data) {
|
|
|
+ this.tableData = response.data.content;
|
|
|
+ this.total = response.data.totalElements;
|
|
|
+ } else {
|
|
|
+ this.tableData = [];
|
|
|
+ }
|
|
|
+ this.tableLoading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ selectable(row) {
|
|
|
+ return row.isWarn;
|
|
|
+ },
|
|
|
+ handleSelectionChange(val) {
|
|
|
+ this.multipleSelection = val;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * pagesize改变时触发
|
|
|
+ */
|
|
|
+ handleSizeChange(val) {
|
|
|
+ this.form.pageSize = val;
|
|
|
+ this.search();
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 当前页改变时触发
|
|
|
+ */
|
|
|
+ handleCurrentChange() {
|
|
|
+ this.search();
|
|
|
+ },
|
|
|
+ batchAudit(operate) {
|
|
|
+ var isPass = operate == "pass" ? true : false;
|
|
|
+ this.$confirm("确定执行?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ var examRecordDataIds = [];
|
|
|
+ for (var i = 0; i < this.multipleSelection.length; i++) {
|
|
|
+ examRecordDataIds.push(this.multipleSelection[i].dataId);
|
|
|
+ }
|
|
|
+ var param = new URLSearchParams({
|
|
|
+ examRecordDataIds: examRecordDataIds,
|
|
|
+ isPass: isPass
|
|
|
+ });
|
|
|
+ this.$http
|
|
|
+ .post("/api/ecs_oe_admin/exam/audit/batch/audit", param)
|
|
|
+ .then(() => {
|
|
|
+ this.$notify({
|
|
|
+ title: "成功",
|
|
|
+ message: "操作成功",
|
|
|
+ type: "success"
|
|
|
+ });
|
|
|
+ this.search();
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ openAuditDialog(examRecordDataId) {
|
|
|
+ this.dialogFormVisible = true;
|
|
|
+ this.auditForm = {
|
|
|
+ examRecordDataId: examRecordDataId,
|
|
|
+ disciplineType: "",
|
|
|
+ disciplineDetail: "",
|
|
|
+ isPass: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ doAudit() {
|
|
|
+ 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.search();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ multipleSelection: function() {
|
|
|
+ this.batchAuditBtnDisabled = !(this.multipleSelection.length > 0);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {}
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scope>
|
|
|
+.el-row {
|
|
|
+ position: static !important;
|
|
|
+}
|
|
|
+.margin-top-10 {
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+</style>
|