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 = () => { answerProgress.value = 0; currentIndex.value = 0; currentType.value = 1; } return { examInfo, examDetail, examType, currentType, currentIndex, answerProgress, getActiveQuestion, getAnswerInfo, initExam, setExamInfo, setExamDetail, setQuestionAnswer, setQuestionAnswerList, setProgress }; });