forked from Gitlink/forgeplus-react
glcc结项考核
This commit is contained in:
parent
8cc9024e38
commit
bc2ddd62ff
File diff suppressed because it is too large
Load Diff
|
@ -144,10 +144,11 @@ export function getPassList(params) {
|
|||
}
|
||||
|
||||
// 中期考核-查看中期考核信息(返回导师评分)
|
||||
export function getMediumTermExamineInfo(taskId) {
|
||||
export function getMediumTermExamineInfo(taskId, params) {
|
||||
return fetch({
|
||||
url: `/api/mediumTermExamineMaterial/getMediumTermExamineInfo/${taskId}`,
|
||||
method: 'get'
|
||||
url: `/api/examineMaterial/getExamineInfo/${taskId}`,
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -162,7 +163,7 @@ export function getBriefMediumTermExamineMaterial(taskId) {
|
|||
// 中期考核-提交中期考核信息
|
||||
export function submitMedium(data) {
|
||||
return fetch({
|
||||
url: `/api/mediumTermExamineMaterial/create`,
|
||||
url: `/api/examineMaterial/create`,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
|
@ -189,7 +190,7 @@ export function updateTutorEvaluation(data) {
|
|||
// 中期考核结果list
|
||||
export function getMediumTermExamineInfoList(params) {
|
||||
return fetch({
|
||||
url: `/api/mediumTermExamineMaterial/getMediumTermExamineInfoList`,
|
||||
url: `/api/examineMaterial/getExamineInfoList`,
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
|
|
|
@ -79,8 +79,8 @@ export default (props) => {
|
|||
</div> */}
|
||||
{/* 报名入口 */}
|
||||
<div className="applyBox">
|
||||
{/* 6.28.-7.1 审核结果仅对导师可见,7.1之后对所有用户可见*/}
|
||||
{resultTime2 && <div className="apply" onClick={goToCheckResult}>
|
||||
{/* 6.28.-7.1 审核结果仅对导师可见,7.1之后对所有用户可见*/}
|
||||
{resultTime2 && <div className="apply" onClick={goToCheckResult}>
|
||||
<div>
|
||||
<img src={apply2} alt="" className="applyIcon" />
|
||||
<span className="til">名单{resultTime1 ? '预' : ''}公示</span>
|
||||
|
@ -88,29 +88,29 @@ export default (props) => {
|
|||
<div className="pt6">查看各课题入选学生名单</div>
|
||||
</div>}
|
||||
|
||||
{/* 学生中期考核 */}
|
||||
{!hasRole && checkTime1 && checkedTaskId && <Link className="apply" to={`/glcc/middle/submit`}>
|
||||
{/* 学生结项考核 */}
|
||||
{!hasRole && checkTime1 && checkedTaskId && <Link className="apply" to={`/glcc/submission`}>
|
||||
<div>
|
||||
<img src={img1} alt="" className="applyIcon" />
|
||||
<span className="til">中期考核</span>
|
||||
<span className="til">结项考核</span>
|
||||
</div>
|
||||
<div className="pt6">学生提交考核材料</div>
|
||||
</Link>}
|
||||
{/* 导师中期考核 */}
|
||||
{/* {hasRole && checkTime2 && <Link className="apply" to={`/glcc/middle/examination`}>
|
||||
{/* 导师结项考核 */}
|
||||
{hasRole && new Date().getTime() > new Date('2022/10/01 8:0').getTime() && <Link className="apply" to={`/glcc/final/examination`}>
|
||||
<div>
|
||||
<img src={img1} alt="" className="applyIcon" />
|
||||
<span className="til">中期考核</span>
|
||||
<span className="til">结项考核</span>
|
||||
</div>
|
||||
<div className="pt6">导师拟定中期考核结果</div>
|
||||
</Link>} */}
|
||||
{/* 中期考核结果公示页 */}
|
||||
{checkTime3 && <Link className="apply" to={`/glcc/middle/results`}>
|
||||
<div className="pt6">导师拟定结项考核结果</div>
|
||||
</Link>}
|
||||
{/* 结项考核结果公示页 */}
|
||||
{checkTime3 && <Link className="apply" to={`/glcc/final/result`}>
|
||||
<div>
|
||||
<img src={img1} alt="" className="applyIcon" />
|
||||
<span className="til">考核结果</span>
|
||||
</div>
|
||||
<div className="pt6">中期课题考核结果公示</div>
|
||||
<div className="pt6">结项课题考核结果公示</div>
|
||||
</Link>}
|
||||
|
||||
{/* 项目报名 */}
|
||||
|
|
|
@ -40,12 +40,12 @@ const stepArr = [{
|
|||
},
|
||||
{
|
||||
title: "Step2",
|
||||
date: "10.1-10.21",
|
||||
date: "10.1-10.24",
|
||||
content: "结项审核,并公示考核结果",
|
||||
},
|
||||
{
|
||||
title: "Step2",
|
||||
date: "10.21-11.11",
|
||||
date: "10.24-11.11",
|
||||
content: "评选公布优秀项目和学员",
|
||||
noArrow: true,
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 895 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 895 KiB |
|
@ -85,12 +85,12 @@ const Glcc = (propsF) => {
|
|||
const studentApplyStart = new Date().getTime() > new Date('2022/05/26').getTime();
|
||||
const isStudentApplyDate = new Date().getTime() > new Date('2022/05/26').getTime() && new Date().getTime() < new Date('2022/06/25 0:0').getTime();
|
||||
const secondStudentApplyDate = new Date().getTime() > new Date('2022/06/29 1:0').getTime() && new Date().getTime() < new Date('2022/06/30 0:0').getTime();
|
||||
// 学生中期考核入口可见时间
|
||||
const checkTime1 = new Date().getTime() > new Date('2022/08/12 8:0').getTime() && new Date().getTime() < new Date('2022/08/25 24:0').getTime();
|
||||
// 导师中期考核时间 && new Date().getTime() < new Date('2022/08/25 24:0').getTime()
|
||||
const checkTime2 = new Date().getTime() > new Date('2022/08/12 10:0').getTime();
|
||||
// 中期考核结果公示8月26日0点
|
||||
const checkTime3 = new Date().getTime() > new Date('2022/08/26 0:0').getTime();
|
||||
// 学生结项考核入口可见时间
|
||||
const checkTime1 = new Date().getTime() > new Date('2022/10/01 8:0').getTime();
|
||||
// 导师结项考核时间
|
||||
const checkTime2 = new Date().getTime() > new Date('2022/10/01 8:0').getTime() && new Date().getTime() < new Date('2022/10/23 24:0').getTime();
|
||||
// 结项考核结果公示8月26日0点
|
||||
const checkTime3 = new Date().getTime() > new Date('2022/10/24 10:0').getTime();
|
||||
|
||||
// 用户已报名课题id数组
|
||||
const [applyTaskId, setApplyTaskId] = useState({});
|
||||
|
@ -104,7 +104,7 @@ const Glcc = (propsF) => {
|
|||
const [studentRegId, setStudentRegId] = useState(undefined);
|
||||
|
||||
useEffect(()=>{
|
||||
// 获取用户课题报名信息current_user user_id
|
||||
// 获取用户课题报名信息
|
||||
current_user && current_user.login && getStudentApplyInfo({userId: current_user.user_id}).then(response=>{
|
||||
if(response && response.message === "success"){
|
||||
// setData(response.data.rows);
|
||||
|
@ -112,8 +112,8 @@ const Glcc = (propsF) => {
|
|||
response.data && response.data.registrationStudentTaskList.map(item=>{
|
||||
data[item.taskId] = item.id;
|
||||
item.locked && setLockedTaskName(item.taskName);
|
||||
item.passStatus && setCheckedTaskId(item.taskId);
|
||||
item.passStatus && setStudentRegId(item.studentRegId);
|
||||
item.passStatus && item.mediumExaminationPass && setCheckedTaskId(item.taskId);
|
||||
item.passStatus && item.mediumExaminationPass && setStudentRegId(item.studentRegId);
|
||||
})
|
||||
setApplyTaskId(data);
|
||||
response.data&&setCancelCount(Number(response.data.cancelCount));
|
||||
|
@ -211,7 +211,7 @@ const Glcc = (propsF) => {
|
|||
|
||||
{/* 中期审核-结果公示 */}
|
||||
<Route
|
||||
path="/glcc/middle/results"
|
||||
path="/glcc/final/result"
|
||||
render={(props) => (
|
||||
<MiddleResult current_user={current_user} history={props.history} checkTime3={checkTime3}/>
|
||||
)}
|
||||
|
@ -219,7 +219,7 @@ const Glcc = (propsF) => {
|
|||
|
||||
{/* 中期审核-学生 */}
|
||||
<Route
|
||||
path="/glcc/middle/submit"
|
||||
path="/glcc/submission"
|
||||
render={(props) => (
|
||||
<StudentSubmit current_user={current_user} history={props.history} checkedTaskId={checkedTaskId} checkTime1={checkTime1} studentRegId={studentRegId}/>
|
||||
)}
|
||||
|
@ -227,7 +227,7 @@ const Glcc = (propsF) => {
|
|||
|
||||
{/* 中期审核-导师 */}
|
||||
<Route
|
||||
path="/glcc/middle/examination"
|
||||
path="/glcc/final/examination"
|
||||
render={(props) => (
|
||||
<TutorReview current_user={current_user} history={props.history} checkTime2={checkTime2}/>
|
||||
)}
|
||||
|
|
|
@ -35,7 +35,8 @@ function CheckResult({current_user, history, checkTime3}) {
|
|||
const params = {
|
||||
curPage: current,
|
||||
keyword,
|
||||
pageSize
|
||||
pageSize,
|
||||
term: 2
|
||||
}
|
||||
getMediumTermExamineInfoList(params).then(response => {
|
||||
if (response && response.message === "success") {
|
||||
|
@ -57,7 +58,7 @@ function CheckResult({current_user, history, checkTime3}) {
|
|||
{ title: '项目名称', dataIndex: 'projectName', className:"columnsResult", ellipsis: true, width: '14%', render: (text) => <Tooltip title={text} placement="topLeft"><span className='toolTipSpan'>{text}</span></Tooltip> },
|
||||
{ title: '项目简介', dataIndex: 'introduce', className:"columnsResult", width: '13%', ellipsis: true},
|
||||
{ title: '答辩视频', dataIndex: 'defenceVideoUrl', className:"columnsResult", width: '15%', ellipsis: true, render: (text, item) => <Tooltip title={text} placement="topLeft"><span className='toolTipSpan link' onClick={()=>{window.open(text)}}>{text}</span></Tooltip>},
|
||||
{ title: '考核结果', dataIndex: 'totalityEvaluation', align: 'center', className:"columnsResult actionBox", render: (text, item, index) => <span>{text === 'D' || !text ? '未通过' : '通过'}</span>},
|
||||
{ title: '考核结果', dataIndex: 'totalityEvaluation', align: 'center', className:"columnsResult actionBox"},
|
||||
]
|
||||
|
||||
const customExpandIcon = (props) => {
|
||||
|
@ -105,7 +106,7 @@ function CheckResult({current_user, history, checkTime3}) {
|
|||
<img className="bannerInterim" src={resultBanner} alt=""></img>
|
||||
<div className='bgBox'>
|
||||
<div className="resultList">
|
||||
<div className='goBackBox'><a href='/glcc'>开源夏令营 / </a>中期课题考核结果公示</div>
|
||||
<div className='goBackBox'><a href='/glcc'>开源夏令营 / </a>结项课题考核结果公示</div>
|
||||
<div className='searchBox'>
|
||||
<Search className='search' placeholder='请输入学生姓名或课题名称进行搜索' allowClear enterButton onSearch={(value) => { setCurrent(1); setKeyword(value) }} />
|
||||
<div style={{width: 100}}></div>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import React, { useEffect, useState } from "react";
|
||||
import { Form, Upload, Input, Icon, Button } from "antd";
|
||||
import { Form, Upload, Input, Icon, Button, message } from "antd";
|
||||
import { Link } from "react-router-dom";
|
||||
import banner from '../img/banner-interim.png';
|
||||
import img1 from '../img/img1.png';
|
||||
import bg from '../img/bgPng.png';
|
||||
import { httpUrl, main_site_url } from '../fetch';
|
||||
import {getMediumTermExamineInfo, submitMedium, getBriefMediumTermExamineMaterial} from '../api';
|
||||
import {getMediumTermExamineInfo, submitMedium} from '../api';
|
||||
import './index.scss';
|
||||
|
||||
function StudentSubmit(props){
|
||||
|
@ -14,10 +14,12 @@ function StudentSubmit(props){
|
|||
const [detail, setDetail] = useState(undefined);
|
||||
const [reload, setReload] = useState(undefined);
|
||||
const [fileList, setFileList] = useState(undefined);
|
||||
// 学生提交信息之后按钮置灰(确保无重复提交)
|
||||
const [disabled, setDisabled] = useState(false);
|
||||
// 学生提交材料时间
|
||||
const submitTime = new Date().getTime() < new Date('2022/08/21 24:0').getTime();
|
||||
// 学生查看导师评分时间
|
||||
const lookTime = new Date().getTime() > new Date('2022/08/24 24:0').getTime() && new Date().getTime() < new Date('2022/08/25 24:0').getTime();
|
||||
const submitTime = new Date().getTime() < new Date('2022/10/14 24:0').getTime();
|
||||
// 学生提醒导师评分时间
|
||||
const lookTime = new Date().getTime() > new Date('2022/10/15 0:0').getTime() && new Date().getTime() < new Date('2022/10/20 24:0').getTime();
|
||||
|
||||
useEffect(()=>{
|
||||
if(!checkTime1){
|
||||
|
@ -27,25 +29,16 @@ function StudentSubmit(props){
|
|||
|
||||
useEffect(()=>{
|
||||
// 查询是否已经提交考核材料
|
||||
if(lookTime){
|
||||
// 8.25学生可见导师评分
|
||||
checkedTaskId && getMediumTermExamineInfo(checkedTaskId).then(res=>{
|
||||
if(res && res.message === "success"){
|
||||
setDetail(res.data);
|
||||
}
|
||||
})
|
||||
}else{
|
||||
// 25号之前不可见
|
||||
checkedTaskId && getBriefMediumTermExamineMaterial(checkedTaskId).then(res=>{
|
||||
if(res && res.message === "success"){
|
||||
setDetail(res.data);
|
||||
}
|
||||
})
|
||||
}
|
||||
checkedTaskId && getMediumTermExamineInfo(checkedTaskId,{term: 2}).then(res=>{
|
||||
if(res && res.message === "success"){
|
||||
setDetail(res.data);
|
||||
}
|
||||
})
|
||||
},[checkedTaskId, reload])
|
||||
|
||||
// 学生提交材料
|
||||
function submit(e){
|
||||
setDisabled(true);
|
||||
e.preventDefault();
|
||||
validateFieldsAndScroll((err, values) => {
|
||||
if(!err){
|
||||
|
@ -56,11 +49,16 @@ function StudentSubmit(props){
|
|||
codeOrPrUrl,
|
||||
defenceVideoUrl,
|
||||
taskId: checkedTaskId,
|
||||
studentRegId: studentRegId
|
||||
studentRegId: studentRegId,
|
||||
term: 2
|
||||
}
|
||||
submitMedium(params).then(res=>{
|
||||
if(res && res.message === "success"){
|
||||
setReload(Math.random());
|
||||
if(!res.data){
|
||||
setReload(Math.random());
|
||||
}else if(res.data.code === '-1'){
|
||||
message.error('不可重复提交');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -69,6 +67,7 @@ function StudentSubmit(props){
|
|||
// 检查文件上传是否符合规定
|
||||
function changeFileList(e) {
|
||||
const {fileList} = e;
|
||||
console.log('fileList', fileList, e);
|
||||
const lastFile = fileList.splice(fileList.length-1, fileList.length);
|
||||
setFileList(lastFile);
|
||||
}
|
||||
|
@ -77,17 +76,17 @@ function StudentSubmit(props){
|
|||
<img src={bg} alt="" className="bg1"/>
|
||||
<img src={bg} alt="" className="bg2"/>
|
||||
<div className="mainBox">
|
||||
<div className="navBox font-16"><Link to={`/glcc`} className="linkBox">开源夏令营 / </Link>提交中期考核材料</div>
|
||||
<div className="navBox font-16"><Link to={`/glcc`} className="linkBox">开源夏令营 / </Link>提交结项考核材料</div>
|
||||
<div className="tipBox mt30">
|
||||
<div className="font-15 spanBox">材料提交说明:</div>
|
||||
<div>1、请各位学生<a href={`${main_site_url.indexOf("gitlink") !== -1 ? '/api/attachments/392565' : httpUrl+'/busiAttachments/download/169'}`} className="blueSpan">下载PPT模板</a> ,根据课题开发进展,按照PPT模板要求填写课题学习调研方案、开发进度及开发成果、下半阶段工作计划等考核材料;</div>
|
||||
<div>1、请各位学生<a href={`${main_site_url.indexOf("gitlink") !== -1 ? '/api/attachments/392565' : httpUrl+'/busiAttachments/download/169'}`} className="blueSpan">下载PPT模板</a> ,根据课题开发进展,按照PPT模板要求填写课题学习调研方案、开发进度及开发成果等考核材料;</div>
|
||||
<div>2、欢迎各位学生录制本课题答辩视频,将视频链接填写至下方视频介绍填写栏;</div>
|
||||
<div>3、学生提交考核材料的时间为<span className="spanBox">2022年8月12日8点至2022年8月21日24点</span>,请在截止时间前提交。若在截止时间未提交中期考核表,则默认自动放弃,该课题将自动终止;</div>
|
||||
<div>4、学生在<span className="spanBox">2022年8月25日</span>可在此页面查看自己考核成绩,若对考核成绩有异议,请及时联系导师进行更改。</div>
|
||||
<div>3、学生提交考核材料的时间为<span className="spanBox">2022年10月1日8点至2022年10月14日24点</span>,请在截止时间前提交;</div>
|
||||
<div>4、若导师已给出评分,各位学生可在此页面查看自己的结项考核成绩。对考核成绩有异议的学生请及时联系您的导师。</div>
|
||||
</div>
|
||||
<div className="titleBox mt25 font-18">
|
||||
<img src={img1} alt="" width={24} className="mr5"/>
|
||||
中期考核
|
||||
结项考核
|
||||
</div>
|
||||
{submitTime && !detail ? <Form className="referBox" onSubmit={submit} colon={false}>
|
||||
<Form.Item label="答辩视频" className="referItem">
|
||||
|
@ -107,7 +106,7 @@ function StudentSubmit(props){
|
|||
<Button className="uploadBox"><Icon type="upload" /> 上传</Button></Upload>)}
|
||||
</Form.Item>
|
||||
<Form.Item className="referItem oneCont">
|
||||
<Button style={{width: '100px', height: '36px'}} className="mt30 ml20" type="primary" htmlType="submit">提交</Button>
|
||||
<Button style={{width: '100px', height: '36px'}} className="mt30 ml20" type="primary" htmlType="submit" disabled={disabled && !detail}>提交</Button>
|
||||
</Form.Item>
|
||||
</Form> : <div className={`reviewBox referBox resultBox ${!detail ? 'nullData' : ''}`}>
|
||||
<div className="flexBox">
|
||||
|
@ -116,9 +115,9 @@ function StudentSubmit(props){
|
|||
<div className="mustSpan ppt mb20"> PPT附件{detail && <i className="iconfont icon-lianjie3 font-13 mr5 ml10"></i>}{detail ? <a className="pptAttachment mr10" href={`${httpUrl}/busiAttachments/download/${detail.pptAttachment.id}`}>{`${detail.pptAttachment.fileName}`}</a> : <Button className="uploadBox ml10" disabled><Icon type="upload" /> 上传</Button>}{detail && detail.pptAttachment && detail.pptAttachment.fileSizeString}</div>
|
||||
</div>
|
||||
{!detail && <div className="nullDateTip font-15">很遗憾,您在指定时间内未提交考核材料</div>}
|
||||
{lookTime && detail && !detail.glccTutorEvaluation && <div className="font-15 nullDateTip">您的课题导师暂未评分,请提醒导师尽快提交中期考核评分</div>}
|
||||
{detail && lookTime && !detail.glccTutorEvaluation && <div className="font-15 nullDateTip">您的课题导师暂未评分,请提醒导师尽快提交结项考核评分</div>}
|
||||
{detail && detail.glccTutorEvaluation && <div className="tutorRes">
|
||||
<div>您的课题导师对您的中期考核评价如下,如有异议,请及时联系导师进行更改。</div>
|
||||
<div>您的课题导师对您的结项考核评价如下,如有异议,请及时联系导师进行更改。</div>
|
||||
<div className="mt10 mb10 smallTil">
|
||||
工作态度: <span className="blueSpan ml5">{detail.glccTutorEvaluation.workAttitudeEvaluation}</span><br/>
|
||||
开发进度: <span className="blueSpan ml5">{detail.glccTutorEvaluation.developProgressEvaluation}</span><br/>
|
||||
|
|
|
@ -20,12 +20,14 @@ function TutorReview(props){
|
|||
const [reload, setReload] = useState(undefined);
|
||||
// 导师提交过之后是否是编辑状态
|
||||
const [isEdit, setIsEdit] = useState(false);
|
||||
// 导师提交信息之后按钮置灰(确保无重复提交)
|
||||
const [disabled, setDisabled] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if(!checkTime2){
|
||||
if(!new Date().getTime() > new Date('2022/10/01 8:0').getTime()){
|
||||
history.push("/glcc");
|
||||
}else if (!current_user.login) {
|
||||
history.push('/login?go_page=/glcc/middle/examination');
|
||||
history.push('/login?go_page=/glcc/final/examination');
|
||||
}else{
|
||||
hasAuditRole({ userId: current_user.user_id }).then(res => {
|
||||
if (!(res && res.message == 'success' && res.data.hasRole)) {
|
||||
|
@ -46,7 +48,7 @@ function TutorReview(props){
|
|||
|
||||
useEffect(()=>{
|
||||
// 查询是否已经提交考核材料
|
||||
taskId && getMediumTermExamineInfo(taskId).then(res=>{
|
||||
taskId && getMediumTermExamineInfo(taskId,{term: 2}).then(res=>{
|
||||
if(res && res.message === "success"){
|
||||
setDetail(res.data);
|
||||
if(res && res.data && res.data.glccTutorEvaluation){
|
||||
|
@ -57,15 +59,17 @@ function TutorReview(props){
|
|||
})
|
||||
},[taskId, reload])
|
||||
|
||||
// 学生提交材料
|
||||
// 导师打分
|
||||
function submit(e){
|
||||
setDisabled(true);
|
||||
e.preventDefault();
|
||||
validateFieldsAndScroll((err, values) => {
|
||||
if(!err){
|
||||
const params = {
|
||||
...values,
|
||||
mediumTermExamineMaterialId: detail.id,
|
||||
tutorUserId: detail.studentRegId
|
||||
tutorUserId: detail.studentRegId,
|
||||
term: 2
|
||||
}
|
||||
if(detail.glccTutorEvaluation){
|
||||
params['id'] = detail.glccTutorEvaluation.id;
|
||||
|
@ -111,13 +115,13 @@ function TutorReview(props){
|
|||
<div className="navBox font-16"><Link to={`/glcc`} className="linkBox">开源夏令营 / </Link>导师拟定考核结果</div>
|
||||
<div className="tipBox mt30">
|
||||
<div className="font-15 spanBox">导师考核说明:</div>
|
||||
<div>1、请各位导师根据“工作态度”“开发进度”“项目完成质量”“总体评分”四个角度,根据学生提交的考核材料与实际开发情况客观地进行打分。打分标准分为:S:特别优秀、A:优秀、B:良好、C:合格、D:不合格五个等级。</div>
|
||||
<div>2、“总体评分”这一项将决定学生是否通过本次考核。若总体评分为“S、A、B、C”,则视为通过中期考核。若该结果为“D”,则该课题中期考核不通过,课题将自动终止。请各位导师谨慎做出评价。</div>
|
||||
<div>3、导师提交打分结果后,可对考核结果进行更改,更改考核结果截止日期为<span className="spanBox">2022年8月25日24点</span></div>
|
||||
<div>4、北京时间<span className="spanBox">2022年8月26日20点</span>前GLCC官网将公布中期考核结果,敬请留意。</div>
|
||||
<div>1、请各位导师从“工作态度”“开发进度”“项目完成质量”“总体评分”四个角度,根据学生提交的考核材料与实际开发情况客观地进行打分。打分标准分为:S:特别优秀、A:优秀、B:良好、C:合格、D:不合格五个等级。</div>
|
||||
<div>2、“总体评分”这一项将决定学生是否通过本次考核。若总体评分为“S、A、B、C”,则视为通过结项考核。若该结果为“D”,则该课题结项考核不通过,不予发放结项奖金。请各位导师谨慎做出评价。</div>
|
||||
<div>3、导师提交打分结果后,可对考核结果进行更改,期间考核结果也将实时反馈给学生;更改考核结果截止时间为<span className="spanBox">2022年10月20日24点</span>。</div>
|
||||
<div>4、北京时间<span className="spanBox">2022年10月24日20点</span>前GLCC官网将公布结项考核结果,敬请留意。</div>
|
||||
</div>
|
||||
<div className="tutorContent">
|
||||
<Tabs className="task-tabs" onChange={(e) => { resetFields(); setTaskId(e); setIsEdit(false); setWordNum(0); }} activeKey={taskId + ''}>
|
||||
<Tabs className="task-tabs" onChange={(e) => { resetFields(); setTaskId(e); setIsEdit(false); setWordNum(0); setDisabled(false);}} activeKey={taskId + ''}>
|
||||
{
|
||||
taskList.map((item, i) => {
|
||||
return <TabPane tab={`课题${i + 1}`} key={item.id} >
|
||||
|
@ -170,10 +174,10 @@ function TutorReview(props){
|
|||
)}
|
||||
<div className="wordNum">{wordNum} / 500</div>
|
||||
</div>
|
||||
<Form.Item className="referItem oneCont">
|
||||
{(!detail.glccTutorEvaluation || (detail.glccTutorEvaluation && isEdit)) && <Button style={{width: '100px', height: '36px'}} className="mt20" type="primary" htmlType="submit">{detail.glccTutorEvaluation ? '保存' : '提交'}</Button>}
|
||||
{detail.glccTutorEvaluation && !isEdit && <Button style={{width: '100px', height: '36px'}} className="mt20" type="primary" onClick={()=>{setIsEdit(true)}}>修改</Button>}
|
||||
</Form.Item>
|
||||
{checkTime2 && <Form.Item className="referItem oneCont">
|
||||
{(!detail.glccTutorEvaluation || (detail.glccTutorEvaluation && isEdit)) && <Button style={{width: '100px', height: '36px'}} className="mt20" type="primary" htmlType="submit" disabled={disabled}>{detail.glccTutorEvaluation ? '保存' : '提交'}</Button>}
|
||||
{detail.glccTutorEvaluation && !isEdit && <Button style={{width: '100px', height: '36px'}} className="mt20" type="primary" onClick={()=>{setIsEdit(true);setDisabled(false);}}>修改</Button>}
|
||||
</Form.Item>}
|
||||
</Form>
|
||||
</div>:<Nodata _html="该课题学生暂未提交中期考核材料,请提醒学生尽快提交"/>}
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue