|
@@ -2,7 +2,7 @@
|
|
|
<ie-page :fix-height="true" :safe-area-inset-bottom="false">
|
|
<ie-page :fix-height="true" :safe-area-inset-bottom="false">
|
|
|
<block v-if="isReady">
|
|
<block v-if="isReady">
|
|
|
<exam-navbar :total-exam-time="totalExamTime" @left-click="handleLeftClick" @right-click="handleRightClick" />
|
|
<exam-navbar :total-exam-time="totalExamTime" @left-click="handleLeftClick" @right-click="handleRightClick" />
|
|
|
- <exam-subtitle :total-exam-time="totalExamTime" />
|
|
|
|
|
|
|
+ <exam-subtitle />
|
|
|
<exam-swiper @submit="beforeSubmit" />
|
|
<exam-swiper @submit="beforeSubmit" />
|
|
|
<exam-toolbar ref="examToolbarRef" @submit="beforeSubmit" />
|
|
<exam-toolbar ref="examToolbarRef" @submit="beforeSubmit" />
|
|
|
</block>
|
|
</block>
|
|
@@ -78,7 +78,9 @@ const totalExamTime = ref<number>(0);
|
|
|
const hasShowSubmitConfirm = ref(false);
|
|
const hasShowSubmitConfirm = ref(false);
|
|
|
const examineeId = ref<number | undefined>(undefined);
|
|
const examineeId = ref<number | undefined>(undefined);
|
|
|
const paperData = ref<Study.ExamPaper>({} as Study.ExamPaper);
|
|
const paperData = ref<Study.ExamPaper>({} as Study.ExamPaper);
|
|
|
-const examToolbarRef = ref();
|
|
|
|
|
|
|
+// 是否确认退出
|
|
|
|
|
+const confirmQuit = ref(false);
|
|
|
|
|
+const confirmShowing = ref(false);
|
|
|
/**
|
|
/**
|
|
|
* 自动提交
|
|
* 自动提交
|
|
|
*/
|
|
*/
|
|
@@ -111,6 +113,7 @@ const isReadOnly = computed(() => {
|
|
|
});
|
|
});
|
|
|
const handleLeftClick = () => {
|
|
const handleLeftClick = () => {
|
|
|
if (!isReady.value || isReadOnly.value) {
|
|
if (!isReady.value || isReadOnly.value) {
|
|
|
|
|
+ confirmQuit.value = true;
|
|
|
transferBack();
|
|
transferBack();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -133,6 +136,7 @@ const beforeQuit = () => {
|
|
|
}
|
|
}
|
|
|
stopTime();
|
|
stopTime();
|
|
|
const msg = paperType === EnumPaperType.PRACTICE ? '当前练习未完成,确认退出?' : '当前考试未完成,确认退出?';
|
|
const msg = paperType === EnumPaperType.PRACTICE ? '当前练习未完成,确认退出?' : '当前考试未完成,确认退出?';
|
|
|
|
|
+ confirmShowing.value = true;
|
|
|
uni.$ie.showModal({
|
|
uni.$ie.showModal({
|
|
|
title: '提示',
|
|
title: '提示',
|
|
|
content: msg,
|
|
content: msg,
|
|
@@ -140,6 +144,8 @@ const beforeQuit = () => {
|
|
|
if (confirm) {
|
|
if (confirm) {
|
|
|
handleSubmit(true);
|
|
handleSubmit(true);
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ confirmQuit.value = false;
|
|
|
|
|
+ confirmShowing.value = false;
|
|
|
startTime();
|
|
startTime();
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -180,7 +186,7 @@ const handleSubmit = (tempSave: boolean = false) => {
|
|
|
const msg = tempSave ? '保存中...' : '提交中...';
|
|
const msg = tempSave ? '保存中...' : '提交中...';
|
|
|
uni.$ie.showLoading(msg);
|
|
uni.$ie.showLoading(msg);
|
|
|
setTimeout(async () => {
|
|
setTimeout(async () => {
|
|
|
- const params = {
|
|
|
|
|
|
|
+ const params: Study.ExamPaperSubmit = {
|
|
|
...paperData.value,
|
|
...paperData.value,
|
|
|
questions: questionList.value.map(item => {
|
|
questions: questionList.value.map(item => {
|
|
|
return {
|
|
return {
|
|
@@ -199,7 +205,7 @@ const handleSubmit = (tempSave: boolean = false) => {
|
|
|
// examineeId: examineerData.value.examineeId,
|
|
// examineeId: examineerData.value.examineeId,
|
|
|
isDone: tempSave ? isAllDone.value : true,
|
|
isDone: tempSave ? isAllDone.value : true,
|
|
|
duration: practiceDuration.value
|
|
duration: practiceDuration.value
|
|
|
- } as Study.ExamPaperSubmit;
|
|
|
|
|
|
|
+ };
|
|
|
console.log('提交试卷参数', params)
|
|
console.log('提交试卷参数', params)
|
|
|
await commitExamineePaper(params);
|
|
await commitExamineePaper(params);
|
|
|
if (isSimulationExam.value || isTestExam.value) {
|
|
if (isSimulationExam.value || isTestExam.value) {
|
|
@@ -207,6 +213,8 @@ const handleSubmit = (tempSave: boolean = false) => {
|
|
|
setTimeout(async () => {
|
|
setTimeout(async () => {
|
|
|
uni.$ie.hideLoading();
|
|
uni.$ie.hideLoading();
|
|
|
await nextTick();
|
|
await nextTick();
|
|
|
|
|
+ confirmQuit.value = true;
|
|
|
|
|
+ confirmShowing.value = false;
|
|
|
transferTo('/pagesStudy/pages/simulation-analysis/simulation-analysis', {
|
|
transferTo('/pagesStudy/pages/simulation-analysis/simulation-analysis', {
|
|
|
data: {
|
|
data: {
|
|
|
examineeId: examineeId.value,
|
|
examineeId: examineeId.value,
|
|
@@ -217,6 +225,8 @@ const handleSubmit = (tempSave: boolean = false) => {
|
|
|
}, 2500);
|
|
}, 2500);
|
|
|
} else {
|
|
} else {
|
|
|
uni.$ie.hideLoading();
|
|
uni.$ie.hideLoading();
|
|
|
|
|
+ confirmQuit.value = true;
|
|
|
|
|
+ confirmShowing.value = false;
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
transferBack();
|
|
transferBack();
|
|
|
});
|
|
});
|
|
@@ -226,18 +236,23 @@ const handleSubmit = (tempSave: boolean = false) => {
|
|
|
setTimeout(async () => {
|
|
setTimeout(async () => {
|
|
|
uni.$ie.hideLoading();
|
|
uni.$ie.hideLoading();
|
|
|
await nextTick();
|
|
await nextTick();
|
|
|
|
|
+ confirmQuit.value = true;
|
|
|
|
|
+ confirmShowing.value = false;
|
|
|
transferTo('/pagesStudy/pages/knowledge-practice-detail/knowledge-practice-detail', {
|
|
transferTo('/pagesStudy/pages/knowledge-practice-detail/knowledge-practice-detail', {
|
|
|
data: {
|
|
data: {
|
|
|
paperType: prevData.value.paperType,
|
|
paperType: prevData.value.paperType,
|
|
|
examineeId: examineeId.value,
|
|
examineeId: examineeId.value,
|
|
|
name: prevData.value.practiceInfo?.name,
|
|
name: prevData.value.practiceInfo?.name,
|
|
|
- directed: prevData.value.practiceInfo?.directed
|
|
|
|
|
|
|
+ directed: prevData.value.practiceInfo?.directed,
|
|
|
|
|
+ questionType: prevData.value.practiceInfo?.questionType
|
|
|
} as Transfer.PracticeResultPageOptions,
|
|
} as Transfer.PracticeResultPageOptions,
|
|
|
type: 'redirectTo'
|
|
type: 'redirectTo'
|
|
|
});
|
|
});
|
|
|
}, 2500);
|
|
}, 2500);
|
|
|
} else {
|
|
} else {
|
|
|
uni.$ie.hideLoading();
|
|
uni.$ie.hideLoading();
|
|
|
|
|
+ confirmQuit.value = true;
|
|
|
|
|
+ confirmShowing.value = false;
|
|
|
nextTick(() => {
|
|
nextTick(() => {
|
|
|
transferBack();
|
|
transferBack();
|
|
|
});
|
|
});
|
|
@@ -276,6 +291,7 @@ const restoreQuestion = (savedQuestion: Study.ExamineeQuestion[], fullQuestion:
|
|
|
}
|
|
}
|
|
|
return fullQuestion;
|
|
return fullQuestion;
|
|
|
}
|
|
}
|
|
|
|
|
+// 1、加载知识点练习数据
|
|
|
const loadPracticeData = async () => {
|
|
const loadPracticeData = async () => {
|
|
|
const { paperType, readonly, practiceInfo } = prevData.value;
|
|
const { paperType, readonly, practiceInfo } = prevData.value;
|
|
|
let data: Study.Examinee | null = null;
|
|
let data: Study.Examinee | null = null;
|
|
@@ -285,11 +301,16 @@ const loadPracticeData = async () => {
|
|
|
data = res.data;
|
|
data = res.data;
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- const res = await getOpenExaminee({
|
|
|
|
|
|
|
+ const params = {
|
|
|
paperType: paperType,
|
|
paperType: paperType,
|
|
|
relateId: practiceInfo?.relateId,
|
|
relateId: practiceInfo?.relateId,
|
|
|
- directed: practiceInfo?.directed || false
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ } as Study.OpenExamineeRequestDTO;
|
|
|
|
|
+ if (userStore.isVHS) {
|
|
|
|
|
+ params.questionType = practiceInfo?.questionType;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ params.directed = practiceInfo?.directed || false;
|
|
|
|
|
+ }
|
|
|
|
|
+ const res = await getOpenExaminee(params);
|
|
|
data = res.data || {};
|
|
data = res.data || {};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -302,6 +323,7 @@ const loadPracticeData = async () => {
|
|
|
totalExamTime.value = Number.MAX_SAFE_INTEGER;
|
|
totalExamTime.value = Number.MAX_SAFE_INTEGER;
|
|
|
combinePaperData(data, paperType);
|
|
combinePaperData(data, paperType);
|
|
|
}
|
|
}
|
|
|
|
|
+// 2、加载模拟考试数据
|
|
|
const loadExamData = async () => {
|
|
const loadExamData = async () => {
|
|
|
const { paperType, readonly, simulationInfo } = prevData.value;
|
|
const { paperType, readonly, simulationInfo } = prevData.value;
|
|
|
let data: Study.Examinee;
|
|
let data: Study.Examinee;
|
|
@@ -322,6 +344,31 @@ const loadExamData = async () => {
|
|
|
combinePaperData(data, paperType);
|
|
combinePaperData(data, paperType);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+// 3、加载对口升学试卷数据
|
|
|
|
|
+// const loadVHSPaperData = async () => {
|
|
|
|
|
+// const { paperType, readonly, simulationInfo } = prevData.value;
|
|
|
|
|
+// let data: Study.Examinee;
|
|
|
|
|
+// if (simulationInfo?.examineeId) {
|
|
|
|
|
+// if (readonly) {
|
|
|
|
|
+// const res = await getExamineeResult(simulationInfo.examineeId);
|
|
|
|
|
+// data = res.data;
|
|
|
|
|
+// } else {
|
|
|
|
|
+// const params = {
|
|
|
|
|
+// paperType: paperType,
|
|
|
|
|
+// relateId: simulationInfo?.examineeId,
|
|
|
|
|
+// } as Study.OpenExamineeRequestDTO;
|
|
|
|
|
+// const res = await getOpenExaminee(params);
|
|
|
|
|
+// data = res.data || {};
|
|
|
|
|
+// }
|
|
|
|
|
+// if (!data) {
|
|
|
|
|
+// uni.$ie.hideLoading();
|
|
|
|
|
+// transferBack();
|
|
|
|
|
+// return;
|
|
|
|
|
+// }
|
|
|
|
|
+// totalExamTime.value = data.paperInfo?.time || Number.MAX_SAFE_INTEGER;
|
|
|
|
|
+// combinePaperData(data, paperType);
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
const combinePaperData = async (examinee: Study.Examinee, paperType: EnumPaperType) => {
|
|
const combinePaperData = async (examinee: Study.Examinee, paperType: EnumPaperType) => {
|
|
|
examineeId.value = examinee.examineeId;
|
|
examineeId.value = examinee.examineeId;
|
|
|
if (examinee.paperId) {
|
|
if (examinee.paperId) {
|
|
@@ -373,9 +420,7 @@ const handleSwiperTipNext = () => {
|
|
|
}
|
|
}
|
|
|
const handleGuideClose = () => {
|
|
const handleGuideClose = () => {
|
|
|
userStore.isExamGuideShow = true;
|
|
userStore.isExamGuideShow = true;
|
|
|
- if (!isReadOnly.value) {
|
|
|
|
|
- startTime();
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ startTime();
|
|
|
}
|
|
}
|
|
|
const loadData = async () => {
|
|
const loadData = async () => {
|
|
|
uni.$ie.showLoading();
|
|
uni.$ie.showLoading();
|
|
@@ -383,12 +428,32 @@ const loadData = async () => {
|
|
|
if (paperType === EnumPaperType.PRACTICE || paperType === EnumPaperType.COURSE) {
|
|
if (paperType === EnumPaperType.PRACTICE || paperType === EnumPaperType.COURSE) {
|
|
|
loadPracticeData();
|
|
loadPracticeData();
|
|
|
} else if (paperType === EnumPaperType.SIMULATED || paperType === EnumPaperType.TEST) {
|
|
} else if (paperType === EnumPaperType.SIMULATED || paperType === EnumPaperType.TEST) {
|
|
|
|
|
+ // if (paperType === EnumPaperType.SIMULATED && userStore.isVHS) {
|
|
|
|
|
+ // loadVHSPaperData();
|
|
|
|
|
+ // } else {
|
|
|
|
|
+ // loadExamData();
|
|
|
|
|
+ // }
|
|
|
loadExamData();
|
|
loadExamData();
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
onLoad(() => {
|
|
onLoad(() => {
|
|
|
console.log(prevData.value)
|
|
console.log(prevData.value)
|
|
|
loadData();
|
|
loadData();
|
|
|
|
|
+ uni.addInterceptor('navigateBack', {
|
|
|
|
|
+ invoke: (e) => {
|
|
|
|
|
+ if (confirmShowing.value) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (confirmQuit.value) {
|
|
|
|
|
+ return e;
|
|
|
|
|
+ }
|
|
|
|
|
+ handleLeftClick();
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+});
|
|
|
|
|
+onUnload(() => {
|
|
|
|
|
+ uni.removeInterceptor('navigateBack');
|
|
|
});
|
|
});
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|