From f378fbf3ee8bd599b0746e48ba3811ae4b8b87cd Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 26 六月 2024 16:56:36 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/exam/exam/MarkPaperDetail.vue | 452 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 411 insertions(+), 41 deletions(-) diff --git a/src/views/exam/exam/MarkPaperDetail.vue b/src/views/exam/exam/MarkPaperDetail.vue index da51e38..890b58b 100644 --- a/src/views/exam/exam/MarkPaperDetail.vue +++ b/src/views/exam/exam/MarkPaperDetail.vue @@ -1,87 +1,457 @@ <template> - <div> - <el-row style="text-align: center;margin-top: 20px;margin-bottom: 20px; font-size: 28px">xxx鑰冭瘯</el-row> - <el-row :gutter="20"> - <el-col :span="8" class="info"> - <span class="exam-info">瀛﹀憳濮撳悕锛�</span> - <span class="exam-info">{{userName}}</span> - </el-col> - <el-col :span="8" class="info"> - <span class="exam-info">浜ゅ嵎鏃堕棿锛�</span> - <span class="exam-info">{{examInfo.updateTime}}</span> - </el-col> - <el-col :span="8" class="info"> - <span class="exam-info">瀹屾垚鑰楁椂锛�</span> - <span class="exam-info">{{examInfo.doTime}}</span> - </el-col> - </el-row> - <el-row class="paper-warp"> - <div v-for="(paper,index) in examInfo.paperQuestionList" :key="index" class="paperTitleWarp"> - <div class="paperTitle">{{ paper.title }}</div> - <div class="question-warp"> - <div v-for="(doQuestion, index) in paper.questionList" :key="index"> - <DoQuestion :question="doQuestion" :qType="paper.questionType" :qLoading="questionLoading"></DoQuestion> - </div> - </div> - </div> - </el-row> + <div class="paper-container"> + <div class="paper-card"> + <el-card style="height: 100vh"> + <el-row style="text-align: left; margin-bottom : 20px; font-size: 20px">璇枃鑰冭瘯</el-row> + <el-row> + <el-col class="info"> + <span class="exam-info">瀛﹀憳濮撳悕锛�</span> + <span class="exam-info">{{ userName }}</span> + </el-col> + </el-row> + <el-row> + <el-col class="info"> + <span class="exam-info">浜ゅ嵎鏃堕棿锛�</span> + <span class="exam-info">{{ examInfo.updateTime }}</span> + </el-col> + </el-row> + <el-row> + <el-col class="info"> + <span class="exam-info">瀹屾垚鑰楁椂锛�</span> + <span class="exam-info">{{ examInfo.doTime }}</span> + </el-col> + </el-row> + <el-row> + <el-col class="info"> + <span class="exam-info">寰楀垎锛�</span> + <span class="exam-info">{{ 30 + ' / ' + 70 }}</span> + </el-col> + </el-row> + <el-divider></el-divider> + <el-row class="do-exam-title"> + <el-col :span="24"> + <span :key="item.itemOrder" v-for="item in answer.answerItems"> + <el-tag :type="questionDoRightTag(item.doRight)" class="do-exam-title-tag" + @click="goAnchor('#question-' + item.itemOrder)">{{ item.itemOrder }}</el-tag> + </span> + </el-col> + </el-row> + </el-card> + </div> + <div class="paper-form"> + <el-form :model="form" ref="form" v-loading="formLoading" label-width="100px"> + <el-row :key="index" v-for="(titleItem, index) in form.titleItems"> + <h3>{{ titleItem.name }}</h3> + <el-card class="exampaper-item-box" v-if="titleItem.questionItems.length !== 0"> + <el-form-item :key="questionItem.itemOrder" :label="questionItem.itemOrder + '.'" + v-for="questionItem in titleItem.questionItems" class="exam-question-item" + label-width="50px" :id="'question-' + questionItem.itemOrder"> + <QuestionAnswerShow :qType="questionItem.questionType" :question="questionItem" + :answer="answer.answerItems[questionItem.itemOrder - 1]"/> + </el-form-item> + </el-card> + </el-row> + </el-form> + </div> </div> </template> <script> -import DoQuestion from '@/components/question/DoQuestion' import { getStudentExam } from '@/api/exam' +import QuestionAnswerShow from '@/views/answer/components/QuestionAnswerShow' +import examPaperAnswerApi from '@/api/examPaperAnswer' +import { mapGetters, mapState } from 'vuex' export default { name: 'MarkPaperDetail', - components: { DoQuestion }, + components: { QuestionAnswerShow }, mounted () { this.examInfo.examId = this.$route.query.examId this.examInfo.examName = this.$route.query.examName this.userId = this.$route.query.userId - if (this.examInfo.examId && this.userId) { - this.getStudentPaper() - } + examPaperAnswerApi.read(1).then(re => { + re = { + 'code': 1, 'message': '鎴愬姛', 'data': { + 'paper': { + 'id': 30, + 'paperType': 7, + 'score': '15', + 'classes': null, + 'name': '杩欐槸涓�涓祴璇曡瘯鍗�', + 'suggestTime': 12, + 'limitDateTime': null, + 'titleItems': [{ + 'name': '鍗曢�夐', + 'questionItems': [{ + 'id': 25, + 'questionType': 1, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺锛屼笅鍒楁纭殑鏄�', + 'gradeLevel': 1, + 'items': [{ 'prefix': 'A', 'content': '绾㈡ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'B', + 'content': '鐧芥ゼ姊�', + 'score': null, + 'itemUuid': null + }, { 'prefix': 'C', 'content': '闈掓ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'D', + 'content': '缁挎ゼ姊�', + 'score': null, + 'itemUuid': null + }], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': null, + 'correct': 'A', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 1, + 'knowledgeIdList': [8, 9] + }, { + 'id': 30, + 'questionType': 1, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺锛屼笅鍒楁纭殑鏄�', + 'gradeLevel': 1, + 'items': [{ 'prefix': 'A', 'content': '绾㈡ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'B', + 'content': '鐧芥ゼ姊�', + 'score': null, + 'itemUuid': null + }, { 'prefix': 'C', 'content': '闈掓ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'D', + 'content': '缁挎ゼ姊�', + 'score': null, + 'itemUuid': null + }], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': null, + 'correct': 'A', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 2, + 'knowledgeIdList': [8, 9] + }] + }, { + 'name': '澶氶�夐', + 'questionItems': [{ + 'id': 26, + 'questionType': 2, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺锛屼笅鍒楁纭殑鏄�', + 'gradeLevel': 1, + 'items': [{ 'prefix': 'A', 'content': '绾㈡ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'B', + 'content': '鐧芥ゼ姊�', + 'score': null, + 'itemUuid': null + }, { 'prefix': 'C', 'content': '闈掓ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'D', + 'content': '缁挎ゼ姊�', + 'score': null, + 'itemUuid': null + }], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': ['A', 'C'], + 'correct': 'A,C', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 3, + 'knowledgeIdList': [8, 9] + }, { + 'id': 31, + 'questionType': 2, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺锛屼笅鍒楁纭殑鏄�', + 'gradeLevel': 1, + 'items': [{ 'prefix': 'A', 'content': '绾㈡ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'B', + 'content': '鐧芥ゼ姊�', + 'score': null, + 'itemUuid': null + }, { 'prefix': 'C', 'content': '闈掓ゼ姊�', 'score': null, 'itemUuid': null }, { + 'prefix': 'D', + 'content': '缁挎ゼ姊�', + 'score': null, + 'itemUuid': null + }], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': ['A', 'C'], + 'correct': 'A,C', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 4, + 'knowledgeIdList': [8, 9] + }] + }, { + 'name': '鍒ゆ柇棰�', + 'questionItems': [{ + 'id': 27, + 'questionType': 3, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺锛屼笅鍒楄鏄庢纭悧', + 'gradeLevel': 1, + 'items': [{ 'prefix': 'A', 'content': '姝g‘', 'score': null, 'itemUuid': null }, { + 'prefix': 'B', + 'content': '閿欒', + 'score': null, + 'itemUuid': null + }], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': null, + 'correct': 'A', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 5, + 'knowledgeIdList': [8, 9] + }, { + 'id': 32, + 'questionType': 3, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺锛屼笅鍒楄鏄庢纭悧', + 'gradeLevel': 1, + 'items': [{ 'prefix': 'A', 'content': '姝g‘', 'score': null, 'itemUuid': null }, { + 'prefix': 'B', + 'content': '閿欒', + 'score': null, + 'itemUuid': null + }], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': null, + 'correct': 'A', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 6, + 'knowledgeIdList': [8, 9] + }] + }, { + 'name': '濉┖棰�', + 'questionItems': [{ + 'id': 2, + 'questionType': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁', + 'gradeLevel': 1, + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correct': null, + 'correctArray': '绾㈡ゼ姊�,鐧芥ゼ姊�,闈掓ゼ姊�,缁挎ゼ姊�', + 'score': '10', + 'difficult': 3, + 'itemOrder': 7, + 'knowledgeIdList': [8, 9], + 'items': [ + { prefix: '1', content: '绾㈡ゼ姊�' }, + { prefix: '2', content: '鐧芥ゼ姊�' }, + { prefix: '3', content: '闈掓ゼ姊�' }, + { prefix: '4', content: '缁挎ゼ姊�' } + ] + } + ] + }, { + 'name': '璇煶棰�', + 'questionItems': [{ + 'id': 55, + 'questionType': 1, + 'title': '鍚煶棰戝洖绛斿嚭灏忔槑浠婂ぉ鍚冪殑浠�涔�', + 'items': [ + { 'prefix': 'A', 'content': '鐣寗', 'score': null, 'itemUuid': null }, + { 'prefix': 'B', 'content': '鐧借彍', 'score': null, 'itemUuid': null }, + { 'prefix': 'C', 'content': '棣欒晧', 'score': null, 'itemUuid': null }, + { 'prefix': 'D', 'content': '鑿犺悵', 'score': null, 'itemUuid': null } + ], + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correctArray': null, + 'correct': 'A', + 'score': '2.5', + 'difficult': 3, + 'itemOrder': 8, + 'knowledgeIdList': [8, 9] + }] + }, { + 'name': '绠�绛旈', + 'questionItems': [{ + 'id': 1, + 'questionType': 5, + 'subjectId': 4, + 'title': '涓崕鍥涘ぇ鍚嶈憲閮芥湁鍝簺', + 'gradeLevel': 1, + 'analyze': '棰樼洰姣旇緝绠�鍗曪紝鑷鍒嗘瀽', + 'correct': '绾㈡ゼ姊︺�佽タ娓歌銆佹按娴掍紶銆佷笁鍥芥紨涔�', + 'score': '10', + 'difficult': 3, + 'itemOrder': 9, + 'knowledgeIdList': [8, 9] + } + ] + }], + }, + 'answer': { + 'id': 9, + 'doTime': 26, + 'score': '100', + 'createUser': null, + 'answerItems': [{ + 'id': 25, + 'questionId': 25, + 'doRight': true, + 'content': 'A', + 'itemOrder': 1, + 'contentArray': null, + 'score': '2.5', + 'questionScore': '2.5' + }, { + 'id': 26, + 'questionId': 30, + 'doRight': false, + 'content': 'C', + 'itemOrder': 2, + 'contentArray': null, + 'score': '0', + 'questionScore': '2.5' + }, { + 'id': 27, + 'questionId': 26, + 'doRight': false, + 'content': '', + 'itemOrder': 3, + 'contentArray': [''], + 'score': '0', + 'questionScore': '2.5' + }, { + 'id': 28, + 'questionId': 31, + 'doRight': false, + 'content': 'C,D', + 'itemOrder': 4, + 'contentArray': ['C', 'D'], + 'score': '0', + 'questionScore': '2.5' + }, { + 'id': 29, + 'questionId': 27, + 'doRight': true, + 'content': 'A', + 'itemOrder': 5, + 'contentArray': null, + 'score': '2.5', + 'questionScore': '2.5' + }, { + 'id': 30, + 'questionId': 32, + 'doRight': true, + 'content': 'A', + 'itemOrder': 6, + 'contentArray': null, + 'score': '2.5', + 'questionScore': '2.5' + }, { + 'id': 33, + 'questionId': 2, + 'doRight': null, + 'content': 'A', + 'itemOrder': 7, + 'contentArray': ['绾㈤棬姊�', '涓夊浗婕旂粠', '姘村6杞�'], + 'score': '2.5', + 'questionScore': '2.5' + }, { + 'id': 25, + 'questionId': 55, + 'doRight': true, + 'content': 'A', + 'itemOrder': 8, + 'contentArray': null, + 'score': '2.5', + 'questionScore': '2.5' + }, { + 'id': 31, + 'questionId': 1, + 'doRight': null, + 'content': '绾㈡ゼ姊�.......', + 'itemOrder': 9, + 'questionScore': '10' + }], + 'doTimeStr': '26绉�' + } + } + } + this.form = re.data.paper + this.answer = re.data.answer + this.formLoading = false + }) + // if (this.examInfo.examId && this.userId) { + // this.getStudentPaper() + // } }, data () { return { - paperQuestionList: [ - - ], + paperQuestionList: [], + form: {}, + formLoading: false, + answer: { + id: null, + score: 0, + doTime: 0, + answerItems: [], + doRight: false + }, userId: null, - userName: null, + userName: '寮犱笁', questionLoading: false, examInfo: { examId: null, examName: '', - doTime: 0, - updateTime: null, + doTime: '119鍒�40绉�', + updateTime: '2024-06-20 15:59:40', paperQuestionList: [] } } }, methods: { + goAnchor (selector) { + this.$el.querySelector(selector).scrollIntoView({ behavior: 'instant', block: 'center', inline: 'nearest' }) + }, + questionDoRightTag (status) { + return this.enumFormat(this.doRightTag, status) + }, getStudentPaper () { getStudentExam(this.examInfo.examId, this.userId).then(res => { this.examInfo = res.data.data }) } + }, + computed: { + ...mapGetters('enumItem', ['enumFormat']), + ...mapState('enumItem', { + doRightTag: state => state.exam.question.answer.doRightTag + }) } } </script> <style scoped> -.question-warp { - margin-top: 50px; +.paper-container { + display: flex; + flex-direction: row; + height: 100%; + padding: 20px; + min-height: 100%; } -.exam-info { +.paper-card { + position: fixed; + width: 270px; +} + +.paper-form { + flex: 1; /* 鍗犳嵁鍓╀綑绌洪棿 */ + margin-left: 300px; } .info { display: flex; flex-direction: row; - justify-content: center; + justify-content: left; + font-size: 14px; + margin-top: 10px; } + </style> -- Gitblit v1.8.0