import React,{ Component } from "react"; import CoursesListType from '../coursesPublic/CoursesListType'; import { WordsBtn, getTaskUrlById , ConditionToolTip } from 'educoder'; import {Tooltip,message,Modal} from 'antd'; import {Link} from 'react-router-dom'; import axios from 'axios'; import Modals from '../../modals/Modals'; import Associationmodel from '../coursesPublic/Associationmodel'; import ModalsRename from '../coursesPublic/ModalsRename'; // import '../../css/members.css' import './style.css' class ShixunhomeWorkItem extends Component{ constructor(props){ super(props); this.state = { props:props, modalname:"关联项目", visible:false, startbtn:false, code_review:false } // console.log("获取到this.propssssssssssss") // console.log(this.props) } componentDidMount() { let query = this.props.location.pathname; const type = query.split('/'); this.setState({ shixuntypes:type[3] }) } componentDidUpdate = (prevProps) => { if(prevProps.location.pathname != this.props.location.pathname){ let query = this.props.location.pathname; const type = query.split('/'); this.setState({ shixuntypes:type[3] }) } } Cancel=()=>{ this.setState({ visible:false }) } taskoperationId=(list)=>{ this.setState({ startbtn:true, }) let url= list+".json"; // const w=window.open('about:blank'); axios.get(url).then((response) => { if(response.status===200){ if(response.data.status===-2){ this.setState({ startbtn:false, shixunsreplace:true, hidestartshixunsreplacevalue:response.data.message+".json" }) // w.close() }else if(response.data.status===-1){ }else if(response.data.status===-3){ this.setState({ shixunsmessage:response.data.message, startshixunCombattype:true, startbtn:false }) // w.close() }else{ this.setState({ startbtn:false }) // if(response.data.status!=401&&response.data.status!=403){ // w.location.href= "/tasks/"+response.data.game_identifier // } window.location.href = "/tasks/"+response.data.game_identifier } } }).catch((error) => { this.setState({ startbtn:false }) // w.close() }); } hidestartshixunsreplace=(url)=>{ axios.get(url).then((response) => { if(response.status===200){ this.setState({ shixunsreplace:false }) message.success('重置成功,正在进入实训!'); let path="/shixuns/"+response.data.shixun_identifier+"/challenges"; this.props.history.push(path); }} ).catch((error) => { this.setState({ startbtn:false, shixunsreplace:false }) }); } hidestartshixunCombattype=()=>{ this.setState({ startshixunCombattype:false }) } // 实训详情,阻止冒泡 stopPro = (event) => { event.stopPropagation() } editname = (name,id,event) => { this.setState({ ModalsRenametype:true, NavmodalValue:name, Navmodalname:"重命名", url:`/homework_commons/${id}/alter_name.json` }) event.stopPropagation() } cannerNavmoda=()=>{ this.setState({ ModalsRenametype:false, }) } hrefjumpskip=(url)=>{ if(this.props.checkIfLogin()===false){ this.props.showLoginDialog() return } // if(this.props.checkIfProfileCompleted()===false){ // this.setState({ // AccountProfiletype:true // }) // return // } // if(this.props.checkIfProfessionalCertification()===false){ // this.props.showProfileCompleteDialog() // return // } this.props.history.push(url); } render(){ let { Modalstype, Modalstopval, Modalsbottomval, cardsModalcancel, cardsModalsavetype, loadtype, modalname, visible, shixunsreplace, hidestartshixunsreplacevalue, startshixunCombattype, shixunsmessage, startbtn, } = this.state; const { checkBox, discussMessage, taskid,index } = this.props; return( <React.Fragment> { this.state.ModalsRenametype===true? <ModalsRename {...this.props} Navmodalnametype={this.state.ModalsRenametype} NavmodalValue={this.state.NavmodalValue} Navmodalname={this.state.Navmodalname} Navname={"作业"} url={this.state.url} cannerNavmoda={()=>this.cannerNavmoda()} /> :""} <Modals modalsType={Modalstype} modalsTopval={Modalstopval} modalsBottomval={Modalsbottomval} modalCancel={cardsModalcancel} modalSave={cardsModalsavetype} loadtype={loadtype} /> {visible===true?<Associationmodel modalname={modalname} visible={visible} Cancel={this.Cancel} taskid={taskid} funlist={this.props.funlist} />:""} <Modal keyboard={false} title="提示" visible={shixunsreplace} closable={false} footer={null} > <div className="task-popup-content"> <p className="task-popup-text-center font-16 pb20">实训已经更新了,正在为您重置!</p> </div> <div className="task-popup-submit clearfix"> <a className="task-btn task-btn-orange fr mr51" onClick={() => this.hidestartshixunsreplace(hidestartshixunsreplacevalue)}>知道了</a> </div> </Modal> <Modal keyboard={false} title="提示" visible={startshixunCombattype} closable={false} footer={null} > <div className="task-popup-content"> <p className="task-popup-text-center font-16 pb20">目前该实训项目尚在内测中,将于{shixunsmessage}之后开放,谢谢!</p> </div> <div className="task-popup-submit clearfix"> {/*<a onClick={this.hidestartshixunCombattype} className="task-btn fl">取消</a>*/} <a className="task-btn task-btn-orange fr mr51" onClick={this.hidestartshixunCombattype}>知道啦</a> </div> {/*<p className="inviteTipbtn with100 fl">*/} {/*<a onClick={this.hidestartshixunCombattype}>知道了</a>*/} {/*</p>*/} </Modal> <div className="graduateTopicList boardsList" style={{cursor : this.props.isAdmin ? "pointer" : "default"}} onClick={() => window.$(`.shixunitem${index} input`).click() } > <style>{` .boardsList .ant-checkbox-wrapper{ margin-top: -35px; } .graduateTopicList .ant-checkbox-input { margin-right: 15px; } .inlineblock{ display: inline-block; } .titleSearch .titleBar { display: flex; } .titleSearch .titleBar .toolbar { flex: 1; display: flex; justify-content: flex-end; align-items: center; } /*list style*/ .boardsList { display: flex; align-items: center; padding-top: 8px; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; } .boardsList .homepagePostSetting { position: absolute; width: 20px; height: 20px; } .boardsList .contentSection { flex: 1; } `}</style> {this.props.isAdmin? <span className={`shixunitem${index} fl`} style={{"height":"55px"}}>{checkBox}</span> : "" } <div className="clearfix ds pr pt5 contentSection" > <style>{` .maxwidth333{ max-width: 333px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } `}</style> <h6> {/*to={`/courses/${this.props.match.params.coursesId}/${discussMessage.homework_id}/jobsettings`}*/} { this.props.isAdmin?<a onClick={()=>this.hrefjumpskip("/courses/"+this.props.match.params.coursesId+"/"+this.state.shixuntypes+"/"+discussMessage.homework_id+"/list?tab=0")} title={discussMessage.name} className="fl mt3 font-16 font-bd color-dark maxwidth333">{discussMessage.name}</a>:"" } { this.props.isStudent? <a onClick={()=>this.hrefjumpskip(`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/list?tab=0`)} title={discussMessage.name} className="fl mt3 font-16 font-bd color-dark maxwidth333">{discussMessage.name}</a>:"" } { this.props.isNotMember===true? this.props.discussMessage.private_icon===true? <span className="fl mt3 font-16 font-bd color-dark maxwidth333 pointer" title={"私有属性,非课堂成员不能访问"}>{discussMessage.name}</span> : <a onClick={()=>this.hrefjumpskip(`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/list?tab=0`)} title={discussMessage.name} className="fl mt3 font-16 font-bd color-dark maxwidth333">{discussMessage.name}</a>:"" } { this.props.discussMessage.private_icon===true? <Tooltip title={"私有属性,非课堂成员不能访问"} placement="bottom"> <i className="iconfont icon-guansuo color-grey-c ml10 font-16 fl mt4"></i> </Tooltip> : <div></div> } <CoursesListType typelist={discussMessage.status} typesylename={""} /> <style> { ` .homepagePostSettingbox{ width:207px !important; } .colorfff{ color:#fff !important; } .newhomepagePostSettingname{ width: 274px !important; } .newwidthSettin{ width:255px !important; } ` } </style> {this.props.isAdmin?<span onClick={(event)=>this.stopPro(event)} className={discussMessage&&discussMessage.shixun_status>1?this.props.isAdminOrCreator()?"homepagePostSetting newhomepagePostSettingname":"homepagePostSetting homepagePostSettingbox":"homepagePostSetting newwidthSettin"} style={{"right":"-2px","top":"6px","display":"block"}}> {discussMessage&&discussMessage.shixun_status>1?<a onClick={()=>this.hrefjumpskip("/courses/"+this.props.match.params.coursesId+"/"+this.state.shixuntypes+"/"+discussMessage.homework_id+"/list?tab=0")} className="btn colorblue font-16 fontweight400 mr20">查看详情</a>:""} {discussMessage&&discussMessage.shixun_status>1?<Link className="btn colorblue font-16 fontweight400 mr20" to={"/shixuns/"+discussMessage.shixun_identifier+"/challenges"} target={"_blank"}>实训详情</Link>: <a className={"btn colorfff font-16 fontweight400"}>实训详情</a> } {discussMessage&&discussMessage.shixun_status>1?"":<a onClick={()=>this.hrefjumpskip("/courses/"+this.props.match.params.coursesId+"/"+this.state.shixuntypes+"/"+discussMessage.homework_id+"/list?tab=0")} className="btn colorblue font-16 fontweight400 mr20">查看详情</a>} {this.props.isAdminOrCreator()?<a onClick={(event)=>this.editname(discussMessage.name,discussMessage.homework_id,event)} className={"btn colorblue font-16 fontweight400"}>重命名</a>:""} {/*<WordsBtn className="btn colorblue ml20 font-16" to={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/settings?tab=3`} > 设置</WordsBtn>*/} <WordsBtn className="btn colorblue font-16 ml15 fontweight400" to={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${discussMessage.homework_id}/settings?tab=3`} > 设置</WordsBtn> </span>:""} {this.props.isStudent===true?this.props.course_identity===5? <a onClick={()=>this.hrefjumpskip("/courses/"+this.props.match.params.coursesId+"/"+this.state.shixuntypes+"/"+discussMessage.homework_id+"/list?tab=0")} className="btn colorblue colorblue font-16 mr20 fr mt2">查看详情</a> :"":"" } {this.props.isStudent===true?this.props.course_identity===5?discussMessage&&discussMessage.shixun_status>1? discussMessage.time_status<5? <WordsBtn style="blue" className="colorblue font-16 mr20 fr mt2 "> {startbtn===false? (discussMessage.task_operation[0] == '继续挑战' || discussMessage.task_operation[0] == '查看实战' ? <a className="btn colorblue" href={getTaskUrlById(discussMessage.task_operation[1])}> {discussMessage.task_operation[0]} </a> : <a className="btn colorblue" onClick={()=>this.taskoperationId(discussMessage.task_operation[1])}> {discussMessage.task_operation[0]} </a>):<a className="btn colorblue" >开启中</a>} </WordsBtn>:"":"":"":"" } </h6> <div className="cl"></div> <p className="color-grey mt16 fl" style={{"width":"820px"}}> <span > {/* <a href="/users/innov" className="panel-name-small hide fl mr15 mr30 color-grey3">{discussMessage.author.name}</a> */} { discussMessage.author && <span className="mr15 color-grey-3">{discussMessage.author}</span> } {discussMessage.commit_count===undefined?"":<span className="mr15 color-grey9">已开始做题 {discussMessage.commit_count}人</span>} {discussMessage.uncommit_count===undefined?"":<span className="mr15 color-grey9">未开始做题 {discussMessage.uncommit_count}人</span>} {/*<span className="mr15 color-grey9">{discussMessage.replies_count} 3 未评</span>*/} { discussMessage.time_status===1? <span className="mr15 color-grey9">{discussMessage.status_time}</span> :discussMessage.time_status===2? <span className="mr15 color-grey9">{discussMessage.status_time}</span> :discussMessage.time_status===3? <span className="mr15 color-grey9">{discussMessage.status_time}</span> :discussMessage.time_status===4? <span className="mr15 color-grey9">{discussMessage.status_time}</span> : <span className="mr15 color-grey9">{discussMessage.status_time}</span> } { discussMessage && discussMessage.upper_category_name && <ConditionToolTip title={discussMessage.upper_category_name} condition={ discussMessage.upper_category_name.length > 22 }> { <div className=" color-grey9 task-hide fr" style={discussMessage.time_status===1||discussMessage.time_status===2||discussMessage.time_status===3||discussMessage.time_status===4||discussMessage.time_status===5||discussMessage.time_status===6?{"maxWidth":"216px"}:{"maxWidth":"550px"}} title={discussMessage.upper_category_name}>所属目录:{discussMessage.upper_category_name}</div>} </ConditionToolTip> } {/* { discussMessage.replies_count != 0 && <span className="mr15 color-grey9">{discussMessage.replies_count} 回复</span> } { discussMessage.praise_num != 0 && <span className="mr15 color-grey9">{discussMessage.praise_num} 点赞</span> } { discussMessage.visits != 0 && <span className="mr15 color-grey9">{discussMessage.visits} 浏览</span> } */} {/* <span className="mr15 color-light-grey-C">{moment(discussMessage.created_on).fromNow()} </span> */} </span> </p> </div> </div> </React.Fragment> ) } } export default ShixunhomeWorkItem; // // cannelAssociation=()=>{ // // this.setState({ // Modalstype:true, // Modalstopval:"确定要取消该项目关联?", // cardsModalcancel:this.cannerassocition, // cardsModalsavetype:this.savetassociton // }) // // } // cannerassocition=()=>{ // // this.setState({ // Modalstype:false, // Modalstopval:"", // cardsModalcancel:"", // cardsModalsavetype:"", // loadtype:false // }) // // } // savetassociton=()=>{ // this.cannerassocition(); // let taskid=this.props.taskid; // let url = "/graduation_tasks/"+taskid+"/graduation_works/cancel_relate_project.json"; // axios.get(url).then((result)=>{ // // if(result.data.status===0){ // this.setState({ // Modalstype:true, // Modalstopval:result.data.message, // cardsModalsavetype:this.cannerassocition, // loadtype:true // }) // } // // }).catch((error)=>{ // console.log(error) // }) // // } // // saveAssociationItems=()=>{ // // let coursesId=this.props.coursesId; // let taskid=this.props.taskid; // let url="/courses/"+coursesId+"/graduation_tasks/relate_project.json"; // axios.post(url,{ // project_id:taskid // }).then((result)=>{ // console.log(result) // if(result.data.status===0){ // this.setState({ // Modalstype:true, // Modalstopval:result.data.message, // cardsModalsavetype:this.cannerassocition, // loadtype:true // }) // } // }).catch((error)=>{ // console.log(error) // }) // // } // // // AssociationItems=()=>{ // this.setState({ // visible:true // }) // }