From a0cf86e753e23262bff681e5955ec6ffc10b1ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=85=89LG?= Date: Thu, 27 Nov 2025 14:42:02 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B7=BB=E5=8A=A0=E3=80=91=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=80=83=E8=AF=95=E9=A1=B5=E9=9D=A2=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E6=88=AA=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binaries/Applications/Applications.dll | Bin 32768 -> 35328 bytes .../binaries/Applications/Applications.pdb | Bin 19116 -> 19604 bytes src/views/examPaper/index.vue | 42 ++++++++++++++++-- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src-tauri/binaries/Applications/Applications.dll b/src-tauri/binaries/Applications/Applications.dll index dfaef9cf2095ec9611c7596946f3fdbd7976ffcf..d5dcd2be246455aceffb6452cb9f8bd56b0d5e75 100644 GIT binary patch delta 16151 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 delta 2174 zcmb`IZBSHI7{{M;xh!`95l~iM5)c+q-eg%4#rBnp1Sqef5?Dl_<5(1G8s@mjPST7` zLvykj%PC--WMo5!_k>gh&7zd|?Sz(RqB<(^jjaR1=9ND#6|-pB94!lf5%VH*#u66AP}_WwfO5>Mf&;$h0kMJkFdzggW&R z)zKnU(2uHRDJDpSD;hixr9dKv^-wCLK}#Uv3r{fCNlRb(Ju5{FatPWfgQ8RXEy7K9!lo)4Ug2+jnr zyN@d)Sj@TMK6XT~I8bK<-@!?R*$VFkMm}<*L6Ka*-w1|TbiM$2;TK2vVGjE`{1WL8 zAq~R39DRqD8e9s07^#ti1qil|<_`tz2rM8VGDb8g2b-dZM6wHB3vK|5RST{F zPlD4VuLIu%7sv_LgLfe1HcP(}8~}Gnc7V;%MCq76G@uiK84-}|0$&BU%K^RMju@g0 z#KZz>!QRc?);}TqU^;ti|K`i#J~EXe$B-@oIl4cf1XJ z3VccW+rfu%=F<(}ZRq}!{RCHVdZ z2V-fx*`CJjjuz(R#~kHJT`X{b1%_CFTadmhhX(l<4htLRw;g*{Tr;OrK|J9RQ1;L* zvxW=Wt5CDz8Wfpl9r}UyJI7NOn-gI);iXb+i>MwiE7C60Z{dZmVwTI>UDeFX-*TN` zC;5Z!?9@r~GD=jiX)EQ#(F4k3Zk%bF{{nx??PizxlzX@0zsu7+>zT$|J)Icgyr-8X zbBnjzH=TibN%c=>8)YzEmRUwQvs{)rqE!4dg`zAOJZ~3!SaQ^(Ym`r`QgAR$M#NjC zQK1ppE+VD=>nSOet!Npk;2HjA0>{HJDd@ zj { { baseDir: BaseDirectory.AppLocalData } ).catch(() => {}) + // 在跳转前尝试停止本地截屏拦截服务 + await stopScreenService() replace('/examPaper/confirmPaper') } catch (error) { console.error('自动交卷失败:', error) @@ -1083,7 +1085,7 @@ const confirmSubmission = () => { file, stuId: userStore.user.id, paperId: examStore.selectedPaper - }).then((res) => { + }).then(async (res) => { instance.confirmButtonLoading = false instance.cancelButtonLoading = false inputDisabled.value = false // 重新启用输入框 @@ -1095,6 +1097,8 @@ const confirmSubmission = () => { ).catch((error) => {}) done() // 先关闭弹窗 loading.close() + // 在跳转前尝试停止本地截屏拦截服务 + await stopScreenService() // 使用 nextTick 确保弹窗完全关闭后再跳转 replace('/examPaper/confirmPaper') }) @@ -1142,7 +1146,7 @@ const confirmSubmission = () => { file, stuId: userStore.user.id, paperId: examStore.selectedPaper - }).then((res) => { + }).then(async (res) => { instance.confirmButtonLoading = false instance.cancelButtonLoading = false inputDisabled.value = false // 重新启用输入框 @@ -1154,6 +1158,8 @@ const confirmSubmission = () => { ).catch((error) => {}) done() // 先关闭弹窗 loading.close() + // 在跳转前尝试停止本地截屏拦截服务 + await stopScreenService() // 使用 nextTick 确保弹窗完全关闭后再跳转 replace('/examPaper/confirmPaper') }) @@ -1189,6 +1195,16 @@ const confirmSubmission = () => { // 生成随机验证码 const generateRandomCode = () => Math.floor(Math.random() * 9000 + 1000).toString() +// 在交卷后调用本地服务以恢复截屏组合键 +const stopScreenService = async () => { + try { + await fetch('http://localhost:48081/screen/stop', { method: 'GET', mode: 'no-cors' }) + console.log('已调用本地截屏服务: http://localhost:48081/screen/stop') + } catch (e) { + console.warn('调用本地截屏停止服务失败:', e) + } +} + // 题目切换逻辑 const goToPreviousQuestion = () => { // 找到当前题目在 orderedExamQuestionList 中的索引 @@ -2384,9 +2400,27 @@ onMounted(() => { } // isScreen: '0' -> 全局禁止截屏组合键 + // 新逻辑:当 isScreen === '0' 时调用本地服务触发截屏拦截接口 + // 当 isScreen === '1' 时不调用该接口 if (String(btn.isScreen) === '0') { - keyboardDisabler.setDisableScreenshot(true) - keyboardDisabler.updateConfig({ enableSecurityMode: true }) + ;(async () => { + try { + // 尝试调用本地服务,若跨域或服务不可达会被 catch + // 使用 fetch,尽量不阻塞主流程 + await fetch('http://localhost:48081/screen/start', { method: 'GET', mode: 'no-cors' }) + console.log('已调用本地截屏服务: http://localhost:48081/screen/start') + } catch (e) { + console.warn('调用本地截屏服务失败,回退到前端截屏拦截:', e) + } + + // 前端仍保留兜底拦截(若本地服务无效) + try { + keyboardDisabler.setDisableScreenshot(true) + keyboardDisabler.updateConfig({ enableSecurityMode: true }) + } catch (e) { + console.warn('启用前端截屏拦截失败:', e) + } + })() } } catch (err) { console.warn('初始化防作弊配置失败:', err)