fix: refresh demo as student session

bugfix/ai-assessment-evidence-rescore
陈沅 1 month ago
parent a87707e85f
commit 1e1a12d0a5

@ -5,7 +5,9 @@
<script setup> <script setup>
import { exchangeStudentDemoSession } from "@/api/studentDemo"; import { exchangeStudentDemoSession } from "@/api/studentDemo";
import { saveStudentDemoSession } from "@/utils/studentDemo"; import { saveStudentDemoSession } from "@/utils/studentDemo";
import useUserStore from "@/store/modules/user";
const userStore = useUserStore();
const message = ref("正在连接教师演示会话…"); const message = ref("正在连接教师演示会话…");
let readyTimer; let readyTimer;
@ -17,9 +19,12 @@ function receiveTicket(event) {
if (event.origin !== window.location.origin || event.source !== window.opener || event.data?.type !== "STUDENT_DEMO_TICKET") return; if (event.origin !== window.location.origin || event.source !== window.opener || event.data?.type !== "STUDENT_DEMO_TICKET") return;
exchangeStudentDemoSession(event.data.ticket).then((res) => { exchangeStudentDemoSession(event.data.ticket).then((res) => {
saveStudentDemoSession(res.data); saveStudentDemoSession(res.data);
userStore.token = res.data.token;
userStore.userInfo = res.data;
window.clearInterval(readyTimer); window.clearInterval(readyTimer);
window.removeEventListener("message", receiveTicket); window.removeEventListener("message", receiveTicket);
window.location.replace("/#/index"); window.location.hash = "#/index";
window.location.reload();
}).catch(() => { message.value = "演示链接已失效,请返回教师端重新打开。"; }); }).catch(() => { message.value = "演示链接已失效,请返回教师端重新打开。"; });
} }

@ -7,6 +7,10 @@ const teacherTaskPage = readFileSync(resolve(root, "src/views/teacherEnd/trainin
const studentDemoPage = readFileSync(resolve(root, "src/views/studentDemo/index.vue"), "utf8"); const studentDemoPage = readFileSync(resolve(root, "src/views/studentDemo/index.vue"), "utf8");
assert.match(teacherTaskPage, /window\.open\("\/#\/student-demo", "_blank"\)/, "学生端讲解必须通过 Hash 路由打开演示入口"); assert.match(teacherTaskPage, /window\.open\("\/#\/student-demo", "_blank"\)/, "学生端讲解必须通过 Hash 路由打开演示入口");
assert.match(studentDemoPage, /window\.location\.replace\("\/#\/index"\)/, "兑换演示学生会话后必须通过 Hash 路由进入学生首页"); assert.match(studentDemoPage, /import useUserStore from "@\/store\/modules\/user";/, "演示页必须能更新当前窗口的用户状态");
assert.match(studentDemoPage, /userStore\.token = res\.data\.token;/, "兑换成功后必须替换教师窗口初始 token");
assert.match(studentDemoPage, /userStore\.userInfo = res\.data;/, "兑换成功后必须替换教师窗口初始用户身份");
assert.match(studentDemoPage, /window\.location\.hash = "#\/index";/, "兑换演示学生会话后必须切换到学生首页 Hash");
assert.match(studentDemoPage, /window\.location\.reload\(\);/, "切换演示身份后必须重新初始化动态路由和侧栏");
console.log("student demo uses hash routes instead of falling back to the teacher homepage"); console.log("student demo uses hash routes instead of falling back to the teacher homepage");

Loading…
Cancel
Save