import { ref, computed } from 'vue';
|
import { defineStore } from 'pinia';
|
export const useExamStore = defineStore('exam', () => {
|
const examInfo = ref(null);
|
const examDetail = ref([]);
|
|
const examType = ref({
|
1: '单选题',
|
2: '多选题',
|
3: '判断题',
|
4: '填空题',
|
5: '简答题',
|
6: '语音题',
|
7: '计算题',
|
8: '分析题',
|
});
|
|
const currentType = ref(1);
|
const currentIndex = ref(0);
|
|
const answerProgress = ref(0);
|
|
|
const getActiveQuestion = computed(() => {
|
const temp = examDetail.value.find(item => item.questionType === currentType.value);
|
if (temp) {
|
return temp.questionList[currentIndex.value];
|
}
|
});
|
|
const getAnswerInfo = computed(() => {
|
let total = 0;
|
let grade = 0;
|
examDetail.value.forEach(item => {
|
total += item.questionList.length;
|
item.questionList.forEach(question => {
|
grade += Number(question.questionScore);
|
});
|
});
|
return {
|
total,
|
grade,
|
};
|
});
|
|
const setExamInfo = (info) => {
|
examInfo.value = info;
|
};
|
|
const setExamDetail = (detail) => {
|
examDetail.value = detail;
|
};
|
|
const setQuestionAnswer = (type, index, answer) => {
|
const temp = examDetail.value.find(item => item.questionType === type);
|
if (temp) {
|
temp.questionList[index].answer = answer;
|
}
|
};
|
|
const setQuestionAnswerList = (type, index, answer) => {
|
const temp = examDetail.value.find(item => item.questionType === type);
|
if (temp) {
|
temp.questionList[index].answerList = answer;
|
}
|
}
|
|
const setProgress = (progress) => {
|
answerProgress.value = progress;
|
};
|
|
const initExam = (questionType) => {
|
answerProgress.value = 0;
|
currentIndex.value = 0;
|
currentType.value = questionType;
|
}
|
|
|
return {
|
examInfo,
|
examDetail,
|
examType,
|
|
currentType,
|
currentIndex,
|
answerProgress,
|
|
getActiveQuestion,
|
getAnswerInfo,
|
|
initExam,
|
|
setExamInfo,
|
setExamDetail,
|
setQuestionAnswer,
|
setQuestionAnswerList,
|
setProgress
|
};
|
});
|