feat: teacher update score of submits

This commit is contained in:
lbaf23 2021-08-05 10:19:49 +08:00
parent 8c29ac1a79
commit 34283671a7
5 changed files with 66 additions and 29 deletions

View File

@ -95,19 +95,15 @@ func (p *ProjectController) UpdateSubmit() {
p.ServeJSON()
return
}
if user.Tag != "student" {
resp = Response{
Code: 403,
Msg: "非法用户",
}
p.Data["json"] = resp
p.ServeJSON()
return
var uid string
if user.Tag == "student" {
uid = user.Username
}
uid := user.Username
tid, err := p.GetInt64(":taskId")
sid, err := p.GetInt64(":submitId")
pid, err := p.GetInt64(":projectId")
score, err := p.GetInt("score")
scored, err := p.GetBool("scored")
f := &models.Submit{
Id: sid,
ProjectId: pid,
@ -119,16 +115,18 @@ func (p *ProjectController) UpdateSubmit() {
SubmitContent: p.GetString("submitContent"),
FilePath: p.GetString("filePath"),
CreateAt: time.Now(),
Score: score,
Scored: scored,
}
var c =make([]models.Choice, 0)
if f.SubmitType == "survey" {
var c = make([]models.Choice, 0)
if user.Tag == "student" && f.SubmitType == "survey" {
err = json.Unmarshal([]byte(p.GetString("choices")), &c)
}
err = f.Update(c)
if err != nil {
p.Data["json"] = Response{
Code: 400,
Msg: "提交失败",
Msg: err.Error(),
}
} else {
p.Data["json"] = Response{
@ -138,4 +136,3 @@ func (p *ProjectController) UpdateSubmit() {
}
p.ServeJSON()
}

View File

@ -7,9 +7,10 @@ import (
type TaskResponse struct {
Response
Tasks []models.TaskDetail `json:"tasks"`
Learning bool `json:"learning"`
Editable bool `json:"editable"`
Tasks []models.TaskDetail `json:"tasks"`
Learning bool `json:"learning"`
Editable bool `json:"editable"`
TeacherScore bool `json:"teacherScore"`
}
// GetSectionTasksDetail
@ -124,16 +125,18 @@ func (p *ProjectController) GetProjectTasksDetail() {
}
showSubmit := false
teacherScore := false
uid := user.Username
editable := true
pid := p.GetString(":projectId")
if user.Tag == "teacher" {
uid = p.GetString("studentId")
showSubmit = true
editable = false
teacherScore = true
}
pid := p.GetString(":projectId")
if user.Tag != "student" {
learning = false
} else {
@ -161,6 +164,7 @@ func (p *ProjectController) GetProjectTasksDetail() {
Tasks: tasks,
Learning: learning,
Editable: editable,
TeacherScore: teacherScore,
}
}
p.ServeJSON()

View File

@ -70,7 +70,7 @@ func (p *Submit) Create(c []Choice) (err error) {
}
func (p *Submit) Update(c []Choice) (err error) {
_, err = p.GetEngine().ID(p.Id).Update(p)
if p.SubmitType == "survey" {
if len(c) > 0 && p.SubmitType == "survey" {
var cs []Choice
err = (&Choice{}).GetEngine().
Where("submit_id = ?", p.Id).
@ -83,7 +83,6 @@ func (p *Submit) Update(c []Choice) (err error) {
return
}
func CountSubmit(c []Choice, cl []Choice, taskId int64) {

View File

@ -1,10 +1,11 @@
import React, {useEffect, useState} from "react";
import {Collapse, Divider, List, Progress} from "antd";
import {Collapse, Divider, Input, List, Progress, message, InputNumber, Tooltip, Button} from "antd";
import TaskApi from "../../../../api/TaskApi";
import ChapterApi from "../../../../api/ChapterApi";
import TaskCard from "../../PreviewProject/component/TaskCard";
import util from "../../component/Util"
import SubmitApi from "../../../../api/SubmitApi";
function StudentEvidence(obj) {
const pid = obj.project === undefined ? obj.pid : obj.project.id
@ -12,6 +13,7 @@ function StudentEvidence(obj) {
const [tasks, setTasks] = useState([])
const [learning, setLearning] = useState(false)
const [editable, setEditable] = useState(false)
const [teacherScore, setTeacherScore] = useState(false)
const [chapters, setChapters] = useState([])
const [showMinute, setShowMinute] = useState(false)
@ -66,6 +68,7 @@ function StudentEvidence(obj) {
setTasks(t)
setLearning(res.data.learning)
setEditable(res.data.editable)
setTeacherScore(res.data.teacherScore)
}
}
})
@ -73,6 +76,23 @@ function StudentEvidence(obj) {
console.log(e)
})
}
const changeScore = (v, index) => {
tasks[index].submit.score = v
setTasks([...tasks])
}
const saveScore = (index) => {
tasks[index].submit.scored = true
SubmitApi.updateSubmit(pid, tasks[index].id, tasks[index].submit.id, tasks[index].submit)
.then(res=>{
if (res.data.code === 200) {
message.success(res.data.msg)
getTasks()
} else {
message.error(res.data.msg)
}
})
.catch(e=>{console.log(e)})
}
const getScore = (score, weight) => {
return (score * weight / 100).toFixed(2)
}
@ -162,6 +182,23 @@ function StudentEvidence(obj) {
</>
}
>
{teacherScore ?
<div>
<span style={{float: 'right'}}>
<Button type="primary" disabled={!item.submitted} onClick={e=>saveScore(index)}>保存</Button>
</span>
<span style={{float: 'right', marginRight: '10px'}}>
<InputNumber value={item.submit.score} disabled={!item.submitted} onChange={v=>changeScore(v, index)} min={0} max={100} /> / 100
</span>
<Tooltip title="满分为100分系统自动根据权重计算本题实际分数">
<span style={{float: 'right', marginRight: '10px'}}><p>教师评分:</p></span>
</Tooltip>
<br/>
<Divider />
</div>
: null
}
<TaskCard
pid={pid}
item={item}

View File

@ -45,18 +45,18 @@ func init() {
beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"] = append(beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"],
beego.ControllerComments{
Method: "UpdateProject",
Method: "GetProjectDetail",
Router: "/:id",
AllowHTTPMethods: []string{"post"},
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"] = append(beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"],
beego.ControllerComments{
Method: "GetProjectDetail",
Method: "UpdateProject",
Router: "/:id",
AllowHTTPMethods: []string{"get"},
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
@ -279,18 +279,18 @@ func init() {
beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"] = append(beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"],
beego.ControllerComments{
Method: "GetSurveyDetailByTaskId",
Method: "CreateSurvey",
Router: "/:projectId/task/:taskId/survey",
AllowHTTPMethods: []string{"get"},
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"] = append(beego.GlobalControllerRouter["OpenPBL/controllers:ProjectController"],
beego.ControllerComments{
Method: "CreateSurvey",
Method: "GetSurveyDetailByTaskId",
Router: "/:projectId/task/:taskId/survey",
AllowHTTPMethods: []string{"post"},
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})