|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
+ <div v-loading="!orgSetting">
|
|
|
<el-tabs v-model="activeName" type="card">
|
|
|
<el-tab-pane label="考试规则设置" name="first">
|
|
|
<el-form
|
|
@@ -224,6 +224,8 @@
|
|
|
</el-radio>
|
|
|
<el-radio
|
|
|
v-model="form.entryAuthenticationPolicy"
|
|
|
+ :disabled="orgSettingDisableLiveness"
|
|
|
+ :title="orgSettingDisableLiveness && '原因:机构禁用活体'"
|
|
|
label="LIVENESS_VERIFY"
|
|
|
>
|
|
|
安全级别:<span style="color: red; font-size: 20px;">
|
|
@@ -239,12 +241,14 @@
|
|
|
<el-form-item label="是否考中人脸识别">
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.inProcessFaceVerify"
|
|
|
:label="1"
|
|
|
>是
|
|
|
</el-radio>
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.inProcessFaceVerify"
|
|
|
:label="0"
|
|
|
>否
|
|
@@ -255,12 +259,14 @@
|
|
|
<el-form-item label="是否考中陌生人脸识别">
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.inProcessFaceStrangerIgnore"
|
|
|
:label="0"
|
|
|
>是
|
|
|
</el-radio>
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.inProcessFaceStrangerIgnore"
|
|
|
:label="1"
|
|
|
>否
|
|
@@ -271,12 +277,14 @@
|
|
|
<el-form-item label="是否考开启真实性检测">
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.inProcessRealnessVerify"
|
|
|
:label="1"
|
|
|
>是
|
|
|
</el-radio>
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.inProcessRealnessVerify"
|
|
|
:label="0"
|
|
|
>否
|
|
@@ -286,13 +294,25 @@
|
|
|
<el-row>
|
|
|
<el-form-item label="是否考中活体检测">
|
|
|
<el-radio
|
|
|
- :disabled="!!form.cameraPhotoUpload"
|
|
|
+ :disabled="
|
|
|
+ !!form.cameraPhotoUpload || orgSettingDisableLiveness
|
|
|
+ "
|
|
|
+ :title="
|
|
|
+ (!!form.cameraPhotoUpload || orgSettingDisableLiveness) &&
|
|
|
+ '原因:机构禁用活体或选择拍照作答'
|
|
|
+ "
|
|
|
v-model="form.inProcessLivenessVerify"
|
|
|
:label="1"
|
|
|
>是
|
|
|
</el-radio>
|
|
|
<el-radio
|
|
|
- :disabled="!!form.cameraPhotoUpload"
|
|
|
+ :disabled="
|
|
|
+ !!form.cameraPhotoUpload || orgSettingDisableLiveness
|
|
|
+ "
|
|
|
+ :title="
|
|
|
+ (!!form.cameraPhotoUpload || orgSettingDisableLiveness) &&
|
|
|
+ '原因:机构禁用活体或选择拍照作答'
|
|
|
+ "
|
|
|
v-model="form.inProcessLivenessVerify"
|
|
|
:label="0"
|
|
|
>否
|
|
@@ -339,39 +359,106 @@
|
|
|
<el-form-item label="是否开启考生端监考直播">
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.monitorProxy"
|
|
|
:label="true"
|
|
|
>是
|
|
|
</el-radio>
|
|
|
<el-radio
|
|
|
:disabled="!!form.cameraPhotoUpload"
|
|
|
+ :title="!!form.cameraPhotoUpload && '原因:拍照作答'"
|
|
|
v-model="form.monitorProxy"
|
|
|
:label="false"
|
|
|
>否
|
|
|
</el-radio>
|
|
|
</el-form-item>
|
|
|
</el-row>
|
|
|
- <el-row>
|
|
|
+ <!-- <el-row>
|
|
|
<el-form-item v-if="form.monitorProxy" label="是否需要视频回放">
|
|
|
<el-radio v-model="form.monitorRecord" :label="1">是 </el-radio>
|
|
|
<el-radio v-model="form.monitorRecord" :label="0">否 </el-radio>
|
|
|
</el-form-item>
|
|
|
- </el-row>
|
|
|
+ </el-row> -->
|
|
|
<el-row>
|
|
|
<el-form-item v-if="form.monitorProxy" label="电脑&手机监控方案">
|
|
|
<el-checkbox-group v-model="form.monitorVideoSource">
|
|
|
- <el-checkbox label="CLIENT_CAMERA"
|
|
|
- >电脑摄像头为主机位</el-checkbox
|
|
|
- >
|
|
|
- <el-checkbox label="CLIENT_SCREEN">电脑开启录屏</el-checkbox>
|
|
|
- <el-checkbox label="MOBILE_FIRST">手机主机位</el-checkbox>
|
|
|
- <el-checkbox
|
|
|
- :disabled="!form.monitorVideoSource.includes('MOBILE_FIRST')"
|
|
|
- label="MOBILE_SECOND"
|
|
|
- >手机辅机位</el-checkbox
|
|
|
- >
|
|
|
+ <div class="d-flex">
|
|
|
+ <div class="d-flex flex-column justify-content-between">
|
|
|
+ <el-checkbox label="CLIENT_CAMERA"
|
|
|
+ >电脑摄像头为主机位</el-checkbox
|
|
|
+ >
|
|
|
+ <el-checkbox label="CLIENT_SCREEN"
|
|
|
+ >电脑开启录屏</el-checkbox
|
|
|
+ >
|
|
|
+ <el-checkbox label="MOBILE_FIRST">手机主机位</el-checkbox>
|
|
|
+ <el-checkbox
|
|
|
+ :disabled="
|
|
|
+ !form.monitorVideoSource.includes('MOBILE_FIRST')
|
|
|
+ "
|
|
|
+ :title="
|
|
|
+ !form.monitorVideoSource.includes('MOBILE_FIRST') &&
|
|
|
+ '原因:先选择手机主机位'
|
|
|
+ "
|
|
|
+ label="MOBILE_SECOND"
|
|
|
+ >手机辅机位</el-checkbox
|
|
|
+ >
|
|
|
+ <span style="color: red; font-size: 12px;"
|
|
|
+ >*主机位设备负责收音及播放监考提示</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ margin-left: 20px;
|
|
|
+ padding: 10px;
|
|
|
+ font-size: 10px;
|
|
|
+ background: #f0f4f9;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div class="d-flex">
|
|
|
+ <div
|
|
|
+ class="d-flex flex-column justify-content-center align-items-center"
|
|
|
+ style="width: 52px !important;"
|
|
|
+ >
|
|
|
+ <div :class="monitorImgSrc('MOBILE_SECOND')" />
|
|
|
+ 手机辅机位
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="d-flex flex-column justify-content-center align-items-center"
|
|
|
+ style="width: 350px !important;"
|
|
|
+ >
|
|
|
+ <div :class="monitorImgSrc('CLIENT_CAMERA')" />
|
|
|
+ 电脑摄像头为主机位
|
|
|
+ </div>
|
|
|
+ <div style="width: 52px !important;"></div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="d-flex"
|
|
|
+ style="margin-bottom: -60px; margin-top: -30px;"
|
|
|
+ >
|
|
|
+ <div style="width: 52px !important;"></div>
|
|
|
+ <div
|
|
|
+ class="d-flex flex-column justify-content-center align-items-center"
|
|
|
+ style="width: 350px !important;"
|
|
|
+ >
|
|
|
+ <div :class="monitorImgSrc('CLIENT_SCREEN')" />
|
|
|
+ 电脑开启录屏
|
|
|
+ </div>
|
|
|
+ <div style="width: 52px !important;"></div>
|
|
|
+ </div>
|
|
|
+ <div class="d-flex">
|
|
|
+ <div style="width: 52px !important;"></div>
|
|
|
+ <div style="width: 350px !important;"></div>
|
|
|
+ <div
|
|
|
+ class="d-flex flex-column justify-content-center align-items-center"
|
|
|
+ style="width: 52px !important;"
|
|
|
+ >
|
|
|
+ <div :class="monitorImgSrc('MOBILE_FIRST')" />
|
|
|
+ 手机主机位
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</el-checkbox-group>
|
|
|
- <span style="color: red;">*主机位设备负责收音及播放监考提示</span>
|
|
|
</el-form-item>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
@@ -433,6 +520,7 @@ import ExamTypeSelect from "@/components/ExamTypeSelect";
|
|
|
import MinuteInput from "@/components/MinuteInput";
|
|
|
import { saveExam, getExamDetail } from "@/api/examwork-exam";
|
|
|
import { isNumber } from "lodash-es";
|
|
|
+import { searchOrg } from "@/api/system-org";
|
|
|
|
|
|
export default {
|
|
|
name: "ExamEdit",
|
|
@@ -473,6 +561,9 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
+ orgSettingDisableLiveness() {
|
|
|
+ return !this.orgSetting?.enableLiveness;
|
|
|
+ },
|
|
|
},
|
|
|
watch: {
|
|
|
"form.mode": {
|
|
@@ -555,6 +646,21 @@ export default {
|
|
|
this.form.preNoticeClone = this.form.preNotice;
|
|
|
this.form.postNoticeClone = this.form.postNotice;
|
|
|
}
|
|
|
+
|
|
|
+ // sleep
|
|
|
+ // await new Promise((res) =>
|
|
|
+ // setTimeout(() => {
|
|
|
+ // res();
|
|
|
+ // }, 3000)
|
|
|
+ // );
|
|
|
+ const res = await searchOrg(this.$store.state.user.orgId);
|
|
|
+ this.orgSetting = res.data.data[0];
|
|
|
+ if (!this.orgSetting.enableLiveness) {
|
|
|
+ if (this.form.entryAuthenticationPolicy === "LIVENESS_VERIFY") {
|
|
|
+ this.form.entryAuthenticationPolicy = "FACE_VERIFY_FORCE";
|
|
|
+ }
|
|
|
+ this.form.inProcessLivenessVerify = 0;
|
|
|
+ }
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
@@ -628,10 +734,29 @@ export default {
|
|
|
// message: "格式错误",
|
|
|
},
|
|
|
},
|
|
|
+ orgSetting: null,
|
|
|
loading: false,
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
+ monitorImgSrc(monitorSource) {
|
|
|
+ const selected = this.form.monitorVideoSource.includes(monitorSource);
|
|
|
+ const selectedStr = selected ? "-selected" : "";
|
|
|
+ if (monitorSource === "MOBILE_FIRST") {
|
|
|
+ return `mobile-first-img${selectedStr}`;
|
|
|
+ } else if (monitorSource === "MOBILE_SECOND") {
|
|
|
+ return `mobile-second-img${selectedStr}`;
|
|
|
+ // return `./imgs/手机监考辅机位${selectedStr}.png`;
|
|
|
+ } else if (monitorSource === "CLIENT_CAMERA") {
|
|
|
+ // return `./imgs/手机监考辅机位${selectedStr}.png`;
|
|
|
+ return `client-camera-img${selectedStr}`;
|
|
|
+ } else if (monitorSource === "CLIENT_SCREEN") {
|
|
|
+ // return `./imgs/手机监考辅机位${selectedStr}.png`;
|
|
|
+ return `client-screen-img${selectedStr}`;
|
|
|
+ }
|
|
|
+
|
|
|
+ return "";
|
|
|
+ },
|
|
|
async save() {
|
|
|
try {
|
|
|
await this.$refs.form1.validate();
|
|
@@ -699,4 +824,52 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.mobile-first-img {
|
|
|
+ background-image: url(./imgs/手机监考主机位.png);
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: 52px 80px;
|
|
|
+ width: 52px;
|
|
|
+ height: 80px;
|
|
|
+ &-selected {
|
|
|
+ @extend .mobile-first-img;
|
|
|
+ background-image: url(./imgs/手机监考主机位-选中.png);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.mobile-second-img {
|
|
|
+ background-image: url(./imgs/手机监考辅机位.png);
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: 52px 80px;
|
|
|
+ width: 52px;
|
|
|
+ height: 80px;
|
|
|
+ &-selected {
|
|
|
+ @extend .mobile-second-img;
|
|
|
+ background-image: url(./imgs/手机监考辅机位-选中.png);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.client-camera-img {
|
|
|
+ background-image: url(./imgs/电脑摄像头主机位.png);
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: 33px 40px;
|
|
|
+ width: 33px;
|
|
|
+ height: 40px;
|
|
|
+ &-selected {
|
|
|
+ @extend .client-camera-img;
|
|
|
+ background-image: url(./imgs/电脑摄像头主机位-选中.png);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.client-screen-img {
|
|
|
+ background-image: url(./imgs/电脑操作录屏.png);
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: 190px 110px;
|
|
|
+ width: 190px;
|
|
|
+ height: 110px;
|
|
|
+ &-selected {
|
|
|
+ @extend .client-screen-img;
|
|
|
+ background-image: url(./imgs/电脑操作录屏-选中.png);
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|