Skip to content

Commit

Permalink
查看学生成绩
Browse files Browse the repository at this point in the history
  • Loading branch information
FinGet committed May 2, 2018
1 parent d7cd2f0 commit 23d2dde
Show file tree
Hide file tree
Showing 7 changed files with 367 additions and 53 deletions.
108 changes: 107 additions & 1 deletion server/controllers/teacher.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const Teacher = require('../model/teacher');
const Paper = require('../model/papers');
const Question = require('../model/question');
const Student = require('../model/student');


// var teacher = new Teacher();
Expand Down Expand Up @@ -191,7 +192,7 @@ exports.updateUser = function (req, res) {
})
};
// 获取所有试卷的考试
exports.getPublishExams = function (req,res) {
exports.getAllExams = function (req,res) {
let userName =req.session.userName;
Teacher.findOne({"userName":userName}).populate({path:'_papers'})
.exec((err,doc)=>{
Expand Down Expand Up @@ -636,3 +637,108 @@ exports.updatePaper = function (req,res) {
}
})
};

// 阅卷
exports.getExams = function (req, res) {
// console.log(req.session.userName);
let name = req.param('name'),
// 通过req.param()取到的值都是字符串,而limit()需要一个数字作为参数
pageSize = parseInt(req.param('pageSize')),
pageNumber = parseInt(req.param('pageNumber')),
userName = req.session.userName;
let skip = (pageNumber-1)*pageSize; // 跳过几条
let reg = new RegExp(name,'i'); // 在nodejs中,必须要使用RegExp,来构建正则表达式对象。
let params = {
name: reg
};
Teacher.findOne({'userName':userName}).populate({path:'_papers',match:{name: reg,examnum:{"$gt":0}},options:{skip:skip,limit:pageSize}})
.exec((err, doc) => {
if (err) {
res.json({
status:'1',
msg: err.message
})
} else {
if (doc) {
res.json({
status: '0',
msg:'success',
result:doc,
count: doc._papers.length
})
} else {
res.json({
status: '2',
msg:'没有该试卷'
})
}
}
})
};

// 获取考试成绩
exports.getScores = function (req, res) {
let id = req.param('id'),
name = req.param('name'),
// 通过req.param()取到的值都是字符串,而limit()需要一个数字作为参数
pageSize = parseInt(req.param('pageSize')),
pageNumber = parseInt(req.param('pageNumber')),
userName = req.session.userName;
let skip = (pageNumber-1)*pageSize; // 跳过几条
let reg = new RegExp(name,'i'); // 在nodejs中,必须要使用RegExp,来构建正则表达式对象。
let params = {
name: reg
};
Teacher.findOne({'userName':userName},(err, doc) => {
if(err) {
res.json({
status: '1',
msg: err.message
})
} else {
if(doc) {
console.log(id);
Student.find({"userName": reg}).skip(skip).limit(pageSize)
.exec((err,doc) => {
if (err) {
res.json({
status:'1',
msg: err.message
})
} else {
if (doc) {
let result = [];
doc.forEach(item => {
item.exams.forEach(item1=> {
if(item1._paper == id){
result.push({
name: item.userName,
score: item1.score,
date: new Date(item1.date).toLocaleString()
})
}
})
})
res.json({
status: '0',
msg:'success',
result:result,
count: result.length
})
} else {
res.json({
status: '2',
msg:'没有该试卷'
})
}
}
})
} else {
res.json({
status:'1',
msg: '请登录'
})
}
}
})
}
8 changes: 6 additions & 2 deletions server/routes/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,12 @@ module.exports = function(app) {
app.post('/api/updateQuestion', Teacher.updateQuestion);
// 修改试卷
app.post('/api/updatePaper', Teacher.updatePaper);
// 获取已发布的考试
app.get('/api/getPublishExams',Teacher.getPublishExams);
// 获取所有的考试
app.get('/api/getAllExams',Teacher.getAllExams);
// 获取已考试的试卷
app.get('/api/getExams',Teacher.getExams);
// 获取学生考试成绩
app.get('/api/getScores', Teacher.getScores);


/*----------------------学生用户----------------------*/
Expand Down
29 changes: 4 additions & 25 deletions src/examManage/pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -63,28 +63,7 @@
data() {
return {
banner:require('../../common/img/banner.jpg'),
news:[
{
title: '关于2017最新考试通知关于2017最新考试通知关于2017最新考试通知关于2017最新考试通知',
data: '2017/09/01',
time: '16:30'
},
{
title: '关于2017最新考试通知',
data: '2017/09/01',
time: '16:30'
},
{
title: '关于2017最新考试通知',
data: '2017/09/01',
time: '16:30'
},
{
title: '关于2017最新考试通知',
data: '2017/09/01',
time: '16:30'
}
],
news:[],
exams: []
}
},
Expand All @@ -94,11 +73,11 @@
}
},
mounted(){
this.getPublishExams();
this.getAllExams();
},
methods:{
getPublishExams(){
this.$axios.get('/api/getPublishExams').then(response => {
getAllExams(){
this.$axios.get('/api/getAllExams').then(response => {
let res = response.data;
if(res.status == '0') {
this.news = res.result._papers;
Expand Down
148 changes: 144 additions & 4 deletions src/examManage/pages/papersManage/markpapers.vue
Original file line number Diff line number Diff line change
@@ -1,11 +1,151 @@
<template>
<div class="markpapers">
阅卷
</div>
<div class="markpapers">
<el-row>
<el-col>
<div class="pull-left search-warpper marginB10">
<div class="pull-left search-title marginR10">试卷名称:</div>
<el-input class=" pull-left input150" v-model="name" @keyup.enter.native="getMypapers"></el-input>
<el-button class="pull-left marginL10" type="primary" @click="getMypapers" icon="search">搜索</el-button>
</div>
</el-col>
<el-col>
<el-table
class="table"
ref="multipleTable"
:data="mypapers"
border
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column
label="试卷名称"
prop="name"
show-overflow-tooltip>
<template scope="scope">
{{scope.row.name}}
</template>
</el-table-column>
<el-table-column
label="试卷总分"
prop="totalPoints"
align="center"
width="100">
</el-table-column>
<el-table-column
prop="time"
width="100"
align="center"
label="考试时长"
>
</el-table-column>
<el-table-column
width="190"
align="center"s
label="考试时间"
>
<template scope="scope">
{{scope.row.startTime?new Date(scope.row.startTime).toLocaleString():'还未开考'}}
</template>
</el-table-column>
<el-table-column
label="考试人数"
width="100"
align="center"
>
<template scope="scope">
<p v-if="scope.row.startTime">{{scope.row.examnum}}</p>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
>
<template scope="scope">
<el-button type="info" size="mini" :disabled="!scope.row.examnum>0" @click="seeDetail(scope.row._id)">
{{scope.row.examnum>0?'查看考试情况':'没学生参加考试'}}
</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col class="marginT10" v-if="pageTotal>pageSize">
<div class="page-wrapper pull-right">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNumber"
:page-size="pageSize"
layout="total, prev, pager, next"
:total="pageTotal">
</el-pagination>
</div>
</el-col>
</el-row>
</div>
</template>

<script type="text/ecmascript-6">
export default {
data() {
return {
selections:[],
visible:false,
name: '', // 试卷名称 v-model
pageNumber: 1, // 当前页
pageSize:10 ,
pageTotal: 0, // 数据总数
mypapers: [] // 试卷数据
}
},
mounted(){
this.getMypapers()
},
methods: {
/**
* [getMypapers 加载试卷信息]
* @return {[type]} [description]
*/
getMypapers(){
// this.mypapers = [];
// this.$axios.get('/api/getExams',{
// params:{
// name: this.name,
// pageSize: this.pageSize,
// pageNumber: this.pageNumber
// }
// }).then(response => {
// let res = response.data;
// if(res.status == 0) {
// res.result._papers.forEach(item => {
// if(item.startTime) {
// this.mypapers.push(item);
// }
// })
// this.pageTotal = this.mypapers.length;
// }
// }).catch(err => {
// this.$message.error("获取试卷数据失败!")
// })
},
/**
* 将选中项赋值给this.selections
* @param {val} 框架自带,选中项
* @return {[type]}
*/
handleSelectionChange (val) {
this.selections = val;
},
handleSizeChange(val) {
console.log(`每页 ${val}`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
},
seeDetail(id){
// this.$router.push({path:'/endhome/studentresult',query:{'id':id}})
}
}
}
</script>

<style rel="stylesheet/scss" scoped="scoped" lang="scss">
Expand Down
10 changes: 0 additions & 10 deletions src/examManage/pages/papersManage/mypapers.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,6 @@
{{scope.row.startTime?new Date(scope.row.startTime).toLocaleString():'还未开考'}}
</template>
</el-table-column>
<el-table-column
label="考试人数"
width="100"
align="center"
>
<template scope="scope">
<p v-if="scope.row.startTime">{{scope.row.examnum}}</p>
<el-tag v-else type="danger">未考</el-tag>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
Expand Down
Loading

0 comments on commit 23d2dde

Please sign in to comment.