|
@@ -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>
|
|
|