dev_auth
杨树明 5 years ago
parent 9ac8efcc1f
commit 3a0bf1ab44

@ -3,9 +3,10 @@ import { Breadcrumb,Layout,Table, Divider, Tag,Badge,Row, Col,Button, Menu, Icon
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import axios from 'axios'; import axios from 'axios';
import {markdownToHTML,getImageUrl} from 'educoder'; import {markdownToHTML,getImageUrl} from 'educoder';
import CompetitionContents from './CompetitionContents'; import CompetitionContents from './CompetitionCommonChild/CompetitionContents';
import CompetitionContentsChart from './CompetitionContentsChart'; import CompetitionContentsChart from './CompetitionCommonChild/CompetitionContentsChart';
import CompetitionContentsMd from './CompetitionContentsMd'; import CompetitionContentsMd from './CompetitionCommonChild/CompetitionContentsMd';
import CompetitionContentspdf from './CompetitionCommonChild/CompetitionContentspdf';
import './CompetitionCommon.css'; import './CompetitionCommon.css';
@ -15,14 +16,14 @@ class CompetitionCommon extends Component{
constructor(props) { constructor(props) {
super(props) super(props)
this.state={ this.state={
data:undefined, data:undefined,
bannerdata:undefined, bannerdata:undefined,
module_type:undefined, module_type:undefined,
mdContentdata:undefined, mdContentdata:undefined,
chart_rules:undefined, chart_rules:undefined,
Competitionedittype:false, Competitionedittype:false,
chartdata:undefined, chartdata:undefined,
has_url:false has_url:false
} }
} }
@ -52,8 +53,8 @@ class CompetitionCommon extends Component{
axios.get(url).then((response) => { axios.get(url).then((response) => {
if(response.status===200){ if(response.status===200){
this.setState({ this.setState({
data:response.data, data:response.data,
thiskeys:menuid===undefined||menuid===""?response.data.competition_modules[0].id:menuid thiskeys:menuid===undefined||menuid===""?response.data.competition_modules[0].id:menuid
}) })
if(menuid===undefined||menuid===""){ if(menuid===undefined||menuid===""){
this.getrightdata( this.getrightdata(
@ -80,27 +81,27 @@ class CompetitionCommon extends Component{
console.log(error) console.log(error)
}) })
if(this.props.user&&this.props.user.login!= ""){ if(this.props.user&&this.props.user.login!= ""){
const zul = `/competitions/${this.props.match.params.identifier}/competition_staff.json`; const zul = `/competitions/${this.props.match.params.identifier}/competition_staff.json`;
axios.get((zul)).then((result) => { axios.get((zul)).then((result) => {
if (result) { if (result) {
if (result.data) { if (result.data) {
this.setState({ this.setState({
signupdata:result.data signupdata:result.data
}) })
} }
} }
}).catch((error) => { }).catch((error) => {
//console.log(error); //console.log(error);
}) })
} }
} }
getrightdatas=(e)=>{ getrightdatas=(e)=>{
let keys=parseInt(e.key); let keys=parseInt(e.key);
this.getlistdata(keys) this.getlistdata(keys)
this.props.history.replace(`?menu=${keys}`); this.props.history.replace(`?menu=${keys}`);
} }
getlistdata=(keys,listkey)=>{ getlistdata=(keys,listkey)=>{
@ -127,7 +128,7 @@ class CompetitionCommon extends Component{
if(response.status===200){ if(response.status===200){
this.setState({ this.setState({
chart_rules:response.data, chart_rules:response.data,
tabkey:tabkey===undefined?response.data.stages[0].id===null?"0":`${response.data.stages[0].id}`:tabkey tabkey:tabkey===undefined?response.data.stages[0].id===null?"0":`${response.data.stages[0].id}`:tabkey
}) })
@ -142,10 +143,10 @@ class CompetitionCommon extends Component{
// if(typeid==="enroll"){ // if(typeid==="enroll"){
// this.props.history.replace(`/competitions/${this.props.match.params.identifier}/enroll`); // this.props.history.replace(`/competitions/${this.props.match.params.identifier}/enroll`);
// return // return
// } // }
this.getnewchartdata(typeid,listkey) this.getnewchartdata(typeid,listkey)
if(has_url===false){ if(has_url===false){
let url=`${module_url}`; let url=`${module_url}`;
@ -167,11 +168,11 @@ class CompetitionCommon extends Component{
console.log(error) console.log(error)
}) })
}else{ }else{
if(module_url.substring(0,7)=='http://'||module_url.substring(0,8)=='https://') { if(module_url.substring(0,7)=='http://'||module_url.substring(0,8)=='https://') {
// window.location.href= module_url // window.location.href= module_url
window.open(module_url) window.open(module_url)
}else{ }else{
window.open(`https://${module_url}`) window.open(`https://${module_url}`)
// window.location.href=; // window.location.href=;
} }
return return
@ -186,9 +187,9 @@ class CompetitionCommon extends Component{
} }
Competitionedit=()=>{ Competitionedit=()=>{
this.setState({ this.setState({
Competitionedittype:true Competitionedittype:true
}) })
} }
hideCompetitionedit=()=>{ hideCompetitionedit=()=>{
@ -215,10 +216,10 @@ class CompetitionCommon extends Component{
if(data.member_of_course===true){ if(data.member_of_course===true){
this.props.history.replace(`/courses/${data.course_id}`); this.props.history.replace(`/courses/${data.course_id}`);
}else{ }else{
// 以学生身份调用加入课堂 进入课堂首页 // 以学生身份调用加入课堂 进入课堂首页
let url="/courses/apply_to_join_course.json" let url="/courses/apply_to_join_course.json"
axios.post(url, { axios.post(url, {
invite_code:data.invite_code, invite_code:data.invite_code,
student:1 student:1
} }
).then((response) => { ).then((response) => {
@ -234,7 +235,7 @@ class CompetitionCommon extends Component{
} }
Competitioncallback=(key)=>{ Competitioncallback=(key)=>{
this.setState({ this.setState({
tabkey:key tabkey:key
}) })
let url=`/competitions/${this.props.match.params.identifier}/charts.json`; let url=`/competitions/${this.props.match.params.identifier}/charts.json`;
@ -252,150 +253,168 @@ class CompetitionCommon extends Component{
} }
isdownloadpdf=()=>{
this.setState({
isdownloadpdftype:true
})
}
render() { render() {
let {data,thiskeys,Competitionedittype}=this.state; let {data,thiskeys,Competitionedittype}=this.state;
return ( return (
data===undefined?"":<div className={"educontent clearfix mt20 "}> data===undefined?"":<div className={"educontent clearfix mt20 "}>
<Breadcrumb separator=">"> <Breadcrumb separator=">">
<Breadcrumb.Item><Link to={"/competitions"}>在线竞赛</Link></Breadcrumb.Item> <Breadcrumb.Item><Link to={"/competitions"}>在线竞赛</Link></Breadcrumb.Item>
<Breadcrumb.Item>{data&&data.name}</Breadcrumb.Item> <Breadcrumb.Item>{data&&data.name}</Breadcrumb.Item>
</Breadcrumb> </Breadcrumb>
<div className={"mt10 relative"}> <div className={"mt10 relative"}>
<Row className={"CompetitionCommonbanner"}> <Row className={"CompetitionCommonbanner"}>
{data.competition_status==="nearly_published"? {data.competition_status==="nearly_published"?
data && data.permission.editable === true ? "" : data&&data.permission.editable===true?"":<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div>:""}
<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div> : ""} <img className={"Commonimg"}
<img className={"Commonimg"} src={data.competition_status==="ended"?getImageUrl(`images/educoder/competitions/groups1.png`):data.competition_status==="nearly_published"?getImageUrl(`images/educoder/competitions/groups2.png`):data.competition_status==="progressing"?getImageUrl(`images/educoder/competitions/groups3.png`):""} />
src={data.competition_status==="ended"?getImageUrl(`images/educoder/competitions/groups1.png`):data.competition_status==="nearly_published"?getImageUrl(`images/educoder/competitions/groups2.png`):data.competition_status==="progressing"?getImageUrl(`images/educoder/competitions/groups3.png`):""} /> <Col span={15} className={"Commonimgbox"}>
<Col span={15} className={"Commonimgbox"}> <img className={"image_urlbox"} src={data===undefined?getImageUrl(`images/educoder/competitions/mainbanner.jpg`):data.avatar_url===null?getImageUrl(`images/educoder/competitions/mainbanner.jpg`):getImageUrl(data.avatar_url)}/>
<img className={"image_urlbox"} src={data===undefined?getImageUrl(`images/educoder/competitions/mainbanner.jpg`):data.avatar_url===null?getImageUrl(`images/educoder/competitions/mainbanner.jpg`):getImageUrl(data.avatar_url)}/> </Col>
</Col> <Col className={"CompetitionCommonbannerfont"} span={9}>
<Col className={"CompetitionCommonbannerfont"} span={9}>
<Col className={data&&data.name.length>15?"competitionbannerdiv mt30":"competitionbannerdiv mt30"}>{data&&data.name}</Col> <Col className={data&&data.name.length>15?"competitionbannerdiv mt30":"competitionbannerdiv mt30"}>{data&&data.name}</Col>
<Col className={"competitionbannerdiv mt10"}> <Col className={"competitionbannerdiv mt10"}>
<Col className={"Competitioncolor9b"}>竞赛时间<span className={"color000"}>{data&&data.start_time}{data&&data.end_time}</span></Col> <Col className={"Competitioncolor9b"}>竞赛时间<span className={"color000"}>{data&&data.start_time}{data&&data.end_time}</span></Col>
{/*<Col></Col>*/} {/*<Col></Col>*/}
</Col>
<Col className={"competitionbannerdiv mt10"}>
<Row gutter={16}>
<Col className="gutter-row" span={6}>
<div className="gutter-box CompetitionsIndexdadels Competitioncolor77">奖金</div>
</Col>
<Col className="gutter-row ml20 rankbeicenter" span={6}>
<div className="gutter-box CompetitionsIndexdadels Competitioncolor77">浏览数</div>
</Col> </Col>
<Col className="gutter-row rankbeicenter" span={6}>
<div className="gutter-box CompetitionsIndexdadels Competitioncolor77">报名数</div>
</Col>
</Row>
<Col className={"competitionbannerdiv mt10"}> <Row gutter={16}>
<Row gutter={16}> <Col className="gutter-row" span={6}>
<Col className="gutter-row" span={6}> <div className="gutter-box CompetitionsIndexbottomvalue Competitioncolor516">¥{data&&data.bonus}</div>
<div className="gutter-box CompetitionsIndexdadels Competitioncolor77">奖金</div> </Col>
</Col> <Col className="gutter-row ml20 rankbeicenter" span={6}>
<Col className="gutter-row ml20 rankbeicenter" span={6}> <div className="gutter-box CompetitionsIndexbottomvalue Competitioncolor516">{data.competition_status==="nearly_published"?"--":data&&data.visits_count}</div>
<div className="gutter-box CompetitionsIndexdadels Competitioncolor77">浏览数</div>
</Col>
<Col className="gutter-row rankbeicenter" span={6}>
<div className="gutter-box CompetitionsIndexdadels Competitioncolor77">报名数</div>
</Col>
</Row>
<Row gutter={16}>
<Col className="gutter-row" span={6}>
<div className="gutter-box CompetitionsIndexbottomvalue Competitioncolor516">¥{data&&data.bonus}</div>
</Col>
<Col className="gutter-row ml20 rankbeicenter" span={6}>
<div className="gutter-box CompetitionsIndexbottomvalue Competitioncolor516">{data.competition_status==="nearly_published"?"--":data&&data.visits_count}</div>
</Col>
<Col className="gutter-row rankbeicenter" span={6}>
<div className="gutter-box CompetitionsIndexbottomvalue Competitioncolor516" onClick={data.competition_status==="nearly_published"?"":()=>this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)}>{data.competition_status==="nearly_published"?"--":data&&data.member_count}</div>
</Col>
</Row>
</Col> </Col>
<Col className="gutter-row rankbeicenter" span={6}>
<div className="gutter-box CompetitionsIndexbottomvalue Competitioncolor516" onClick={data.competition_status==="nearly_published"?"":()=>this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)}>{data.competition_status==="nearly_published"?"--":data&&data.member_count}</div>
</Col>
</Row>
</Col>
{data.competition_status==="ended"?<style> {data.competition_status==="ended"?<style>
{ {
` `
.Competitionfontsize22{ .Competitionfontsize22{
height: 50px; height: 50px;
border-radius: 4px; border-radius: 4px;
} }
` `
} }
</style>:<style> </style>:<style>
{ {
` `
.Competitionfontsize22{ .Competitionfontsize22{
height: 50px; height: 50px;
background: rgba(76,172,255,1); background: rgba(76,172,255,1);
border-radius: 4px; border-radius: 4px;
} }
` `
} }
</style>} </style>}
<Col className={"competitionbannerdiv mt20"}> <Col className={"competitionbannerdiv mt20"}>
{data.competition_status==="ended"? {data.competition_status==="ended"?
<Button type="primary" block className={"Competitionfontsize22"} disabled={true}> <Button type="primary" block className={"Competitionfontsize22"} disabled={true}>
已结束 已结束
</Button>:data.enroll_end===true?<Button type="primary" block className={"Competitionfontsize22"} disabled={true}> </Button>:data.enroll_end===true?<Button type="primary" block className={"Competitionfontsize22"} disabled={true}>
{data.competition_status === "nearly_published" ? "未发布" : "报名截止"} {data.competition_status==="nearly_published"?"未发布":"报名截止"}
</Button>: </Button>:
data.competition_status==="progressing"?<Button type="primary" block className={"Competitionfontsize22"}> data.competition_status==="progressing"?<Button type="primary" block className={"Competitionfontsize22"}>
{data.mode===2?<a onClick={()=>this.gotocourse()}>立即报名</a>:<a onClick={()=>this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)}></a>} {data.mode===2?<a onClick={()=>this.gotocourse()}>立即报名</a>:<a onClick={()=>this.gotocourse(`/competitions/${this.props.match.params.identifier}/enroll`)}></a>}
</Button>:""} </Button>:""}
</Col>
<Col className={"mt10 Competitionfontsize16"}>{data&&data.enroll_end_time===null?"":`报名截止时间:${data&&data.enroll_end_time}`}</Col>
</Col> </Col>
</Row> <Col className={"mt10 Competitionfontsize16"}>{data&&data.enroll_end_time===null?"":`报名截止时间:${data&&data.enroll_end_time}`}</Col>
</div> </Col>
</Row>
<Layout className={'teamsLayout mt40'}> </div>
<Sider>
<Menu mode="inline" className="CompetitionMenu" selectedKeys={[`${this.state.thiskeys}`]} onClick={(e)=>this.getrightdatas(e)}> <Layout className={'teamsLayout mt40'}>
{data&&data.competition_modules.map((item,key)=>{ <Sider>
if(item.module_type!="enroll"){ <Menu mode="inline" className="CompetitionMenu" selectedKeys={[`${this.state.thiskeys}`]} onClick={(e)=>this.getrightdatas(e)}>
return( {data&&data.competition_modules.map((item,key)=>{
<Menu.Item key={item.id}> if(item.module_type!="enroll"){
{/*{item.has_url===false?<span*/} return(
{/*// onClick={()=>this.getrightdata(item.id,item.module_type,item.module_url,item.has_url)}*/} <Menu.Item key={item.id}>
{/*>{item.name}</span>:<a*/} {/*{item.has_url===false?<span*/}
{/*// target="_blank"*/} {/*// onClick={()=>this.getrightdata(item.id,item.module_type,item.module_url,item.has_url)}*/}
{/*href={item.module_url}*/} {/*>{item.name}</span>:<a*/}
{/*// onClick={()=>this.getrightdata(item.id,item.module_type)}*/} {/*// target="_blank"*/}
{/*>{item.name}</a>}*/} {/*href={item.module_url}*/}
<a>{item.name}</a> {/*// onClick={()=>this.getrightdata(item.id,item.module_type)}*/}
</Menu.Item> {/*>{item.name}</a>}*/}
) <a>{item.name}</a>
} </Menu.Item>
})} )
</Menu> }
</Sider> })}
</Menu>
<Layout className={"teamsLayoutleft CompetitionContents mb30"}>
{this.state.module_type==="chart"?Competitionedittype===false?<CompetitionContentsChart <Menu mode="inline" className="CompetitionMenu" onClick={(e)=>this.isdownloadpdf(e)}>
{...this.props} <Menu.Item>
{...this.state} <a>证书下载</a>
Competitionedit={()=>this.Competitionedit()} </Menu.Item>
Competitioncallback={(e)=>this.Competitioncallback(e)} </Menu>
/>:"":Competitionedittype===false?<CompetitionContents </Sider>
Competitionedit={()=>this.Competitionedit()}
{...this.props} {this.state.isdownloadpdftype===true?"":<Layout className={"teamsLayoutleft CompetitionContents mb30"}>
{...this.state} {this.state.module_type==="chart"?Competitionedittype===false?<CompetitionContentsChart
/>:""} {...this.props}
{/*<CompetitionContentsChart*/} {...this.state}
{/*{...this.props}*/} Competitionedit={()=>this.Competitionedit()}
{/*{...this.state}*/} Competitioncallback={(e)=>this.Competitioncallback(e)}
{/*/>*/} />:"":Competitionedittype===false?<CompetitionContents
{Competitionedittype===true?<CompetitionContentsMd Competitionedit={()=>this.Competitionedit()}
hideCompetitionedit={()=>this.hideCompetitionedit()} {...this.props}
getlistdata={(keys,listkey)=>this.getlistdata(keys,listkey)} {...this.state}
Competitioncallback={(e)=>this.Competitioncallback(e)} />:""}
{...this.props} {/*<CompetitionContentsChart*/}
{...this.state} {/*{...this.props}*/}
/>:""} {/*{...this.state}*/}
</Layout> {/*/>*/}
{Competitionedittype===true?<CompetitionContentsMd
</Layout> hideCompetitionedit={()=>this.hideCompetitionedit()}
getlistdata={(keys,listkey)=>this.getlistdata(keys,listkey)}
Competitioncallback={(e)=>this.Competitioncallback(e)}
{...this.props}
{...this.state}
/>:""}
</Layout>}
{this.state.isdownloadpdftype===true?<Layout className={"teamsLayoutleft CompetitionContents mb30"}>
<CompetitionContentspdf
{...this.props}
{...this.state}
/>
</Layout>:""}
</Layout>
</div> </div>
) )
} }
} }
export default CompetitionCommon; export default CompetitionCommon;
Loading…
Cancel
Save