新增需求
This commit is contained in:
parent
bfc1813fa5
commit
76058894df
|
|
@ -143,7 +143,7 @@ export function getPassList(params) {
|
|||
});
|
||||
}
|
||||
|
||||
// 中期考核-查看中期考核信息
|
||||
// 中期考核-查看中期考核信息(返回导师评分)
|
||||
export function getMediumTermExamineInfo(taskId) {
|
||||
return fetch({
|
||||
url: `/api/mediumTermExamineMaterial/getMediumTermExamineInfo/${taskId}`,
|
||||
|
|
@ -151,6 +151,14 @@ export function getMediumTermExamineInfo(taskId) {
|
|||
});
|
||||
}
|
||||
|
||||
// 中期考核-查看中期考核信息(不返回返回导师评分)
|
||||
export function getBriefMediumTermExamineMaterial(taskId) {
|
||||
return fetch({
|
||||
url: `/api/mediumTermExamineMaterial/getBriefMediumTermExamineMaterial/${taskId}`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
// 中期考核-提交中期考核信息
|
||||
export function submitMedium(data) {
|
||||
return fetch({
|
||||
|
|
|
|||
|
|
@ -85,10 +85,10 @@ 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-18 24: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();
|
||||
// 导师中期考核时间
|
||||
const checkTime2 = new Date().getTime() > new Date('2022-08-12 10:0').getTime() && new Date().getTime() < new Date('2022-08-24 24:0').getTime();
|
||||
const checkTime2 = new Date().getTime() > new Date('2022-08-12 10:0').getTime() && new Date().getTime() < new Date('2022-08-25 24:0').getTime();
|
||||
// 中期考核结果公示8月26日0点
|
||||
const checkTime3 = new Date().getTime() > new Date('2022-08-26 0:0').getTime();
|
||||
|
||||
|
|
|
|||
|
|
@ -102,13 +102,20 @@
|
|||
background: none;
|
||||
.task-title-stuName{
|
||||
font-weight:700;
|
||||
color:#6c7283;
|
||||
color:#333;
|
||||
padding-bottom: 25px;
|
||||
border-bottom:1px dashed #bec5d5;
|
||||
}
|
||||
}
|
||||
}
|
||||
.reviewBox{
|
||||
.successReviewBox{
|
||||
color:#2dab4d;
|
||||
background-color:rgba(82, 206, 152, 0.11);
|
||||
border:1px solid rgba(36, 167, 67, 0.61);
|
||||
margin: -5px 20px 20px;
|
||||
padding: 6px 15px;
|
||||
}
|
||||
.title{
|
||||
color:#333333;
|
||||
display: flex;
|
||||
|
|
@ -143,8 +150,11 @@
|
|||
}
|
||||
.resultBox{
|
||||
padding: 30px 20px 50px 20px;
|
||||
.nullDateTip{color: #ff3838;}
|
||||
&.nullData .flexBox div{align-items: center;}
|
||||
.blueBg{
|
||||
width: 85%;
|
||||
min-height: 36px;
|
||||
display: inline-block;
|
||||
padding: 4px 10px;
|
||||
background-color:rgba(70, 106, 255, 0.05);
|
||||
|
|
@ -180,6 +190,21 @@
|
|||
.smallTil{
|
||||
color: #202d40;
|
||||
}
|
||||
.passStatusBox{
|
||||
display: inline-block;
|
||||
width:59px;
|
||||
height:28px;
|
||||
color:#d2001d;
|
||||
text-align: center;
|
||||
background-color:rgba(251, 0, 34, 0.06);
|
||||
border:1px solid #df001f;
|
||||
border-radius:6px;
|
||||
&.pass{
|
||||
color:#2dab4d;
|
||||
background-color:rgba(82, 206, 152, 0.11);
|
||||
border-color:rgba(36, 167, 67, 0.61);
|
||||
}
|
||||
}
|
||||
.blueSpan{color: $primary-color;}
|
||||
}
|
||||
.tutorRemark{
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ function CheckResult({current_user, history, checkTime3}) {
|
|||
curPage: current,
|
||||
keyword,
|
||||
pageSize,
|
||||
pass: pass? '1': ''
|
||||
// pass: pass? '1': ''
|
||||
pass: '1'
|
||||
}
|
||||
getMediumTermExamineInfoList(params).then(response => {
|
||||
if (response && response.message === "success") {
|
||||
|
|
@ -110,7 +111,7 @@ function CheckResult({current_user, history, checkTime3}) {
|
|||
<div className="resultList">
|
||||
<div className='goBackBox'><a href='/glcc'>开源夏令营 / </a>中期课题考核结果公示</div>
|
||||
<div className='searchBox'>
|
||||
<Checkbox onChange={(e)=>{setCurrent(1);setPass(e.target.checked)}}>已通过</Checkbox>
|
||||
{/* <Checkbox onChange={(e)=>{setCurrent(1);setPass(e.target.checked)}}>已通过</Checkbox> */}
|
||||
<Search className='search' placeholder='请输入学生姓名或课题名称进行搜索' allowClear enterButton onSearch={(value) => { setCurrent(1); setKeyword(value) }} />
|
||||
<div style={{width: 100}}></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ 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 { main_site_url, httpUrl } from '../fetch';
|
||||
import {getMediumTermExamineInfo, submitMedium} from '../api';
|
||||
import { httpUrl } from '../fetch';
|
||||
import {getMediumTermExamineInfo, submitMedium, getBriefMediumTermExamineMaterial} from '../api';
|
||||
import './index.scss';
|
||||
|
||||
function StudentSubmit(props){
|
||||
|
|
@ -14,6 +14,10 @@ function StudentSubmit(props){
|
|||
const [detail, setDetail] = useState(undefined);
|
||||
const [reload, setReload] = useState(undefined);
|
||||
const [fileList, setFileList] = useState(undefined);
|
||||
// 学生提交材料时间
|
||||
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();
|
||||
|
||||
useEffect(()=>{
|
||||
if(!checkTime1){
|
||||
|
|
@ -23,11 +27,21 @@ function StudentSubmit(props){
|
|||
|
||||
useEffect(()=>{
|
||||
// 查询是否已经提交考核材料
|
||||
checkedTaskId && getMediumTermExamineInfo(checkedTaskId).then(res=>{
|
||||
if(res && res.message === "success"){
|
||||
setDetail(res.data);
|
||||
}
|
||||
})
|
||||
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, reload])
|
||||
|
||||
// 学生提交材料
|
||||
|
|
@ -68,13 +82,14 @@ function StudentSubmit(props){
|
|||
<div className="font-15 spanBox">材料提交说明:</div>
|
||||
<div>1、请各位学生<a href={`${httpUrl}/busiAttachments/download/169`} className="blueSpan">下载PPT模板</a> ,根据课题开发进展,按照PPT模板要求填写课题学习调研方案、开发进度及开发成果、下半阶段工作计划等考核材料;</div>
|
||||
<div>2、欢迎各位学生录制本课题答辩视频,将视频链接填写至下方视频介绍填写栏;</div>
|
||||
<div>3、学生提交考核材料的时间为<span className="spanBox">2022年8月12日8点至2022年8月18日24点</span>,请在截止时间前提交。若在截止时间未提交中期考核表,则默认自动放弃,该课题将自动终止。</div>
|
||||
<div>3、学生提交考核材料的时间为<span className="spanBox">2022年8月12日8点至2022年8月21日24点</span>,请在截止时间前提交。若在截止时间未提交中期考核表,则默认自动放弃,该课题将自动终止;</div>
|
||||
<div>4、学生在<span className="spanBox">2022年8月25日0点至2022年8月25日24点</span>可在此页面查看自己考核成绩,若对考核成绩有异议,请及时联系导师进行更改。</div>
|
||||
</div>
|
||||
<div className="titleBox mt25 font-18">
|
||||
<img src={img1} alt="" width={24} className="mr5"/>
|
||||
中期考核
|
||||
</div>
|
||||
{!detail ? <Form className="referBox" onSubmit={submit} colon={false}>
|
||||
{submitTime && !detail ? <Form className="referBox" onSubmit={submit} colon={false}>
|
||||
<Form.Item label="答辩视频" className="referItem">
|
||||
{getFieldDecorator('defenceVideoUrl', {
|
||||
rules: [{ required: true, message: '请输入视频链接!'}, {pattern: /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,message: "请正确输入链接"}],
|
||||
|
|
@ -94,19 +109,21 @@ function StudentSubmit(props){
|
|||
<Form.Item className="referItem oneCont">
|
||||
<Button style={{width: '100px', height: '36px'}} className="mt30 ml20" type="primary" htmlType="submit">提交</Button>
|
||||
</Form.Item>
|
||||
</Form> : <div className="reviewBox referBox resultBox">
|
||||
</Form> : <div className={`reviewBox referBox resultBox ${!detail ? 'nullData' : ''}`}>
|
||||
<div className="flexBox">
|
||||
<div className="mustSpan mb20"> 答辩视频<span className="blueBg ml10"><a href={detail.defenceVideoUrl} target="_blank">{detail.defenceVideoUrl}</a></span></div>
|
||||
<div>代码/pr地址<span className="blueBg ml10"><a href={detail.codeOrPrUrl} target="_blank">{detail.codeOrPrUrl}</a></span></div>
|
||||
<div className="mustSpan ppt mb20"> PPT附件<i className="iconfont icon-lianjie3 font-13 mr5 ml10"></i><a className="pptAttachment mr10" href={`${httpUrl}/busiAttachments/download/${detail.pptAttachment.id}`}>{`${detail.pptAttachment.fileName}`}</a>{detail.pptAttachment.fileSizeString}</div>
|
||||
<div className="mustSpan mb20"> 答辩视频<span className="blueBg ml10"><a href={detail && detail.defenceVideoUrl} target="_blank">{detail && detail.defenceVideoUrl}</a></span></div>
|
||||
<div>代码/pr地址<span className="blueBg ml10"><a href={detail && detail.codeOrPrUrl} target="_blank">{detail && detail.codeOrPrUrl}</a></span></div>
|
||||
<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.glccTutorEvaluation && <div className="tutorRes">
|
||||
{!detail && <div className="nullDateTip font-15">很遗憾,您在指定时间内未提交考核材料</div>}
|
||||
{detail && !detail.glccTutorEvaluation && <div className="font-15 nullDateTip">您的课题导师暂未评分,请提醒导师尽快提交中期考核评分</div>}
|
||||
{detail && detail.glccTutorEvaluation && <div className="tutorRes">
|
||||
<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/>
|
||||
项目完成质量: <span className="blueSpan ml5">{detail.glccTutorEvaluation.projectQualityEvaluation}</span><br/>
|
||||
总体评分: <span className="blueSpan ml5">{detail.glccTutorEvaluation.totalityEvaluation}</span>
|
||||
总体评分: <span className="blueSpan ml5">{detail.glccTutorEvaluation.totalityEvaluation}</span><span className={`passStatusBox ml20 font-15 ${detail.glccTutorEvaluation.totalityEvaluation === 'D' ? '' : 'pass'}`}>{detail.glccTutorEvaluation.totalityEvaluation === 'D' ? '未通过' : '通过'}</span>
|
||||
</div>
|
||||
<div className="flexBox"><div><span className="smallTil">导师评语: </span><span className="ml10 tutorRemark">{detail.glccTutorEvaluation.comment}</span></div></div>
|
||||
</div>}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ function TutorReview(props){
|
|||
const [wordNum, setWordNum] = useState(0);
|
||||
const [detail, setDetail] = useState(undefined);
|
||||
const [reload, setReload] = useState(undefined);
|
||||
// 导师提交过之后是否是编辑状态
|
||||
const [isEdit, setIsEdit] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if(!checkTime2){
|
||||
|
|
@ -40,6 +42,7 @@ function TutorReview(props){
|
|||
if(res && res.message === "success"){
|
||||
setDetail(res.data);
|
||||
if(res && res.data && res.data.glccTutorEvaluation){
|
||||
setWordNum(res.data.glccTutorEvaluation.comment.length);
|
||||
setFieldsValue({...res.data.glccTutorEvaluation});
|
||||
}
|
||||
}
|
||||
|
|
@ -79,7 +82,7 @@ function TutorReview(props){
|
|||
})
|
||||
}
|
||||
|
||||
const RadioGroup = <Radio.Group>
|
||||
const RadioGroup = <Radio.Group disabled={detail && detail.glccTutorEvaluation && !isEdit}>
|
||||
<Radio value={'S'}>S</Radio>
|
||||
<Radio value={'A'}>A</Radio>
|
||||
<Radio value={'B'}>B</Radio>
|
||||
|
|
@ -104,11 +107,11 @@ function TutorReview(props){
|
|||
<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月12日10点至2022年8月24日24点</span>) 导师提交打分结果后,可对考核结果进行更改,期间考核结果也将实时反馈给学生。</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>
|
||||
<div className="tutorContent">
|
||||
<Tabs className="task-tabs" onChange={(e) => { resetFields(); setTaskId(e) }} activeKey={taskId + ''}>
|
||||
<Tabs className="task-tabs" onChange={(e) => { resetFields(); setTaskId(e); setIsEdit(false); setWordNum(0); }} activeKey={taskId + ''}>
|
||||
{
|
||||
taskList.map((item, i) => {
|
||||
return <TabPane tab={`课题${i + 1}`} key={item.id} >
|
||||
|
|
@ -118,6 +121,8 @@ function TutorReview(props){
|
|||
}
|
||||
</Tabs>
|
||||
{detail ? <div className="reviewBox">
|
||||
{/* 已评分提示语句 */}
|
||||
{detail.glccTutorEvaluation && <div className="successReviewBox font-15">您已评分成功! 在审核期间,您可对评分结果进行更改</div>}
|
||||
{/* 学生提交的资料 */}
|
||||
<div className="stuCont pl20 pr20">
|
||||
<div className="title font-16 mb15"><span className="blueBox"></span>基本信息</div>
|
||||
|
|
@ -154,13 +159,14 @@ function TutorReview(props){
|
|||
{helper('填写评语',
|
||||
'comment',
|
||||
[{ required: true, message: "请输入评语!" }],
|
||||
<TextArea rows={8} placeholder="请对学生项目表现进行总体评价" className="contentBox" maxLength={500} onChange={(e)=>{setWordNum(e.target.value.length);}}/>,
|
||||
<TextArea rows={8} placeholder="请对学生项目表现进行总体评价" className="contentBox" maxLength={500} onChange={(e)=>{setWordNum(e.target.value.length);}} disabled={detail.glccTutorEvaluation && !isEdit}/>,
|
||||
'oneCont'
|
||||
)}
|
||||
<div className="wordNum">{wordNum} / 500</div>
|
||||
</div>
|
||||
<Form.Item className="referItem oneCont">
|
||||
<Button style={{width: '100px', height: '36px'}} className="mt20" type="primary" htmlType="submit">{detail.glccTutorEvaluation ? '修改' : '提交'}</Button>
|
||||
{(!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>
|
||||
</Form>
|
||||
</div>:<Nodata _html="该课题学生暂未提交中期考核材料,请提醒学生尽快提交"/>}
|
||||
|
|
|
|||
Loading…
Reference in New Issue