diff --git a/src/api/studentDemo.js b/src/api/studentDemo.js new file mode 100644 index 0000000..0e6c974 --- /dev/null +++ b/src/api/studentDemo.js @@ -0,0 +1,14 @@ +import request from "@/utils/request"; + +export function createStudentDemoSession(teachingClassId) { + return request({ url: "/api/teacher/student-demo-sessions", method: "post", data: { teachingClassId } }); +} + +export function exchangeStudentDemoSession(ticket) { + return request({ + url: "/api/student-demo-sessions/exchange", + method: "post", + data: { ticket }, + headers: { isToken: false, repeatSubmit: false }, + }); +} diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index 5107dd2..45d34bc 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -1,6 +1,12 @@ import request from "@/utils/request"; +import { getDemoAnswerKey, getStudentDemoSession, isStudentDemo } from "@/utils/studentDemo"; + +function demoResult(taskKey) { + try { return JSON.parse(sessionStorage.getItem(getDemoAnswerKey(taskKey)) || "null"); } catch (error) { return null; } +} export function getStudentTrainingAnswer(taskKey, params) { + if (isStudentDemo()) return Promise.resolve({ code: 200, data: demoResult(taskKey) }); return request({ url: `/api/student-training-answers/${taskKey}`, method: "get", @@ -9,6 +15,11 @@ export function getStudentTrainingAnswer(taskKey, params) { } export function saveStudentTrainingAnswer(taskKey, data) { + if (isStudentDemo()) { + const answer = { ...data, teachingClassId: getStudentDemoSession()?.userInfo?.demoTeachingClassId }; + sessionStorage.setItem(getDemoAnswerKey(taskKey), JSON.stringify(answer)); + return Promise.resolve({ code: 200, data: answer }); + } return request({ url: `/api/student-training-answers/${taskKey}`, method: "post", @@ -18,6 +29,7 @@ export function saveStudentTrainingAnswer(taskKey, data) { } export function deleteStudentTrainingAnswer(taskKey, params) { + if (isStudentDemo()) { sessionStorage.removeItem(getDemoAnswerKey(taskKey)); return Promise.resolve({ code: 200 }); } return request({ url: `/api/student-training-answers/${taskKey}`, method: "delete", @@ -26,6 +38,7 @@ export function deleteStudentTrainingAnswer(taskKey, params) { } export function uploadStudentTrainingFile(data) { + if (isStudentDemo()) return Promise.reject(new Error("演示模式不上传文件")); return request({ url: "/common/upload", method: "post", diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue index 281936a..acb4823 100644 --- a/src/layout/components/AppMain.vue +++ b/src/layout/components/AppMain.vue @@ -6,8 +6,9 @@ * @FilePath: \vue3\src\layout\components\AppMain.vue * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE --> -