From 8a92354fe4fb0fcae86deea384a41b3f5595a7fe Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Thu, 22 Oct 2026 20:12:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E9=98=85=E9=A1=B5=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E5=AD=A6=E7=94=9F=E7=9A=84=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=EF=BC=9B=E7=A6=BB=E5=BC=80=E9=A1=B5=E9=9D=A2=E6=97=B6=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E6=AD=A3=E5=9C=A8=E8=BF=90=E8=A1=8C=E7=9A=84=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 运行区(窗体桌面、提示框、虚拟实训台、编译错误和控制台输出)抽成 RunArea 组件,实验页和评阅页共用 - 评阅页代码区加"运行"标签页:运行学生提交的代码,可以操作窗体和实训台;换学生时自动停止并清空; 点编译错误跳到对应代码;原来的按钮改为"在新标签页运行" - 运行会话加 close():离开实验页、评阅页时断开连接,服务器随即结束程序(之前要等 60 分钟超时) Co-Authored-By: Claude Opus 5.5 --- web/src/pages/ReviewPage.vue | 99 ++++++++++++++++++++++++--- web/src/pages/WorkbenchPage.vue | 107 ++--------------------------- web/src/run/RunArea.vue | 115 ++++++++++++++++++++++++++++++++ web/src/run/session.ts | 7 +- 4 files changed, 215 insertions(+), 113 deletions(-) create mode 100644 web/src/run/RunArea.vue diff --git a/web/src/pages/ReviewPage.vue b/web/src/pages/ReviewPage.vue index 6bf9f37..4689479 100644 --- a/web/src/pages/ReviewPage.vue +++ b/web/src/pages/ReviewPage.vue @@ -1,14 +1,17 @@ + + + + diff --git a/web/src/run/session.ts b/web/src/run/session.ts index 66ca045..df0f2ca 100644 --- a/web/src/run/session.ts +++ b/web/src/run/session.ts @@ -187,7 +187,12 @@ export function createRunSession() { } } - return { state, connect, run, stop, act, replyMessageBox, setBoard, resetBoard } + /** 离开页面时断开连接:服务器随即结束正在运行的程序 */ + function close() { + socket?.close() + } + + return { state, connect, run, stop, act, replyMessageBox, setBoard, resetBoard, close } } export type RunSession = ReturnType