1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
| 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.score);
| });
| });
| 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].correct = 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,
| setProgress
| };
| });
|
|