From b66dc32f331b455ed1135235bbce14fc84a2f6fe Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 26 六月 2024 16:56:20 +0800
Subject: [PATCH] 阅卷前端样式
---
src/views/exam/paper/list.vue | 4
src/views/answer/components/QuestionAnswerShow.vue | 10 +
src/views/train/data-list/index.vue | 50 ---------
src/views/train/index.vue | 34 ++++++
src/views/exam/exam/MarkPaperDetail.vue | 164 +++++++++++++++++++++++++++-----
5 files changed, 179 insertions(+), 83 deletions(-)
diff --git a/src/views/answer/components/QuestionAnswerShow.vue b/src/views/answer/components/QuestionAnswerShow.vue
index 7a0b0af..f94f3ad 100644
--- a/src/views/answer/components/QuestionAnswerShow.vue
+++ b/src/views/answer/components/QuestionAnswerShow.vue
@@ -1,6 +1,7 @@
<template>
<div v-loading="qLoading" style="line-height:1.8">
<div v-if="qType == 1 || qType == 2 || qType == 3 || qType == 4 || qType == 5 || qType == 6 || qType == 7 || qType == 8">
+ <!-- 閫夋嫨鎴栬闊� -->
<div v-if="qType == 1 || qType == 6">
<div class="q-title" v-html="question.title" />
<div class="q-content">
@@ -12,6 +13,7 @@
</el-radio-group>
</div>
</div>
+ <!-- 澶氶�� -->
<div v-else-if="qType == 2">
<div class="q-title" v-html="question.title" />
<div class="q-content">
@@ -23,6 +25,7 @@
</el-checkbox-group>
</div>
</div>
+ <!-- 鍒ゆ柇 -->
<div v-else-if="qType == 3">
<div class="q-title" v-html="question.title" style="display: inline;margin-right: 10px" />
<span style="padding-right: 10px;">(</span>
@@ -33,6 +36,7 @@
</el-radio-group>
<span style="padding-left: 10px;">)</span>
</div>
+ <!-- 濉┖ -->
<div v-else-if="qType == 4">
<div class="q-title" v-html="question.title" />
<div v-if="answer.contentArray !== null">
@@ -42,6 +46,7 @@
</el-form-item>
</div>
</div>
+ <!-- 绠�绛斻�佽绠椼�佸垎鏋� -->
<div v-else-if="qType == 5 || qType == 7 || qType == 8">
<div class="q-title" v-html="question.title" />
<div>
@@ -69,13 +74,16 @@
</div>
<div class="question-answer-show-item">
<span class="question-show-item">姝g‘绛旀锛�</span>
+ <!-- 閫夋嫨銆佸閫夈�佺畝绛斻�佽闊炽�佽绠椼�佸垎鏋� -->
<span v-if="qType == 1 || qType == 2 || qType == 5 || qType == 6 || qType == 7 || qType == 8" v-html="question.correct" class="q-item-span-content" />
+ <!-- 鍒ゆ柇 -->
<span v-if="qType == 3" v-html="trueFalseFormatter(question)" class="q-item-span-content" />
+ <!-- 濉┖ -->
<span v-if="qType == 4">{{ question.correctArray }}</span>
</div>
<div v-if = "answer.doRight == null">
<span style="color:#ECAB3C;">{{'鎵规敼锛�'}}</span>
- <el-input-number size="mini" v-model="question.markScore" :precision="1" :min="0" :max="parseInt(question.score)" ></el-input-number>
+ <el-input-number size="mini" v-model="answer.score" :precision="1" :min="0" :max="parseInt(question.score)" ></el-input-number>
</div>
</div>
<div v-else>
diff --git a/src/views/exam/exam/MarkPaperDetail.vue b/src/views/exam/exam/MarkPaperDetail.vue
index 283198e..890b58b 100644
--- a/src/views/exam/exam/MarkPaperDetail.vue
+++ b/src/views/exam/exam/MarkPaperDetail.vue
@@ -1,21 +1,44 @@
<template>
- <div>
- <el-row style="text-align: center;margin-top: 20px;margin-bottom: 20px; font-size: 28px">璇枃鑰冭瘯</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-main>
+ <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>
@@ -29,7 +52,7 @@
</el-card>
</el-row>
</el-form>
- </el-main>
+ </div>
</div>
</template>
@@ -37,6 +60,7 @@
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',
@@ -50,9 +74,9 @@
'code': 1, 'message': '鎴愬姛', 'data': {
'paper': {
'id': 30,
- 'level': 1,
- 'subjectId': 4,
'paperType': 7,
+ 'score': '15',
+ 'classes': null,
'name': '杩欐槸涓�涓祴璇曡瘯鍗�',
'suggestTime': 12,
'limitDateTime': null,
@@ -200,6 +224,48 @@
'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,
@@ -211,13 +277,11 @@
'correct': '绾㈡ゼ姊︺�佽タ娓歌銆佹按娴掍紶銆佷笁鍥芥紨涔�',
'score': '10',
'difficult': 3,
- 'itemOrder': 7,
+ 'itemOrder': 9,
'knowledgeIdList': [8, 9]
}
]
}],
- 'score': '15',
- 'classes': null
},
'answer': {
'id': 9,
@@ -279,11 +343,29 @@
'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': 6,
+ 'itemOrder': 9,
'questionScore': '10'
}],
'doTimeStr': '26绉�'
@@ -323,27 +405,53 @@
}
},
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>
diff --git a/src/views/exam/paper/list.vue b/src/views/exam/paper/list.vue
index bc8a314..b70a611 100644
--- a/src/views/exam/paper/list.vue
+++ b/src/views/exam/paper/list.vue
@@ -123,12 +123,12 @@
})
},
// 鑾峰彇绉戠洰
- getSubjects() {
+ getSubjects () {
subjectApi.list().then(re => {
this.subjects = re.data
})
},
- translate(subjectId) {
+ translate (subjectId) {
const subject = this.subjects.find(subject => subject.id == subjectId);
return subject ? subject.name : '鏈煡';
}
diff --git a/src/views/train/data-list/index.vue b/src/views/train/data-list/index.vue
index db2b93a..8ae8f7f 100644
--- a/src/views/train/data-list/index.vue
+++ b/src/views/train/data-list/index.vue
@@ -38,42 +38,7 @@
export default {
props: {
- tableData: [
- {
- id: 1,
- meetName: '鑻辫',
- startTime: '2024-6-13 8:00',
- endTime: '2024-6-13 8:00',
- teacherName: '鍏宠�佸笀'
- },
- {
- id: 2,
- meetName: '璇枃',
- startTime: '2024-6-13 8:00',
- endTime: '2024-6-13 8:00',
- teacherName: '娴嬭瘯娴嬭瘯'
- },
- {
- id: 3,
- meetName: '鏁板',
- startTime: '2024-6-13 8:00',
- endTime: '2024-6-13 8:00',
- teacherName: '娴嬭瘯娴嬭瘯'
- },
- {
- id: 4,
- meetName: '鏈哄満鑸┖',
- startTime: '2024-6-13 8:00',
- endTime: '2024-6-13 8:00',
- teacherName: '娴嬭瘯娴嬭瘯'
- },
- {
- id: 5,
- startTime: '2024-6-13 8:00',
- endTime: '2024-6-13 8:00',
- teacherName: '娴嬭瘯娴嬭瘯',
- }
- ]
+ tableData: []
},
methods: {
handleUpdate (item) {
@@ -83,18 +48,7 @@
this.$emit('remove',item)
},
start (item) {
- let routeUrl = this.$router.resolve({
- path: "/meet",
- query: {
- domain: 'ycl.easyblog.vip:8443/' + item.id,
- roomName: item.meetName,
- userInfoStr: JSON.stringify({
- displayName: item.teacherName
- })
- }
- })
- window.open(routeUrl.href, '_blank')
- // window.open('https://ycl.easyblog.vip:8443/test');
+ this.$emit('start',item)
}
}
};
diff --git a/src/views/train/index.vue b/src/views/train/index.vue
index 6e982e3..9a574a4 100644
--- a/src/views/train/index.vue
+++ b/src/views/train/index.vue
@@ -26,7 +26,7 @@
<div class="card-main flex-1 my-5 relative">
<div class="main-content absolute top-0 bottom-0 left-0 right-0">
- <DataList :tableData="tableData" @handleUpdate="handleUpdate" @remove = "remove"></DataList>
+ <DataList :tableData="tableData" @handleUpdate="handleUpdate" @remove = "remove" @start = "start"></DataList>
<div id="meet" ref="meet"></div>
</div>
</div>
@@ -39,10 +39,10 @@
<!-- 娣诲姞浼氳瀵硅瘽妗� -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form label-width="80px" ref="form" :model="form" :rules="rules" >
- <el-form-item label="鎴块棿鍚嶏細" prop="meetName" >
+ <el-form-item label="鎴块棿鍚�" prop="meetName" >
<el-input v-model="form.meetName" placeholder="璇疯緭鍏ユ埧闂村悕" style="width: 300px"></el-input>
</el-form-item>
- <el-form-item label="鐝骇锛�" >
+ <el-form-item label="鐝骇" >
<el-select
v-model="form.classesId"
placeholder="鐝骇"
@@ -62,6 +62,11 @@
end-placeholder="缁撴潫鏃ユ湡">
</el-date-picker>
</el-form-item>
+ <el-form-item label="鐘舵��" >
+ <el-radio v-model="form.status" :label="0">寰呭紑濮�</el-radio>
+ <el-radio v-model="form.status" :label="1">杩涜涓�</el-radio>
+ <el-radio v-model="form.status" :label="2">宸茬粨鏉�</el-radio>
+ </el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
@@ -80,7 +85,6 @@
import Pagination from '@/components/Pagination'
import { getMeets,addMeet,editMeet,deleteMeetById } from '@/api/meet'
import { myClasses } from '@/api/classes'
-
export default {
components: { DataList,Pagination},
@@ -132,6 +136,28 @@
}
})
},
+ start (item) {
+ // 淇敼鎴块棿鐘舵�佷负杩涜涓�
+ item.status = 1
+ editMeet(item).then(re => {
+ if (re.data.code === 1) {
+ this.getList()
+ let routeUrl = this.$router.resolve({
+ path: "/meet",
+ query: {
+ domain: 'ycl.easyblog.vip:8443/' + item.id,
+ roomName: item.meetName,
+ userInfoStr: JSON.stringify({
+ displayName: item.teacherName
+ })
+ }
+ })
+ window.open(routeUrl.href, '_blank')
+ } else {
+ this.$message.error(re.data.message)
+ }
+ })
+ },
handleUpdate (item) {
this.form = {
...item,
--
Gitblit v1.8.0