| | |
| | | <div> |
| | | <span style="font-size: 20px">{{data.form.examPaper.name}}</span> |
| | | <div class="examInfo"> |
| | | <span>得分:{{data.form.score}} / {{data.form.totalScore}}</span> |
| | | <span>得分:{{data.backValue.state == 0 ? '暂无' : data.form.score}} / {{data.form.totalScore}}</span> |
| | | <span>学生:{{data.form.student.name}}</span> |
| | | <el-divider style="margin-top: 10px" /> |
| | | </div> |
| | | <div v-if="data.form.questions && data.form.questions.length>0" style="display: flex;flex-wrap: wrap;line-height: 40px"> |
| | | <div v-if="data.backValue.state !== 0 && data.form.questions && data.form.questions.length>0" style="display: flex;flex-wrap: wrap;line-height: 40px"> |
| | | <div v-for="(item,index) in data.form.questions" :key="index" style="margin-right: 5px"> |
| | | <el-tag size="large" style="cursor: pointer" effect="light" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'" @click="toView(index+1)">{{index+1}}</el-tag> |
| | | </div> |
| | | <el-divider /> |
| | | </div> |
| | | <div style="display: flex;justify-content: center;"> |
| | | <!-- <div style="display: flex;justify-content: center;"> |
| | | <el-button type="primary" @click="submitExam" v-if="data.queryParams.state != 2">提交批改</el-button> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | |
| | | <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span> |
| | | </div> |
| | | <div style="display: flex;margin-top: 15px;margin-left: 25px"> |
| | | <div v-for="single in item.content.items" :class="{toRed : item.studentAnswer.answer == single.prefix}"> |
| | | <div v-for="single in item.content.items" :class="{toRed : data.backValue.state !== 0 && item.studentAnswer && item.studentAnswer.answer && (item.studentAnswer.answer == single.prefix)}"> |
| | | <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}.</span> |
| | | <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div v-if="data.backValue.state !== 0" style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div style="display: flex"> |
| | | <span>结果:</span> |
| | | <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag> |
| | | </div> |
| | | <span>分数:{{data.form.examPaper.singleScore}}</span> |
| | | <span>解析:{{item.content.analyze}}</span> |
| | | <span>正确答案:{{item.answer}}</span> |
| | | <span v-if="item.studentAnswer && item.studentAnswer.answer">正确答案:{{item.answer}}</span> |
| | | |
| | | </div> |
| | | <el-divider /> |
| | |
| | | <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span> |
| | | </div> |
| | | <div style="display: flex;margin-top: 15px;margin-left: 25px"> |
| | | <div v-for="single in item.content.items" :class="{toRed : item.studentAnswer.answerArr.includes(single.prefix)}"> |
| | | <div v-for="single in item.content.items" :class="{toRed : data.backValue.state !== 0 && item.studentAnswer && item.studentAnswer.answerArr && item.studentAnswer.answerArr.includes(single.prefix)}"> |
| | | <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}.</span> |
| | | <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div v-if="data.backValue.state !== 0" style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div style="display: flex"> |
| | | <span>结果:</span> |
| | | <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag> |
| | | </div> |
| | | <span>分数:{{data.form.examPaper.multiScore}}</span> |
| | | <span>解析:{{item.content.analyze}}</span> |
| | | <span>正确答案:{{item.answer}}</span> |
| | | <span v-if="item.studentAnswer && item.studentAnswer.answer">正确答案:{{item.answer}}</span> |
| | | |
| | | </div> |
| | | <el-divider /> |
| | |
| | | <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span> |
| | | </div> |
| | | <div style="display: flex;margin-top: 15px;margin-left: 25px"> |
| | | <div v-for="single in item.content.items" :class="{toRed : item.studentAnswer.answer == single.prefix}"> |
| | | <div v-for="single in item.content.items" :class="{toRed : data.backValue.state !== 0 && item.studentAnswer && item.studentAnswer.answer && item.studentAnswer.answer == single.prefix}"> |
| | | <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}.</span> |
| | | <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div v-if="data.backValue.state !== 0" style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div style="display: flex"> |
| | | <span>结果:</span> |
| | | <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag> |
| | | </div> |
| | | <span>分数:{{data.form.examPaper.judgeScore}}</span> |
| | | <span>解析:{{item.content.analyze}}</span> |
| | | <span>正确答案:{{item.answer}}</span> |
| | | <span v-if="item.studentAnswer && item.studentAnswer.answer">正确答案:{{item.answer}}</span> |
| | | </div> |
| | | <el-divider /> |
| | | </div> |
| | |
| | | <div style="display: flex;margin-top: 15px;margin-left: 30px"> |
| | | <span style="font-weight: 600">{{item.studentAnswer.answer}}</span> |
| | | </div> |
| | | <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div v-if="data.backValue.state !== 0" style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px"> |
| | | <div style="display: flex"> |
| | | <span>结果:</span> |
| | | <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag> |
| | | </div> |
| | | <span>分数:{{data.form.examPaper.easyScore}}</span> |
| | | <span>解析:{{item.content.analyze}}</span> |
| | | <span>正确答案:{{item.answer}}</span> |
| | | <div style="display: flex;align-items: center;margin-top: 5px" v-if="item.studentAnswer.passed == 2"> |
| | | <span v-if="item.studentAnswer && item.studentAnswer.answer">正确答案:{{item.answer}}</span> |
| | | <!-- <div style="display: flex;align-items: center;margin-top: 5px" v-if="item.studentAnswer.passed == 2"> |
| | | <span style="color: #EAB308">批改:</span> |
| | | <el-input-number v-model="item.score" :min="0" :max="data.form.examPaper.easyScore" :step="1" /> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 5px" v-else> |
| | | <span style="color: #EAB308">得分:</span> |
| | | <el-input-number v-model="item.studentAnswer.score" :min="0" :max="data.form.examPaper.easyScore" :step="1" disabled /> |
| | | </div> |
| | | </div> --> |
| | | |
| | | </div> |
| | | <el-divider /> |
| | |
| | | import {isRelogin} from "@/utils/request"; |
| | | const route = useRoute() |
| | | const router = useRouter(); |
| | | |
| | | const backValue = ref() |
| | | const data = reactive({ |
| | | queryParams: { |
| | | id: null, |
| | |
| | | questions: [], |
| | | student: {} |
| | | }, |
| | | backValue: { |
| | | id: null, |
| | | paperId: null, |
| | | pageNum: null, |
| | | pageSize: null, |
| | | state: null |
| | | }, |
| | | singleList:[], |
| | | judgeList: [], |
| | | multiList:[], |
| | |
| | | }); |
| | | onMounted(async ()=>{ |
| | | const val = JSON.parse(route.query.val) |
| | | backValue.value = val |
| | | data.backValue = val |
| | | data.queryParams.paperId = val.paperId |
| | | data.queryParams.id = val.id |
| | | data.queryParams.state = val.state |
| | |
| | | return { |
| | | ...item, |
| | | content: JSON.parse(item.content), |
| | | studentAnswer: { |
| | | studentAnswer: item.studentAnswer?{ |
| | | answerArr:item.studentAnswer.answer?item.studentAnswer.answer.split(','):[], |
| | | answer: item.studentAnswer.answer, |
| | | id: item.studentAnswer.id, |
| | |
| | | questionId: item.studentAnswer.questionId, |
| | | score: item.studentAnswer.score, |
| | | studentId: item.studentAnswer.studentId, |
| | | } |
| | | }:{} |
| | | } |
| | | }) |
| | | } |
| | |
| | | const obj = { |
| | | type: 'exam', |
| | | paperId: data.queryParams.paperId, |
| | | pageNum: backValue.value.pageNum, |
| | | pageSize: backValue.value.pageSize, |
| | | pageNum: data.backValue.pageNum, |
| | | pageSize: data.backValue.pageSize, |
| | | } |
| | | const v = JSON.stringify(obj) |
| | | router.push({ path: "/examStu", query: { val: v } }); |