合并预生产代码
|
@ -204,8 +204,7 @@ class NewHeader extends Component {
|
|||
}else{
|
||||
str = match.path;
|
||||
}
|
||||
|
||||
if (url && str === url) {
|
||||
if (url && (str === url || (str === url+'/'))) {
|
||||
return true
|
||||
}else {
|
||||
return false
|
||||
|
|
|
@ -192,7 +192,7 @@ function CoderDepot(props){
|
|||
const url = `/${owner}/${projectsId}/sub_entries.json`;
|
||||
axios.get(url, {
|
||||
params:{
|
||||
filepath:path,
|
||||
filepath:returnbar(path),
|
||||
ref:ref || branchName,
|
||||
type
|
||||
}
|
||||
|
@ -272,8 +272,9 @@ function CoderDepot(props){
|
|||
if(type!=="submodule"){
|
||||
let enBranch = branchName || defaultBranch;
|
||||
let checkvalue = turnbar(enBranch);
|
||||
let enPath = turnbar(path);
|
||||
setType(type);
|
||||
props.history.push(`/${owner}/${projectsId}${`/tree/${checkvalue}`}${path?`/${path}`:""}`);
|
||||
props.history.push(`/${owner}/${projectsId}${`/tree/${checkvalue}`}${enPath?`/${enPath}`:""}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,11 @@ const typeIco = {
|
|||
}
|
||||
|
||||
function CoderDepotCatalogue({item , goToSubRoot , owner , projectsId , platform }){
|
||||
// 只显示第一个换行符前的内容
|
||||
function getMessage(value){
|
||||
let str = value.indexOf('\n') > 0 && value.split('\n');
|
||||
return str[0];
|
||||
}
|
||||
return(
|
||||
<li>
|
||||
<span>
|
||||
|
@ -23,7 +28,7 @@ function CoderDepotCatalogue({item , goToSubRoot , owner , projectsId , platform
|
|||
</span>
|
||||
<span title="init project">
|
||||
<Link to={`/${owner}/${projectsId}/commits/${truncateCommitId(`${item.commit && item.commit.sha}`)}`} title={item.commit && item.commit.message}>
|
||||
{item.commit && item.commit.message}
|
||||
{getMessage(item.commit && item.commit.message)}
|
||||
</Link>
|
||||
</span>
|
||||
<span title={item.commit && item.commit.created_at}>{item.commit && item.commit.time_from_now}</span>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { result } from 'lodash';
|
||||
import React from 'react';
|
||||
import { returnbar } from 'educoder';
|
||||
|
||||
|
||||
function CoderDepotPath({treeValuePath , returnUlr , returnMain , getPathUrl , identifier}){
|
||||
|
@ -17,9 +17,9 @@ function CoderDepotPath({treeValuePath , returnUlr , returnMain , getPathUrl , i
|
|||
<React.Fragment key={key}>
|
||||
{
|
||||
key === treeValuePath.length-1 ?
|
||||
<span className="color-grey-6 subFileName">{item}</span>
|
||||
<span className="color-grey-6 subFileName" key={key}>{returnbar(item)}</span>
|
||||
:
|
||||
<a onClick={()=>returnUlr(`${getPathUrl(treeValuePath,key+1)}`)} className="color-blue subFileName">{item}</a>
|
||||
<a onClick={()=>returnUlr(`${getPathUrl(treeValuePath,key+1)}`)} className="color-blue subFileName">{returnbar(item)}</a>
|
||||
}
|
||||
</React.Fragment>
|
||||
);
|
||||
|
|
|
@ -512,7 +512,7 @@
|
|||
top: 0px;
|
||||
color: #999;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
line-height: 17px;
|
||||
}
|
||||
.addFile{
|
||||
display: flex;
|
||||
|
|
|
@ -15,15 +15,15 @@ function Contact() {
|
|||
<div className="contact-info">
|
||||
<h4 className="contact-invite">期待你的加入,和我们一起推动开源繁荣发展!</h4>
|
||||
<div className="contact-way">
|
||||
<p>问题资讯: 243275429@qq.com</p>
|
||||
<p>交流QQ群: 210174286</p>
|
||||
<p>合作推广: gitlink@ccf.org.cn</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className='attention'>
|
||||
<div className='one'>
|
||||
<div className='attentionDiv'><img src={gitlink1} alt="gitlink1"/></div>
|
||||
<p>加入GitLink</p>
|
||||
<p>社区QQ群</p>
|
||||
<p>加入编程夏令营</p>
|
||||
<p>交流QQ群</p>
|
||||
</div>
|
||||
<div>
|
||||
<div className='attentionDiv'><img src={gitlink2} alt="gitlink2"/></div>
|
||||
|
|
|
@ -33,7 +33,7 @@ export default (props) => {
|
|||
if(!studentApplyStart){
|
||||
showNotification("不在报名时间,报名开始时间为5月26日");
|
||||
}else{
|
||||
window.location.href="/glcc/student/2";
|
||||
window.location.href="/glcc/subjects";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ export default (props) => {
|
|||
<div className="apply project">
|
||||
<div>
|
||||
<img src={apply1} alt="" className="applyIcon"/>
|
||||
<span className="hover-none"><span className="til">项目报名</span> ></span>
|
||||
<span className="hover-none"><span className="til">项目报名</span> </span>
|
||||
<span className="hover-show">项目报名已截止</span>
|
||||
</div>
|
||||
<div className="pt6">项目报名开启,导师席位虚位以待</div>
|
||||
|
@ -62,7 +62,7 @@ export default (props) => {
|
|||
<div className="apply" onClick={goToStudent}>
|
||||
<div>
|
||||
<img src={apply2} alt="" className="applyIcon"/>
|
||||
<span className="til">学生报名</span> >
|
||||
<span className="til">学生报名</span>
|
||||
</div>
|
||||
<div className="pt6">选择感兴趣的课题,开启您的开源之旅</div>
|
||||
</div>
|
||||
|
|
|
@ -32,7 +32,7 @@ function Lightspot(props) {
|
|||
if(!studentApplyStart){
|
||||
showNotification("不在报名时间,报名开始时间为5月26日");
|
||||
}else{
|
||||
window.location.href="/glcc/student/2";
|
||||
window.location.href="/glcc/subjects";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ function Lightspot(props) {
|
|||
<div className="info-item">
|
||||
<img className="info-item-img" src={lightspot1} alt=''></img>
|
||||
<h3 className="info-item-tit">汇聚行业顶尖开源项目</h3>
|
||||
<div className="info-item-content">平台汇聚商汤、腾讯、百度、阿里巴巴、亚马逊云科技、滴滴等行业尖端开源项目,把握开源生态发展脉搏</div>
|
||||
<div className="info-item-content">平台汇聚腾讯、百度、阿里巴巴、亚马逊云科技、滴滴等行业尖端开源项目,把握开源生态发展脉搏</div>
|
||||
</div>
|
||||
|
||||
<div className="info-item">
|
||||
|
|
|
@ -3,6 +3,15 @@ import './index.scss';
|
|||
import ccf from '../../img/ccf_logo.png';
|
||||
import gitlink from '../../img/gitlink.png';
|
||||
import xjy from '../../img/xjy.png';
|
||||
import sponsor11 from '../../img/sponsor11.png';
|
||||
import sponsor21 from '../../img/sponsor21.png';
|
||||
import sponsor22 from '../../img/sponsor22.png';
|
||||
import sponsor23 from '../../img/sponsor23.png';
|
||||
import sponsor31 from '../../img/sponsor31.png';
|
||||
import sponsor32 from '../../img/sponsor32.png';
|
||||
import sponsor41 from '../../img/sponsor41.png';
|
||||
|
||||
|
||||
import log34 from '../../img/34@2x.png';
|
||||
import log35 from '../../img/35@2x.png';
|
||||
import log36 from '../../img/36@2x.png';
|
||||
|
@ -50,81 +59,39 @@ function Partner() {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{false && <div className='cont cont2'>
|
||||
赞助商
|
||||
{/* 一级赞助商 */}
|
||||
<div className='one_sponsor mt10'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>钻石赞助商</p>
|
||||
</div>
|
||||
|
||||
<div className='cont cont3 mt15'>
|
||||
钻石赞助商
|
||||
<div className='pt10'>
|
||||
<div className="sponsor" onClick={()=>{window.open("https://openmmlab.com/")}}><img src={sponsor11} className='gitlink' alt='OpenMMLab'/></div>
|
||||
</div>
|
||||
{/* 二级赞助商 */}
|
||||
<div className='two_sponsor'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p className='op83'>铂金赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p className='op83'>铂金赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p className='op83'>铂金赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className='cont cont3 mt15'>
|
||||
白金赞助商
|
||||
<div className='pt10'>
|
||||
<div className="sponsor" onClick={()=>{window.open("http://www.baidu.com/")}}><img src={sponsor21} className='gitlink' alt='百度'/></div>
|
||||
<div className="sponsor" onClick={()=>{window.open("https://www.alibaba.com/")}}><img src={sponsor22} className='gitlink' alt='蚂蚁集团'/></div>
|
||||
<div className="sponsor" onClick={()=>{window.open("https://www.antgroup.com/")}}><img src={sponsor23} className='gitlink' alt='阿里巴巴'/></div>
|
||||
</div>
|
||||
{/* 三级赞助商 */}
|
||||
<div className='three_sponsor'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>黄金赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>黄金赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>黄金赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className='cont cont3 mt15'>
|
||||
黄金赞助商
|
||||
<div className='pt10'>
|
||||
<div className="sponsor" onClick={()=>{window.open("https://aws.amazon.com/cn/")}}><img src={sponsor31} className='gitlink' alt='亚马逊云科技'/></div>
|
||||
<div className="sponsor" onClick={()=>{window.open("https://www.didiglobal.com/")}}><img src={sponsor32} className='gitlink' alt='滴滴出行'/></div>
|
||||
</div>
|
||||
{/* 四级赞助商 */}
|
||||
<div className='four_sponsor'>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>白银赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>白银赞助商</p>
|
||||
</div>
|
||||
<div>
|
||||
<img src={gitlink} className='gitlink'/>
|
||||
<p className='bor'></p>
|
||||
<p>白银赞助商</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className='cont cont3 mt15'>
|
||||
白银赞助商
|
||||
<div className='pt10'>
|
||||
<div className="sponsor" onClick={()=>{window.open("https://www.bytedance.com/")}}><img src={sponsor41} className='gitlink' alt='字节跳动'/></div>
|
||||
</div>
|
||||
</div>}
|
||||
</div>
|
||||
|
||||
|
||||
<div className='cont cont3 mt15'>
|
||||
参与高校
|
||||
<div className='pt10'>
|
||||
|
|
|
@ -37,57 +37,57 @@
|
|||
.div8b9 .gitlink{width: 180px;}
|
||||
.div8b9 .xjy{width: 200px;}
|
||||
}
|
||||
.cont2>div>div{
|
||||
width:156px;
|
||||
height:87px;
|
||||
padding: 12px 20px;
|
||||
margin-right: 50px;
|
||||
>img{width: 110px;
|
||||
margin: 0 auto;}
|
||||
>.bor{
|
||||
width: 100px;
|
||||
height: 2px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
>p{
|
||||
width: auto;
|
||||
font-size: 12px;
|
||||
margin: 2px auto;
|
||||
text-align: center;}
|
||||
}
|
||||
.cont2>div{
|
||||
display: flex;
|
||||
margin-top: 30px;
|
||||
>div{border-radius:4px;
|
||||
&:hover{
|
||||
box-shadow:0px 0px 10px rgba(255, 255, 255, 0.76);
|
||||
}}
|
||||
&.one_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#333333 0%,#474747 21.34%,#929292 44.35%,#575757 61.08%,#444444 75.73%,#212121 100%);
|
||||
border:1px solid #c4bfba;
|
||||
>.bor{background-image:linear-gradient(242.92deg,#f9e9b1 0%,#fff2d2 52.29%,#ebcc90 100%);}
|
||||
}
|
||||
&.two_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#ffffff 0%,#d8d8d8 21.34%,#aeaeae 34.31%,#fcfcfc 47.69%,#bbbbbb 64.44%,#f2f2f2 81.59%,#828282 100%);
|
||||
border:1px solid #dbdbdd;
|
||||
>.bor{background-color:#ffffff;}
|
||||
>.op83{
|
||||
color:#000000;
|
||||
opacity: .83;
|
||||
}
|
||||
}
|
||||
&.three_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#ba973a 0%,#c7a948 21.34%,#d1ae33 47.69%,#ffdb72 72.15%,#b37907 100%);
|
||||
border:1px solid #efe3ca;
|
||||
>.bor{background-image:linear-gradient(242.92deg,#f9e9b1 0%,#fff2d2 52.29%,#ebcc90 100%);}
|
||||
}
|
||||
&.four_sponsor>div{
|
||||
background-image:linear-gradient(135.33deg,#636363 0%,#bebebe 21.34%,#979797 43.51%,#9c9c9c 61.08%,#8d8d8d 75.73%,#727272 100%);
|
||||
border:1px solid #dbdbdd;
|
||||
>.bor{background-color:#ffffff;}
|
||||
// >p{color: #000000;}
|
||||
}
|
||||
}
|
||||
// .cont2>div>div{
|
||||
// width:156px;
|
||||
// height:87px;
|
||||
// padding: 12px 20px;
|
||||
// margin-right: 50px;
|
||||
// >img{width: 110px;
|
||||
// margin: 0 auto;}
|
||||
// >.bor{
|
||||
// width: 100px;
|
||||
// height: 2px;
|
||||
// margin: 0 auto;
|
||||
// }
|
||||
// >p{
|
||||
// width: auto;
|
||||
// font-size: 12px;
|
||||
// margin: 2px auto;
|
||||
// text-align: center;}
|
||||
// }
|
||||
// .cont2>div{
|
||||
// display: flex;
|
||||
// margin-top: 30px;
|
||||
// >div{border-radius:4px;
|
||||
// &:hover{
|
||||
// box-shadow:0px 0px 10px rgba(255, 255, 255, 0.76);
|
||||
// }}
|
||||
// &.one_sponsor>div{
|
||||
// background-image:linear-gradient(135.33deg,#333333 0%,#474747 21.34%,#929292 44.35%,#575757 61.08%,#444444 75.73%,#212121 100%);
|
||||
// border:1px solid #c4bfba;
|
||||
// >.bor{background-image:linear-gradient(242.92deg,#f9e9b1 0%,#fff2d2 52.29%,#ebcc90 100%);}
|
||||
// }
|
||||
// &.two_sponsor>div{
|
||||
// background-image:linear-gradient(135.33deg,#ffffff 0%,#d8d8d8 21.34%,#aeaeae 34.31%,#fcfcfc 47.69%,#bbbbbb 64.44%,#f2f2f2 81.59%,#828282 100%);
|
||||
// border:1px solid #dbdbdd;
|
||||
// >.bor{background-color:#ffffff;}
|
||||
// >.op83{
|
||||
// color:#000000;
|
||||
// opacity: .83;
|
||||
// }
|
||||
// }
|
||||
// &.three_sponsor>div{
|
||||
// background-image:linear-gradient(135.33deg,#ba973a 0%,#c7a948 21.34%,#d1ae33 47.69%,#ffdb72 72.15%,#b37907 100%);
|
||||
// border:1px solid #efe3ca;
|
||||
// >.bor{background-image:linear-gradient(242.92deg,#f9e9b1 0%,#fff2d2 52.29%,#ebcc90 100%);}
|
||||
// }
|
||||
// &.four_sponsor>div{
|
||||
// background-image:linear-gradient(135.33deg,#636363 0%,#bebebe 21.34%,#979797 43.51%,#9c9c9c 61.08%,#8d8d8d 75.73%,#727272 100%);
|
||||
// border:1px solid #dbdbdd;
|
||||
// >.bor{background-color:#ffffff;}
|
||||
// // >p{color: #000000;}
|
||||
// }
|
||||
// }
|
||||
.cont3>div{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
@ -101,11 +101,15 @@
|
|||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 0 20px 20px 0;
|
||||
&.sponsor{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
&:hover{
|
||||
cursor: pointer;
|
||||
box-shadow:0px 0px 10px rgba(255, 255, 255, 0.76);
|
||||
}
|
||||
>img{width: 95%;}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 150 KiB |
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 150 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 12 KiB |
|
@ -109,7 +109,15 @@ const Glcc = (propsF) => {
|
|||
></Route>
|
||||
{/* 项目/课题列表 */}
|
||||
<Route
|
||||
path="/glcc/student"
|
||||
path="/glcc/projects"
|
||||
render={(props) => (
|
||||
<Project {...propsF} {...props} isStudentApplyDate={isStudentApplyDate} studentApplyEnd={studentApplyEnd} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset}/>
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 课题列表 */}
|
||||
<Route
|
||||
path="/glcc/subjects"
|
||||
render={(props) => (
|
||||
<Project {...propsF} {...props} isStudentApplyDate={isStudentApplyDate} studentApplyEnd={studentApplyEnd} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset}/>
|
||||
)}
|
||||
|
|
|
@ -42,12 +42,12 @@ export default ({ detail, projectId, applyTaskId, current_user, showLoginDialog,
|
|||
<p>GitLink项目地址: <a href={info.gitlinkUrl} className='linkUrl' target={"_blank"}>{info.gitlinkUrl}</a></p>
|
||||
<div>项目简介: {info.projectIntro}</div>
|
||||
</div>
|
||||
{info.registrationTaskList && info.registrationTaskList.length > 0 ? info.registrationTaskList.map(item=>{
|
||||
return <div className='taskItem mt20'>
|
||||
{info.registrationTaskList && info.registrationTaskList.length > 0 ? info.registrationTaskList.map((item, index)=>{
|
||||
return <div className='taskItem mt20' key={index}>
|
||||
<div className="left">
|
||||
<div className="taskTitle" onClick={()=>{window.location.href=`/glcc/student/detail/${item.id}`}}><Tooltip title={item.taskName}>{item.taskName}</Tooltip></div>
|
||||
<div className='mt20 oneLine leftWidth'>导师姓名: {item.tutorName}</div>
|
||||
<div className='mb20 email oneLine leftWidth'>邮箱地址: <span><Tooltip title={item.tutorMail}>{item.tutorMail}</Tooltip></span></div>
|
||||
{item.tutorMail && <div className='mb20 email oneLine leftWidth'>邮箱地址: <span><Tooltip title={item.tutorMail}>{item.tutorMail}</Tooltip></span></div>}
|
||||
</div>
|
||||
<div className="center">
|
||||
<div className="taskDesc">{item.taskDesc}</div>
|
||||
|
|
|
@ -30,8 +30,8 @@ function Project(propsF) {
|
|||
<div className="glcc_project">
|
||||
<img className="glcc-banner" src={banner} alt=''></img>
|
||||
<div className='head'>
|
||||
<Link to="/glcc/student/2" className={!pathname.endsWith('/1') ? 'active' : ''}>课题列表</Link>
|
||||
<Link to="/glcc/student/1" className={pathname.endsWith('/1') ? 'active' : ''}>项目列表</Link>
|
||||
<Link to="/glcc/subjects" className={!pathname.endsWith('projects') ? 'active' : ''}>课题列表</Link>
|
||||
<Link to="/glcc/projects" className={pathname.endsWith('projects') ? 'active' : ''}>项目列表</Link>
|
||||
</div>
|
||||
<div className='gobackBox'>
|
||||
<a href='/glcc'>开源夏令营 / </a>
|
||||
|
@ -40,13 +40,13 @@ function Project(propsF) {
|
|||
<Spin spinning={false}>
|
||||
<Switch {...propsF}>
|
||||
<Route
|
||||
path="/glcc/student/1"
|
||||
path="/glcc/projects"
|
||||
render={(props) => (
|
||||
<ProjectList applyTaskId={applyTaskId} current_user={current_user} showLoginDialog={showLoginDialog} isStudentApplyDate={isStudentApplyDate} studentApplyEnd={studentApplyEnd}/>
|
||||
)}
|
||||
></Route>
|
||||
<Route
|
||||
path="/glcc/student/2"
|
||||
path="/glcc/subjects"
|
||||
render={(props) => (
|
||||
<TaskList applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} current_user={current_user} showLoginDialog={showLoginDialog} isStudentApplyDate={isStudentApplyDate} studentApplyEnd={studentApplyEnd}/>
|
||||
)}
|
||||
|
|
|
@ -5,6 +5,7 @@ import './index.scss';
|
|||
import { projectList } from '../../api';
|
||||
import ProjectDetail from '../component/projectDetail';
|
||||
import bgPng from "../../img/bgPng.png";
|
||||
import logo from "../../img/logo.png";
|
||||
const {Search} = Input;
|
||||
|
||||
// 项目列表
|
||||
|
@ -19,7 +20,7 @@ function ProjectList({applyTaskId, current_user, showLoginDialog, isStudentApply
|
|||
const params = {
|
||||
curPage: 1,
|
||||
keyword,
|
||||
pageSize: 20
|
||||
pageSize: 10000
|
||||
}
|
||||
projectList(params).then(response=>{
|
||||
if(response && response.message === "success"){
|
||||
|
@ -36,10 +37,10 @@ function ProjectList({applyTaskId, current_user, showLoginDialog, isStudentApply
|
|||
<Spin spinning={loading}>
|
||||
<div className='projectListBox'>
|
||||
{data && data.map((item, index)=>{
|
||||
return <Popover placement= {(index+1)%3 === 0 ? 'bottomRight' : (index+1)%3%2 === 0 ? 'bottom' : 'bottomLeft'} content={<ProjectDetail detail={item} applyTaskId={applyTaskId} current_user={current_user} showLoginDialog={showLoginDialog} isStudentApplyDate={isStudentApplyDate} studentApplyEnd={studentApplyEnd}/>} trigger='click' overlayClassName='projectItemPopover' autoAdjustOverflow={false}>
|
||||
return <Popover key={index} placement= {(index+1)%3 === 0 ? 'bottomRight' : (index+1)%3%2 === 0 ? 'bottom' : 'bottomLeft'} content={<ProjectDetail detail={item} applyTaskId={applyTaskId} current_user={current_user} showLoginDialog={showLoginDialog} isStudentApplyDate={isStudentApplyDate} studentApplyEnd={studentApplyEnd}/>} trigger='click' overlayClassName='projectItemPopover' autoAdjustOverflow={false}>
|
||||
<div className={`projectItem ${(index+1)%3 === 0 || (index+1)%3%2 === 0 ? '' : 'firstBox'}`}>
|
||||
<div className="border"></div>
|
||||
<div className="projectLogo"><img src={`${main_site_url}/api/attachments/${item.projectLogoId}`} alt=''/></div>
|
||||
<div className="projectLogo"><img src={item.projectLogoId ? `${main_site_url}/api/attachments/${item.projectLogoId}` : logo} alt=''/></div>
|
||||
<div className="title">{item.projectName}</div>
|
||||
<div className="intro">{item.projectIntro}</div>
|
||||
</div>
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
width: 100px;
|
||||
height: 100px;
|
||||
border: 1px solid #fff;
|
||||
background-color: #F5F7FF;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
|
|
|
@ -44,7 +44,7 @@ function TaskDetail(props) {
|
|||
<div className="detailBox">
|
||||
<div className='goBackBox'>
|
||||
<a href='/glcc'>开源夏令营 / </a>
|
||||
<a href='/glcc/student/2'>课题及项目列表 / </a>
|
||||
<a href='/glcc/subjects'>课题及项目列表 / </a>
|
||||
课题详情
|
||||
</div>
|
||||
</div>
|
||||
|
@ -59,10 +59,10 @@ function TaskDetail(props) {
|
|||
<div className="detailCont">
|
||||
<div><span className='smallTil'>所属项目</span>{detail.projectName}</div>
|
||||
<div className='moneyBox'><span className='smallTil'>课题奖金</span><span className='money'>¥{detail.taskReward}</span></div>
|
||||
<div><span className='smallTil'>导师信息</span>{detail.tutorName} | {detail.tutorMail}</div>
|
||||
<div><span className='smallTil'>导师信息</span>{detail.tutorName}{detail.tutorMail &&` | ${detail.tutorMail}`}</div>
|
||||
<div className="bor"></div>
|
||||
<div><span className='smallTil'>课题简介</span></div>
|
||||
<div>{detail.taskDesc}</div>
|
||||
<div className='desc'>{detail.taskDesc}</div>
|
||||
</div>
|
||||
{(isStudentApplyDate || studentApplyEnd) && (applyTaskId && taskId && Object.keys(applyTaskId).includes(taskId.toString()) ? <Button onClick={()=>{window.location.href=`/glcc/student/apply/${taskId}`}} className='lookDetail detailBut'>报名详情</Button> : isStudentApplyDate && <Button type='primary' className='applyBut detailBut' onClick={()=>{applyTask(taskId)}}>申请课题</Button>)}
|
||||
</div>
|
||||
|
|
|
@ -92,6 +92,9 @@
|
|||
div{
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.desc{
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
.link{
|
||||
color:#466aff;
|
||||
|
|
|
@ -58,7 +58,7 @@ function Apply(props) {
|
|||
|
||||
if (new Date().getTime() < new Date('2022-05-26').getTime()) {
|
||||
// 不在开源夏令营报名时间之内
|
||||
window.location.href = "/glcc/student/2";
|
||||
window.location.href = "/glcc/subjects";
|
||||
} else if (current_user && current_user.login) {
|
||||
|
||||
} else {
|
||||
|
@ -193,7 +193,7 @@ function Apply(props) {
|
|||
setStudentInfoReset(Math.random());
|
||||
setReload(Math.random());
|
||||
setLoading(false);
|
||||
history.push(`/glcc/student/2`)
|
||||
history.push(`/glcc/subjects`)
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -203,7 +203,7 @@ function Apply(props) {
|
|||
setStudentInfoReset(Math.random());
|
||||
setReload(Math.random());
|
||||
setLoading(false);
|
||||
history.push(`/glcc/student/2`)
|
||||
history.push(`/glcc/subjects`)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ function Apply(props) {
|
|||
<div className='apply'>
|
||||
<Breadcrumb className='glcc_breadcrumb font-16'>
|
||||
<Breadcrumb.Item><Link to="/glcc">开源夏令营</Link></Breadcrumb.Item>
|
||||
<Breadcrumb.Item><Link to="/glcc/student/2">课题及项目列表</Link></Breadcrumb.Item>
|
||||
<Breadcrumb.Item><Link to="/glcc/subjects">课题及项目列表</Link></Breadcrumb.Item>
|
||||
<Breadcrumb.Item style={{ color: '#202D40' }}>学生报名</Breadcrumb.Item>
|
||||
</Breadcrumb>
|
||||
|
||||
|
|