提交测试

This commit is contained in:
daihh
2022-12-22 17:05:05 +08:00
parent 230aa95d77
commit 022d791c8d
2 changed files with 232 additions and 121 deletions

View File

@@ -151,7 +151,8 @@
</div>
<!--考试-->
<div v-if="content.contentType==61">
<div style="display: flex;justify-content:space-between">
<course-exam :contentId="content.id"></course-exam>
<!-- <div style="display: flex;justify-content:space-between">
<div>
<el-input maxlength="50" @change="updateName" v-model="content.contentName" placeholder="内容的名称(限50字以内)"></el-input>
</div>
@@ -170,11 +171,6 @@
<template slot="append">分钟</template>
</el-input>
</el-col>
<!-- <el-col :span="9">
<el-form-item label="尝试次数">
<el-input-number v-model="exam.times" :min="0" :max="10" label="0表不限制"></el-input-number>
</el-form-item>
</el-col> -->
<el-col :span="9">
<el-form-item label="及格线">
<el-input placeholder="20-120" v-model="exam.passLine">
@@ -183,36 +179,6 @@
</el-form-item>
</el-col>
</el-form-item>
<!-- <el-form-item label="显示">
<el-col :span="10"><el-checkbox v-model="exam.showAnalysis">允许查看解析</el-checkbox> </el-col>
<el-col :span="14"><el-checkbox v-model="exam.showAnswer">允许查看答案</el-checkbox></el-col>
</el-form-item> -->
<!-- <el-form-item label="模式"> -->
<!-- <el-col :span="10"><el-checkbox v-model="exam.randomMode">随机生成试题</el-checkbox></el-col> -->
<!-- <el-col :span="14"> -->
<!-- <el-form-item label="数量">
<el-input-number v-model="exam.qnum" :min="1" :max="10" label="数量"></el-input-number>
</el-form-item> -->
<!-- </el-col> -->
<!-- </el-form-item> -->
<!-- <el-form-item label="试题排列">
<el-col :span="10">
<el-select v-model="exam.arrange">
<el-option :value="0" label="按顺序"></el-option>
<el-option :value="1" label="只题目乱序"></el-option>
<el-option :value="2" label="只选项乱序"></el-option>
<el-option :value="3" label="题目选项全乱序"></el-option>
</el-select>
</el-col>
<el-col :span="14">
<el-form-item label="评分方式">
<el-radio-group v-model="exam.scoringType">
<el-radio :label="1">最高一次</el-radio>
<el-radio :label="2">最后一次</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-form-item> -->
<el-form-item label="评分方式">
<el-col :span="8">
<el-radio-group v-model="exam.scoringType">
@@ -234,7 +200,7 @@
<div>
<simplePaper :data="examPaper" ></simplePaper>
</div>
</div>
</div> -->
</div>
<!--作业-->
<div v-if="content.contentType==60">

View File

@@ -2,8 +2,8 @@
<div>
<div v-if="exam.show==1">
<div style="padding: 10px; text-align: center;">
<el-button @click="changeExamShow(3)" type="primary" size="small">自定义考试</el-button>
<el-button @click="changeExamShow(2)" type="primary" size="small">选择已有考试</el-button>
<el-button @click="openCusExam()" type="primary" >自定义考试</el-button>
<el-button @click="openChoosePaper()" type="primary">选择已有考试</el-button>
</div>
</div>
<div v-if="exam.show==2">
@@ -14,140 +14,162 @@
</el-select>
</div>
-->
<div><el-input maxlength="50" placeholder="名称"></el-input></div>
<div><el-input maxlength="50" placeholder="创建人"></el-input></div>
<div style="padding-left: 10px;"><el-button type="primary" size="small">搜索已有考试</el-button></div>
<div><el-input v-model="usePaper.keyword" maxlength="50" placeholder="名称"></el-input></div>
<div style="padding-left: 10px;"><el-button @click="findExamPapers()" type="primary" >查询</el-button></div>
<div style="padding-left: 10px;"><el-button @click="changeExamShow(1)" type="danger" >返回</el-button></div>
</div>
<div>
<div style="text-align: center;padding-top: 10px;">
<el-table style="100%" :data="exam.findhas.list" border stripe>
<el-table-column label="考试名称" prop="author"><template>考试名称</template></el-table-column>
<el-table-column label="创建时间" prop="author">
<div style="text-align: center;padding-top: 10px; overflow-y: auto;">
<el-table style="100%" height="480" :data="usePaper.list" border stripe>
<el-table-column prop="testName" label="考试名称"></el-table-column>
<el-table-column prop="sysCreateTime" label="创建时间"></el-table-column>
<el-table-column prop="sysCreateBy" label="创建人" width="80px" ></el-table-column>
<el-table-column label="选择" width="60px">
<template slot-scope="scope">
2022-02-03
</template>
</el-table-column>
<el-table-column label="创建人" prop="content">
<template>
XXX
</template>
</el-table-column>
<el-table-column label="选择" width="80px">
<template slot-scope="scope">
<el-button @click="changeExamShow(9)" type="primary" size="mini">选择</el-button>
<el-button size="mini" @click="chooseExamPaper(scope.row)" type="primary" >选择</el-button>
</template>
</el-table-column>
</el-table>
<!--分页功能-->
<div v-if="usePaper.total >10" style="text-align: center; margin-top:10px">
<el-pagination background
@current-change="changePaperPage"
:current-page="usePaper.pageIndex"
:page-sizes="[10, 20, 30, 40]"
:page-size="usePaper.pageSize"
layout="total,pager"
:total="usePaper.total"
></el-pagination>
</div>
</div>
</div>
</div>
<div v-if="exam.show==3">
<div style="display: flex;justify-content: space-between;padding:5px 10px;line-height: 30px; border: 1px solid #e7e7e7;">
<div>自定义考试</div>
<div style="display: flex;justify-content: space-between;padding:5px 10px;line-height: 30px; border-bottom: 1px solid #e7e7e7;">
<div>{{exam.paperType==1? '自定义考试':'使用独立考试试卷'}} </div>
<div>
<el-checkbox v-model="exam.onlyQuestion">只显示试题</el-checkbox>
<el-button style="margin-left: 10px;" @click="changeExamShow(1)" type="info" size="mini" >重新选择</el-button>
<el-button :loading="loading" style="margin-left: 10px;" @click="saveContent(3)" type="primary" > </el-button>
<el-button style="margin-left: 10px;" @click="deleteContent(3)" type="danger" > </el-button>
</div>
</div>
<div style="padding-top: 10px;overflow: auto;">
<div v-if="!exam.onlyQuestion">
<el-form size="mini" label-width="80px">
<el-form size="small" label-width="80px">
<!-- 课程内考虑不需要名辽
<el-form-item label="考试名称">
<el-input v-model="exam.info.name" placeholder="请输入名称"></el-input>
<el-input v-model="exam.info.testName" placeholder="请输入名称"></el-input>
</el-form-item>
-->
<el-form-item label="考试时长">
<el-col :span="10">
<el-input v-model="exam.info.passScore" placeholder="20-120">
<el-col :span="8">
<el-input size="mini" v-model="exam.info.testDuration" placeholder="20-120">
<template slot="append">分钟</template>
</el-input>
</el-col>
<el-col :span="14">
<!-- <el-col :span="9">
<el-form-item label="尝试次数">
<el-input-number v-model="exam.info.times" :min="0" :max="10" label="0表不限制"></el-input-number>
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="及格线">
<el-input placeholder="20-100">
<el-input size="mini" placeholder="20-100" :maxlength="3" v-model="exam.info.passLine">
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="显示">
<el-col :span="10">
<el-checkbox v-model="exam.info.showJieXi">允许查看解析</el-checkbox>
</el-col>
<el-col :span="14">
<el-checkbox v-model="exam.info.showAnswer">允许查看答案</el-checkbox>
</el-col>
<!-- <el-form-item label="显示">
<el-col :span="10"><el-checkbox v-model="exam.info.showAnalysis">允许查看解析</el-checkbox> </el-col>
<el-col :span="14"><el-checkbox v-model="exam.info.showAnswer">允许查看答案</el-checkbox></el-col>
</el-form-item>
<el-form-item label="试题试卷">
<el-form-item label="模式">
<el-col :span="10"><el-checkbox v-model="exam.info.randomMode">随机生成试题</el-checkbox></el-col>
<el-col :span="14">
<el-form-item label="数量">
<el-input-number v-model="exam.info.qnum" :min="1" :max="10" label="数量"></el-input-number>
</el-form-item>
</el-col>
</el-form-item> -->
<!-- <el-form-item label="试题排列">
<el-col :span="10">
<el-checkbox v-model="exam.info.randomType">随机试题</el-checkbox>
<el-select v-model="exam.arrange">
<el-option :value="0" label="按顺序"></el-option>
<el-option :value="1" label="只题目乱序"></el-option>
<el-option :value="2" label="只选项乱序"></el-option>
<el-option :value="3" label="题目选项全乱序"></el-option>
</el-select>
</el-col>
<el-col :span="14">
<el-checkbox-group v-model="exam.info.qorder">
<el-checkbox :label="1">题目乱序</el-checkbox>
<el-checkbox :label="2">选项乱序</el-checkbox>
</el-checkbox-group>
<el-form-item label="评分方式">
<el-radio-group v-model="exam.info.scoringType">
<el-radio :label="1">最高一次</el-radio>
<el-radio :label="2">最后一次</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="尝试次数">
<el-col :span="10">
<el-input placeholder="0代表不限制"></el-input>
</el-col>
<el-col :span="14">
<el-form-item label="评分方式">
<el-radio-group v-model="exam.info.randomType">
</el-form-item> -->
<el-form-item label="评分方式">
<el-col :span="8">
<el-radio-group v-model="exam.info.scoringType">
<el-radio :label="1">最高一次</el-radio>
<el-radio :label="2">最后一次</el-radio>
</el-radio-group>
</el-col>
<el-col :span="16">
<el-form-item label="百分制">
<el-checkbox v-model="exam.info.percentScore">实际成绩*100/实际总分</el-checkbox>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="考试说明">
<el-input type="textarea" show-word-limit v-model="exam.info.info" placeholder="关于考试的说明(限255字以内)" maxlength="255"></el-input>
</el-form-item>
</el-form>
</div>
<div style="padding: 10px;text-align: center;">
<el-button type="primary">导入</el-button>
<el-button type="primary">添加</el-button>
<el-button @click="changeExamShow(9)" type="primary">提交</el-button>
</div>
<div>
<el-table :data="exam.info.questions" style="100%" border stripe>
<el-table-column label="题干" prop="body">
<template>试题11</template>
</el-table-column>
<el-table-column label="设置得分" prop="score" width="80px">
<template slot-scope="scope">10</template>
</el-table-column>
<el-table-column label="操作" width="80px">
<template slot-scope="scope">
<el-button icon="el-icon-edit" type="text" size="mini"></el-button>
<el-button icon="el-icon-close" type="text" size="mini"></el-button>
</template>
</el-table-column>
</el-table>
<div v-if="exam.info.paperType==1">
<simplePaper :data="exam.paperJson"></simplePaper>
</div>
<div v-if="exam.info.paperType==2">
<div style="font-size: 20px;padding: 10px;" >试卷 {{usePaper.paperName}}</div>
</div>
</div>
</div>
<div v-if="exam.show==9">
<div style="display: flex;justify-content: space-between;padding:5px 10px;line-height: 30px; border: 1px solid #e7e7e7;">
<div>考试信息</div><div><el-button @click="changeExamShow(1)" type="info" size="mini" >重新设置考试</el-button> </div>
<div>考试信息</div><div> </div>
</div>
<div style="padding-top: 10px;">
<el-form size="mini" label-width="80px">
<el-form-item label="考试名称">XXXXXXXXXXXXXXX</el-form-item>
<el-form-item label="考试时长">60分钟</el-form-item>
<el-form-item label="显示解析">允许查看</el-form-item>
<el-form-item label="显示答案">不允许查看</el-form-item>
<el-form-item label="随机模式"></el-form-item>
<el-form-item label="尝试次数">不限制</el-form-item>
<el-form-item label="试题排列">题目乱序</el-form-item>
<el-form-item label="评分方式">最高一次</el-form-item>
<el-form-item label="及格线">60%</el-form-item>
<el-form size="small" label-width="80px">
<el-form-item label="试卷类型">
{{exam.info.paperType==1? '自定义试卷':'使用考试试卷: '+usePaper.paperName}}
</el-form-item>
<el-form-item label="考试时长">
<el-col :span="6">{{exam.info.passScore}}分钟</el-col>
<el-col :span="9">
<el-form-item label="及格线">{{exam.info.passLine}}%</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="评分方式">
<el-col :span="6">
<span v-if="exam.info.scoringType==1">最高一次</span>
<span v-if="exam.info.scoringType==2">最后一次</span>
</el-col>
<el-col :span="10">
<el-form-item label="考试成绩">
<span v-if="exam.info.percentScore">按百分制显示</span>
<span v-else>按实际得分显示</span>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="考试说明">{{exam.info.info}}</el-form-item>
<el-form-item label="">
<el-button type="primary">编辑试卷</el-button>
<el-button @click="exam.paperShow=true" type="primary">预览试卷</el-button>
<el-button type="primary" @click="changeExamShow(3)"> </el-button>
<el-button type="danger" @click="deleteContent(3)"> </el-button>
</el-form-item>
</el-form>
<div style="color: #ff0000;">只限于自定义考试才会有编辑试卷</div>
</div>
</div>
<el-dialog title="查看试卷" append-to-body :visible.sync="exam.paperShow" width="800px" custom-class="g-dialog">
@@ -162,9 +184,21 @@
</template>
<script>
import simplePaper from "@/components/Course/simpleTestPaper.vue";
import apiCourse from '../../api/modules/course.js';
import apiExamPaper from '../../api/modules/paper.js';
import { deepClone } from "../../utils";
export default{
components:{simplePaper},
props:{
contentId:{
type: String,
default:'',
}
},
data(){
return {
examChange:{},
exam:{
show:1,
paperShow:false,
@@ -190,11 +224,122 @@
list:[{},{}]
}
},
usePaper:{ //使用考试试卷
pageIndex:1,
pageSize:10,
total:0,
list:[],
keyword:'',
paperId:'',//选择的试卷的id
paperName:'',//选择的试卷的名称
paperJson:{items:[]},
}
}
},
mounted() {
if(this.contentId){
this.reloadExam();
}
},
watch:{
contentId(newVal,oldVal){
if(newVal!=oldVal){
this.reloadExam();
}
}
},
methods:{
reloadExam(){
apiCourse.getExam(this.exam.content.id).then(res=>{
if(res.status==200){
this.exam.info=res.result;
if(res.result.paperType==1){
this.exam.paperJson=JSON.parse(res.result.paperContent);
}else{
apiExamPaper.detail(this.exam.info.paperId).then(rs=>{
if(rs.status==200){
this.usePaper.paperId=rs.result.id;
this.usePaper.paperName=rs.result.testName;
this.usePaper.counts=rs.result.counts;
//this.usePaper.paperJson= rs.result.paperContent;
}
})
}
this.exam.show=9;
this.examChange = deepClone(this.exam);
}else if(res.status==404){
//没有找到作业信息
//this.exam.paperJson={items:[]};
//this.exam.show=1;
this.exam.info.id='';
}else{
this.$message.error(res.message);
}
})
},
changeExamShow(idx){
this.exam.show=idx;
},
openCusExam(){ //自定义考试
this.exam.show=3;
this.exam.info.paperType=1;
this.exam.info.paperId='';
this.usePaper.pageIndex=1;
this.usePaper.keyword="";
},
openChoosePaper(){
this.exam.show=2;
this.exam.info.paperType=2; //选择试卷
this.exam.info.paperId='';
},
findExamPapers(){ //查询已有的考试试卷
this.usePaper.pageIndex=1;
this.loadExamPapers();
},
loadExamPapers(){
let pars={
pageIndex:this.usePaper.pageIndex,
pageSize:this.usePaper.pageSize,
keyword:this.usePaper.keyword
}
apiExamPaper.querylist(pars).then(rs=>{
if(rs.status==200){
this.usePaper.list=rs.result.list;
this.usePaper.total=rs.result.count;
}else{
this.$message.error('查询可用试卷失败');
}
})
},
changePaperPage(pindex){
this.usePaper.pageIndex=pindex;
this.loadExamPapers();
},
chooseExamPaper(epaper){ //选择试卷后
if(epaper.counts==0){
this.$message.error('此试卷无试题内容,请重新选择');
return;
}
this.exam.info.paperType=2;// 选择已有试卷
this.exam.info.paperId=epaper.id;// 选择已有试卷
this.usePaper.paperId=epaper.id;
this.usePaper.paperName=epaper.testName;
//this.usePaper.paperJson= epaper.paperContent;
this.loadExamPaper();
this.changeExamShow(3);
},
loadExamPaper(){
if(this.exam.info.paperType!=2){
return;
}
apiExamPaper.detail(this.exam.info.paperId).then(rs=>{
if(rs.status==200){
this.usePaper.paperId=rs.result.id;
this.usePaper.paperName=rs.result.testName;
this.usePaper.counts=rs.result.counts;
//this.usePaper.paperJson= rs.result.paperContent;
}
})
}
}
}