仿真试卷页
This commit is contained in:
parent
103a63494e
commit
2d856bc24e
@ -9,8 +9,11 @@
|
||||
<el-tabs v-model="activeModuleName" class="tabs-box" type="border-card" @tab-click="handleTabClick">
|
||||
<template v-for="(mod, modIndex) in moduleList">
|
||||
<el-tab-pane :key="modIndex" :label="mod.moduleName" :name="mod.customModuleId+''">
|
||||
<el-card>
|
||||
<div>考试时间:{{ mod.duration }}</div>
|
||||
<el-card style="padding:10px">
|
||||
<div>考试时间:{{ mod.duration }}分钟</div>
|
||||
</el-card>
|
||||
<el-card style="margin-top: 10px;">
|
||||
<div style="padding:10px"> 任务目录:</div>
|
||||
<el-tree
|
||||
:data="taskTreeDatas"
|
||||
node-key="id"
|
||||
@ -18,10 +21,27 @@
|
||||
:expand-on-click-node="false"
|
||||
/>
|
||||
</el-card>
|
||||
<el-button type="primary" @click="beginExercise(mod.customModuleId)">开始训练</el-button>
|
||||
<el-card style="margin-top: 10px;">
|
||||
<div style="padding:10px"> 评分规则:</div>
|
||||
<el-table
|
||||
:data="ruleData"
|
||||
border
|
||||
show-summary
|
||||
:summary-method="getSummaries"
|
||||
style="width: 100%;margin-top: 10px;"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="描述" prop="text" />
|
||||
<el-table-column label="作业程序" prop="worker" />
|
||||
<el-table-column label="分值" prop="score" width="50" />
|
||||
<el-table-column label="评分标准" prop="criteria" />
|
||||
</el-table>
|
||||
</el-card>
|
||||
<el-button type="primary" size="medium" style="margin-top: 10px;" @click="beginExercise(mod.customModuleId)">开始训练</el-button>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</el-tabs>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -29,8 +49,7 @@
|
||||
<script>
|
||||
import paperList from './paperList';
|
||||
import drapLeft from '@/views/components/drapLeft/index';
|
||||
import localStore from 'storejs';
|
||||
import { getPaperDetail} from '@/api/contest';
|
||||
import { getPaperDetail, getContextScoreDetail} from '@/api/contest';
|
||||
let id = 1;
|
||||
|
||||
export default {
|
||||
@ -41,13 +60,14 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
widthLeft: 450,
|
||||
widthLeft: 380,
|
||||
paperName:'试卷',
|
||||
paperId:'',
|
||||
activeModuleName:'',
|
||||
moduleList:[],
|
||||
moduleTreeDatas:[],
|
||||
taskTreeDatas:[]
|
||||
taskTreeDatas:[],
|
||||
ruleData:[]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -55,9 +75,6 @@ export default {
|
||||
return this.$store.state.app.width;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.widthLeft = Number(localStore.get('LeftWidth')) ? Number(localStore.get('LeftWidth')) : 450;
|
||||
},
|
||||
methods: {
|
||||
drapWidth(width) {
|
||||
this.widthLeft = Number(width);
|
||||
@ -84,16 +101,48 @@ export default {
|
||||
};
|
||||
});
|
||||
this.taskTreeDatas = this.moduleTreeDatas[0].children;
|
||||
getContextScoreDetail(this.moduleTreeDatas[0].moduleScoreRuleId).then(res => {
|
||||
this.ruleData = res.data.rule ? res.data.rule.units : [];
|
||||
}).catch(() => { this.ruleData = []; });
|
||||
}).catch(error => {
|
||||
this.$message.error(error.message);
|
||||
});
|
||||
},
|
||||
handleTabClick(tab) {
|
||||
this.taskTreeDatas = this.moduleTreeDatas.find((item)=>item.customModuleId == tab.name).children;
|
||||
const moduleItem = this.moduleTreeDatas.find((item)=>item.customModuleId == tab.name);
|
||||
this.taskTreeDatas = moduleItem.children;
|
||||
getContextScoreDetail(moduleItem.moduleScoreRuleId).then(res => {
|
||||
this.ruleData = res.data.rule ? res.data.rule.units : [];
|
||||
}).catch(() => { this.ruleData = []; });
|
||||
},
|
||||
beginExercise(moduleId) {
|
||||
this.$router.push({path: '/contest/detail', query:{paperId:this.paperId, moduleId }});
|
||||
},
|
||||
getSummaries(param) {
|
||||
const { columns, data } = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '总分';
|
||||
return;
|
||||
}
|
||||
if (index === 3) {
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
sums[index] += '';
|
||||
} else {
|
||||
sums[index] = '/';
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
},
|
||||
transformTree(data) {
|
||||
const result = {label:data.name, children:[], id:id++, type:'taskCatalog' };
|
||||
if (data.group.length) {
|
||||
|
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div v-loading="loading" class="map-list-main">
|
||||
<div id="trainingMapTree" class="left-map-list">
|
||||
<div class="mapListName">
|
||||
<div v-loading="loading" class="paper-list-main">
|
||||
<div id="trainingMapTree" class="left-paper-list">
|
||||
<div class="paperListName">
|
||||
<el-form :inline="true" :model="formModel" class="demo-form-inline">
|
||||
<el-form-item label="组别">
|
||||
<el-form-item label="组别" :label-style="{ color: 'red' }">
|
||||
<el-select v-model="formModel.group" placeholder="请选择" clearable>
|
||||
<el-option
|
||||
v-for="item in groupOption"
|
||||
@ -23,7 +23,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="queryPaper">查询</el-button>
|
||||
<el-button type="primary" size="medium" @click="queryPaper">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -35,7 +35,7 @@
|
||||
active-text-color="#ffd04b"
|
||||
>
|
||||
<template v-for="(paper,paperIndex) in paperList">
|
||||
<el-menu-item :key="paperIndex" :index="paper.name" @click="showPaperDetail(paper)">
|
||||
<el-menu-item :key="paperIndex" :index="paper.id+''" @click="showPaperDetail(paper)">
|
||||
{{ paper.name }}
|
||||
</el-menu-item>
|
||||
</template>
|
||||
@ -54,7 +54,7 @@ export default {
|
||||
loading: true,
|
||||
formModel: {
|
||||
seasonId: '', // 所属赛季id
|
||||
group:'' // 高职和中职
|
||||
group:'GZ' // 高职和中职
|
||||
},
|
||||
groupOption:[{
|
||||
value: 'ZZ',
|
||||
@ -73,8 +73,10 @@ export default {
|
||||
queryContestSeasonPaged({pageSize:999}).then((res) => {
|
||||
this.seasonOptions = res.data.list;
|
||||
});
|
||||
getPaperList({pageSize:999}).then((res) => {
|
||||
getPaperList({ group:'GZ', pageSize:999}).then((res) => {
|
||||
this.paperList = res.data.list;
|
||||
this.defaultIndex = this.paperList[0].id + '';
|
||||
this.$emit('changeModuleData', this.paperList[0]);
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
@ -92,51 +94,57 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.el-menu{
|
||||
background-color: transparent;
|
||||
}
|
||||
.el-menu-item{
|
||||
&:hover{
|
||||
background: #00172E;
|
||||
}
|
||||
&:focus{
|
||||
background-color: #00172E;
|
||||
}
|
||||
}
|
||||
.mapListName{
|
||||
padding: 10px 0 10px 17px;
|
||||
background: #01468B;
|
||||
position: sticky;
|
||||
position: -webkit-sticky;
|
||||
border-bottom: 1px solid #00172E;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
}
|
||||
.left-map-list{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
padding-bottom: 10px;
|
||||
background: linear-gradient(to bottom, #01468B, #00172E);
|
||||
&::-webkit-scrollbar{
|
||||
background: #06284a;
|
||||
}
|
||||
&::-webkit-scrollbar-thumb{
|
||||
background: #0c0909;
|
||||
}
|
||||
&::-webkit-scrollbar-track{
|
||||
background: #06284a;
|
||||
}
|
||||
}
|
||||
.map-list-main{
|
||||
.paper-list-main{
|
||||
height: 100%;
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
.left-paper-list{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
padding-bottom: 10px;
|
||||
background: linear-gradient(to bottom, #01468B, #00172E);
|
||||
&::-webkit-scrollbar{
|
||||
background: #06284a;
|
||||
}
|
||||
&::-webkit-scrollbar-thumb{
|
||||
background: #0c0909;
|
||||
}
|
||||
&::-webkit-scrollbar-track{
|
||||
background: #06284a;
|
||||
}
|
||||
.paperListName{
|
||||
padding: 10px 0 10px 17px;
|
||||
background: #01468B;
|
||||
position: sticky;
|
||||
position: -webkit-sticky;
|
||||
border-bottom: 1px solid #00172E;
|
||||
top: 0;
|
||||
z-index: 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-menu{
|
||||
background-color: transparent;
|
||||
.el-menu-item{
|
||||
&:hover{
|
||||
background: #00172E;
|
||||
}
|
||||
&:focus{
|
||||
background-color: #00172E;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/deep/{
|
||||
.el-menu{
|
||||
border-right-width: 0;
|
||||
}
|
||||
}
|
||||
/deep/{
|
||||
.el-form-item__label{
|
||||
color: white !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
Loading…
Reference in New Issue
Block a user