You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/public/react/src/modules/courses/graduation/tasks/GraduateTaskItem.js

373 lines
12 KiB

import React,{ Component } from "react";
import CoursesListType from '../../coursesPublic/CoursesListType';
import { WordsBtn } from 'educoder';
import {Tooltip} from 'antd';
import {Link} from 'react-router-dom';
import axios from 'axios';
import Modals from '../../../modals/Modals';
import Associationmodel from '../../coursesPublic/Associationmodel';
import AccessoryModal from "../../coursesPublic/AccessoryModal";
class GraduateTaskItem extends Component{
constructor(props){
super(props);
this.state = {
modalname:"关联项目",
visible:false
}
}
componentDidMount() {
// let url="/graduation_tasks/"+this.props.taskid+"/graduation_works/check_project.json";
// axios.get(url).then((result)=>{
// // console.log(result)
// }).catch((error)=>{
// console.log(error)
// })
//
// let is_relate=false
//
// this.setState({
// isrelate:is_relate
// })
}
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
// })
this.props.funlist()
}
}).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
})
// this.setState({
// Modalstype:true,
//
// Modalstopval:"确定要关联该项目关联?",
// cardsModalcancel:this.cannerassocition,
// cardsModalsavetype:this.saveAssociationItems
// })
}
addAccessory=()=>{
this.setState({
visibles:true
})
}
Cancel=()=>{
this.setState({
visible:false
})
}
Cancelvisible=()=>{
this.setState({
visibles:false
})
}
setupdate=()=>{
this.props.funlist
}
render(){
let {
Modalstype,
Modalstopval,
Modalsbottomval,
cardsModalcancel,
cardsModalsavetype,
loadtype,
modalname,
visible
} = this.state;
const { checkBox,
discussMessage,
onItemClick,
coursesId,
categoryid,
taskid,
index,
isAdmin
} = this.props;
return(
<div className="graduateTopicList boardsList" style={{cursor : isAdmin ? "pointer" : "default" }} onClick={() => window.$(`.taskitem${index} input`).click() }>
<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}
/>:""}
{this.state.visibles===true?<AccessoryModal
{...this.props}
modalname={"补交附件"}
visible={this.state.visibles}
Cancelname={"取消"}
Savesname={"确认"}
Cancel={this.Cancelvisible}
categoryid={discussMessage.work_id}
setupdate={this.setupdate}
/>:""}
<style>{`
.graduateTopicList .ant-checkbox-input {
margin-right: 15px;
}
`}</style>
<span className={`taskitem${index} fl`} style={{"height":"59px"}}>
{ checkBox }
</span>
{/*
style={{borderTop:data===undefined?"":data.course_identity<4?'1px solid #EBEBEB':'1px solid transparent'}}
*/}
{
this.props.isAdmin?"":<style>{`
.boardsList .contentSection {
margin-left: 0px !important;
}
`}</style>}
<div className="clearfix ds pr pt5 contentSection" >
<style>{`
.maxwidth580{
max-width: 580px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap
}
`}</style>
<h6>
{
this.props.isAdmin?<Link to={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/detail/"+taskid+"/list"}
title={discussMessage.name}
className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</Link>:""
}
{
this.props.isStudent? <Link to={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/detail/"+taskid+"/list"}
title={discussMessage.name}
className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</Link>:""
}
{
this.props.isNotMember===true?this.props.discussMessage.private_icon===true?
<span className="fl mt3 font-16 font-bd color-dark maxwidth580" title={discussMessage.name}>{discussMessage.name}</span>
:<a href={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/"+taskid+"/list"}
title={discussMessage.name}
className="fl mt3 font-16 font-bd color-dark maxwidth580">{discussMessage.name}</a>:""
}
{
this.props.discussMessage.private_icon===true?
<Tooltip title={ this.props.isNotMember===true?"私有属性,非课堂成员不能访问":"私有属性"} placement="bottom">
<i className="iconfont icon-guansuo color-grey-c ml10 font-16 fl mt4"></i>
</Tooltip>
:
<div></div>
}
<CoursesListType typelist={discussMessage.status} typesylename={""} />
{/* { !!discussMessage.sticky && <span className="btn-cir btn-cir-red fl mt5 ml5">置顶</span> } */}
</h6>
<div className="cl"></div>
<p className="color-grey mt16 fl">
<span className="mr50">
{/* <a href="/users/innov" className="panel-name-small hide fl mr15 mr30 color-grey3">{discussMessage.author.name}</a> */}
{discussMessage.commit_count===undefined?"":<span className="mr15 color-grey9 font-14">{discussMessage.commit_count} 已交</span>}
{discussMessage.uncommit_count===undefined?"":<span className="mr15 color-grey9 font-14">{discussMessage.uncommit_count} 未交</span>}
{/*<span className="mr15 color-grey9">{discussMessage.replies_count} 3 未评</span>*/}
<Tooltip title={discussMessage.task_status===1?"提交剩余时间":discussMessage.task_status===2?"补交剩余时间":""} placement="bottom">
<span className="mr15 color-grey9 font-14">{discussMessage.status_time}</span>
</Tooltip>
{/* { 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>
<style>
{
`
.mrf4{
margin-right: -4px;
}
`
}
</style>
{this.props.isAdmin?
<div className="mt13">
<WordsBtn style="blue" to={"/courses/"+coursesId+"/graduation_tasks/"+categoryid+"/detail/"+taskid+"/setting"} className="colorblue font-16 mrf4 fr">
<a className="btn colorblue">设置</a>
</WordsBtn>
<WordsBtn style="blue" to={"/courses/"+coursesId+"/graduation_tasks/"+taskid+"/edit"} className="colorblue font-16 mr20 fr">
<a className="btn colorblue" >编辑</a>
</WordsBtn>
</div>
:""}
{this.props.isStudent?
discussMessage&&discussMessage.work_status===null?"":discussMessage&&discussMessage.work_status.map((item,key)=>{
return(
<span key={key}>
{item==="提交作品"?
<WordsBtn style="blue" className="colorblue font-16 ml20 fr mt12">
<a className="btn colorblue" href={"/courses/"+this.props.coursesId+"/graduation_tasks/"+this.props.categoryid+"/works"+"/"+this.props.taskid+"/new"}>提交作品</a>
</WordsBtn>
:""}
{item==="补交作品"?
<WordsBtn style="blue" className="colorblue font-16 ml20 fr mt12">
<a className="btn colorblue" href={"/courses/"+this.props.coursesId+"/graduation_tasks/"+this.props.categoryid+"/works"+"/"+this.props.taskid+"/new"}>补交作品</a>
</WordsBtn>
:""}
{item==="修改作品"?
<WordsBtn style="blue" className="font-16 colorblue ml20 fr mt12">
<a className="btn colorblue" href={"/courses/"+this.props.coursesId+"/graduation_tasks/"+this.props.categoryid+"/works"+"/"+this.props.workid+"/edit"}>修改作品</a>
</WordsBtn>
:""}
{item==="查看作品"?
<WordsBtn style="blue" className="font-16 colorblue ml20 fr mt12">
<a className="btn colorblue" href={"/courses/"+this.props.coursesId+"/graduation_tasks/"+this.props.workid+"/appraise"}>查看作品</a>
</WordsBtn>
:""}
{item==="创建项目"?
<WordsBtn className="colorblue font-16 ml20 fr mt12">
<a className="btn colorblue" href={'/projects/new'} target="_blank">创建项目</a>
</WordsBtn>
:""}
{item==="关联项目"?
<WordsBtn onClick={this.AssociationItems} className="colorblue font-16 ml20 fr mt12">关联项目</WordsBtn>
:""}
{item==="取消关联"?
<WordsBtn onClick={this.cannelAssociation} className="colorblue font-16 ml20 fr mt12">取消关联</WordsBtn>
:""}
{item==="补交附件"?
<WordsBtn className="colorblue font-16 ml20 fr mt12" onClick={this.addAccessory}>
补交附件
{/*<a className="btn colorblue " href={"/courses/"+this.props.coursesId+"/graduation_tasks/"+discussMessage.work_id+"/appraise"}></a>*/}
</WordsBtn>
:""}
</span>
)
}):""}
</div>
</div>
)
}
}
export default GraduateTaskItem;