import React,{Component} from "react"; import { Form, Select, Input, Button,Checkbox,Upload,Icon,message,Modal, Table, Divider, Tag} from "antd"; import {Link} from 'react-router-dom'; import { getRandomcode,markdownToHTML,AttachmentList} from 'educoder'; import axios from 'axios'; import Modals from '../../../modals/Modals'; import DownloadMessageysl from "../../../modals/DownloadMessageysl"; import HomeworkModal from "../../coursesPublic/HomeworkModal"; import CoursesListType from '../../coursesPublic/CoursesListType'; import moment from 'moment'; import GraduationTaskssettingReply from './GraduationTaskssettingReply'; let GraduationTasksnewtype=true; class GraduationTasksquestions extends Component{ constructor(props){ super(props) this.state={ coursename:"", coursesearch:"", title_num:20, title_value:"", fileList: [], contents: [{val:"",id:1}], type:true, questionslist:undefined, DownloadType:false, DownloadMessageval:undefined, } } componentDidMount(){ let tab = this.props.tab; this.props.setTab && this.props.setTab(tab); this.getdatas(); try{ this.props.triggerRef(this) }catch(e){ } } reInit=()=>{ this.getdatas(); } getdatas=()=>{ const task_Id = this.props.match.params.task_Id; let url="/graduation_tasks/"+task_Id+".json"; axios.get(url).then((result)=>{ if(result.status===200){ this.setState({ questionslist:result.data, end_time:result.data.end_time }) this.props.setend_time(result.data.end_time) } }).catch((error)=>{ console.log(error) }) } goback=()=>{ // let courseId=this.props.match.params.coursesId; // let category_id=this.props.match.params.category_id; // window.location.href="/classrooms/"+courseId+"/graduation_tasks/"+category_id; // let courseId = this.props.match.params.coursesId; // if(courseId===undefined){ // this.props.history.push("/classrooms"); // }else{ // this.props.history.push(this.props.current_user.first_category_url); // } // this.props.history.goBack() this.props.history.replace(`/classrooms/${this.state.questionslist.course_id}/graduation_tasks/${this.state.questionslist.graduation_id}`); } end=()=>{ // this.homeworkstart() this.setState({ modalname:"立即截止", visible:true, Topval:"学生将不能再提交作品", // Botvalleft:"暂不截止", // Botval:`本操作只对"提交中"的任务有效`, Cancelname:"暂不截止", Savesname:"立即截止", Cancel:this.cancelmodel, Saves:this.coursetaskend, typs:"end", }) } //立即发布 publish=()=>{ let starttime= this.props.getNowFormatDates(1,1); let endtime=this.props.getNowFormatDates(2,1); // this.homeworkstart() this.setState({ modalname:"立即发布", visible:true, Topval:"学生将立即收到毕设任务", // Botvalleft:"点击修改", // Botval:`本操作只对"未发布"的分班有效`, starttime:moment(moment(new Date())).format("YYYY-MM-DD HH:mm") , starttimes:this.props.getNowFormatDates(1), typs:"start", endtime:endtime, Cancelname:"暂不发布", Savesname:"立即发布", Cancel:this.cancelmodel, Saves:this.homepublish, }) } //立即发布 homeworkstart=()=>{ let coursesId=this.props.match.params.coursesId; let url="/courses/"+coursesId+"/all_course_groups.json"; axios.get(url).then((response) => { if(response.status===200){ this.setState({ modaltype:response.data.course_groups===null||response.data.course_groups.length===0?2:1, course_groups:response.data.course_groups, }) } }).catch((error) => { console.log(error) }); } homepublish=(ids,endtime)=>{ this.cancelmodel(); let task_Id=this.props.match.params.task_Id; const cid = this.props.match.params.coursesId // let url = `/courses/${cid}/graduation_tasks/publish_task.json`; let url="/courses/"+cid+"/graduation_tasks/publish_task.json" axios.post(url,{ task_ids:[task_Id], group_ids: this.state.course_groupslist, end_time:endtime, }).then((response)=>{ if (response.data.status == 0) { this.getdatas() this.props.showNotification(response.data.message); this.searchValue(); this.setState({ // Modalstopval:response.data.message, // ModalSave:this.cancelmodel, // Loadtype:true, course_groupslist:[], checkAllValue:false }) } }).catch((error)=>{ }) } cancelmodel=()=>{ this.setState({ Modalstype:false, Loadtype:false, visible:false, Modulationtype:false, Allocationtype:false, Modalstopval:"", ModalCancel:"", ModalSave:"", }) } coursetaskend=()=>{ this.cancelmodel(); const coursesId = this.props.match.params.coursesId; const task_Id = this.props.match.params.task_Id; let url = `/courses/${coursesId}/graduation_tasks/end_task.json`; axios.post(url,{ task_ids:[task_Id], group_ids: this.state.course_groupslist, }).then((response)=>{ if (response.data.status == 0) { this.getdatas() this.props.showNotification(response.data.message); this.setState({ // Modalstopval:response.data.message, // ModalSave:this.cancelmodel, // Loadtype:true, course_groupslist:[], checkAllValue:false }) } }).catch((error)=>{ }) } getcourse_groupslist=(id)=>{ this.setState({ course_groupslist:id }) } /// 确认是否下载 confirmysl(url,urls){ axios.get(url + '?export=true').then((response) => { if(response === undefined){ return } if(response.data.status&&response.data.status===-1){ }else if(response.data.status&&response.data.status===-2){ if(response.data.message === "100"){ // 已超出文件导出的上限数量(100 ),建议: this.setState({ DownloadType:true, DownloadMessageval:100 }) }else { //因附件资料超过500M this.setState({ DownloadType:true, DownloadMessageval:500 }) } }else { // this.props.slowDownload(urls) //this.props.showNotification(`正在下载中`); this.props.slowDownload(getRandomcode(url)) // window.open(getRandomcode("/api" + url), '_blank'); // this.props.showNotification(`正在下载中`); // window.open("/api"+url, '_blank'); } }).catch((error) => { console.log(error) }); } Downloadcal=()=> { this.setState({ DownloadType: false, DownloadMessageval: undefined }) } render(){ let { Modalstype,Modalstopval,ModalCancel,ModalSave,questionslist} =this.state; // console.log(this.props) let courseId=this.props.match.params.coursesId; let category_id=this.props.match.params.category_id; let task_Id=this.props.match.params.task_Id; //console.log(questionslist&&questionslist) return( <React.Fragment> <div> {/*提示*/} <Modals modalsType={this.state.Modalstype} modalsTopval={this.state.Modalstopval} modalCancel={this.state.ModalCancel} modalSave={this.state.ModalSave} loadtype={this.state.Loadtype} /> {/*提示*/} {/*<Modals*/} {/*modalsType={Modalstype}*/} {/*modalsTopval={Modalstopval}*/} {/*modalCancel={ModalCancel}*/} {/*modalSave={ModalSave}*/} {/*loadtype={Loadtype}*/} {/*/>*/} <DownloadMessageysl {...this.props} value={this.state.DownloadMessageval} modalCancel={this.Downloadcal} modalsType={this.state.DownloadType} /> <HomeworkModal starttimes={this.state.starttimes} typs={this.state.typs} modalname={this.state.modalname} visible={this.state.visible} Topval={this.state.Topval} Topvalright={this.state.Topvalright} Botvalleft={this.state.Botvalleft} Botval={this.state.Botval} starttime={this.state.starttime} endtime={this.state.endtime} Cancelname={this.state.Cancelname} Savesname={this.state.Savesname} Cancel={this.state.Cancel} Saves={this.state.Saves} course_groups={this.state.course_groups} modaltype={this.state.modaltype} getcourse_groupslist={(id) => this.getcourse_groupslist(id)} /> {questionslist&&questionslist?<div className="newMain clearfix"> <div className={"educontent mb20"}> <div className="justify break_full_word new_li markdown-body edu-back-white" id="challenge_editorMd_description"> <p id="ReactMarkdown"> <div style={{padding: '30px 40px'}}> {questionslist&&questionslist? <div style={{ width: '100%', border: '1px solid transparent' }}> <div className={"markdown-body"} dangerouslySetInnerHTML={{__html: markdownToHTML(questionslist.description).replace(/▁/g,"▁▁▁")}}></div> </div>:"" } <div> <AttachmentList {...this.props} {...this.state} attachments={questionslist&&questionslist.attachments}></AttachmentList> </div> {questionslist&&questionslist.group_info?<div> <div className={"mt20"}> <span className="font-14">分组要求:</span> <span className="font-14 color-grey-9">(提交作品时需要关联同组成员,组内成员作品共享)</span> </div> <div className={"mt10"}> <span className="font-14">分组人数:{questionslist.group_info.min_number} - {questionslist.group_info.max_number} 人 </span> {questionslist.group_info.base_on_project===true? <span className="font-14 color-grey-9"> (基于项目,项目管理员角色的成员可以提交作品)</span> : <span className="font-14 color-grey-9"> (非基于项目,任意小组成员可以提交作品)</span>} </div> {questionslist.group_info.base_on_project===true?<div className={"mt10"}> <span className="font-14">基于项目实施</span> <span className="font-14 color-grey-9"> (各小组必须在educoder平台创建项目)</span> </div>:<div className="font-14 mt10">不基于项目实施</div>} </div>:""} </div> </p> {/*<div className="mt10 mb20">*/} {/*<p*/} {/*// className={`noteDetailPoint ${memo.user_praise ? 'Pointed' : ''} `}*/} {/*className={`noteDetailPoint `}*/} {/*onClick={()=>{this.clickPraise()}}*/} {/*>*/} {/*<i className="iconfont icon-dianzan"></i>*/} {/*<br/>*/} {/*/!*<span>{memo.praise_count}</span>*!/*/} {/*</p>*/} {/*</div>*/} </div> <div className={"mt20 course-message"} style={{background: '#fff'}}> <GraduationTaskssettingReply memo={{id: task_Id, user_id: questionslist && questionslist.user_id}} course_id={courseId} {...this.props}> </GraduationTaskssettingReply> {/*讨论区*/} </div> </div> </div>:""} </div> </React.Fragment> ) } } export default GraduationTasksquestions;