Merge pull request '更新glcc' (#542) from durian/forgeplus-react:gitlink_server into gitlink_server
This commit is contained in:
commit
8923fe0194
|
|
@ -159,7 +159,7 @@ export default (props) => {
|
|||
<div></div>
|
||||
</div>
|
||||
<div className="intro">OpenMMLab是深度学习时代最完整的计算机视觉开源算法体系。自开源以来,累计发布了超过20个算法库,有超过300个算法2300多个预训练模型。所有算法均具备风格统一、模型丰富、质量高、易复现等特点。在社区生态上,OpenMMLab一直秉持开放、认真、持续成长的原则,积极推动社区建设发展</div>
|
||||
<div className="goToButBox"><button className="goToBut" onClick={()=>{window.location.href='/glcc/openmmlab'}}>查看详情</button></div>
|
||||
<div className="goToButBox"><button className="goToBut" onClick={()=>{window.location.href='/glcc/openmmlab/2022'}}>查看详情</button></div>
|
||||
</div>}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -124,7 +124,8 @@ const Glcc = (propsF) => {
|
|||
// 判断是否处于此段时间范围内
|
||||
function judge(nowTime, timeRnge, type){
|
||||
const timeArr = timeRnge.split(",").map(item=>{
|
||||
const data = item && item.replaceAll('-', '/');
|
||||
// replaceAll不兼容低版本浏览器(如搜狗)
|
||||
const data = item && item.replace(/-/g,'/');
|
||||
return new Date(data).getTime()
|
||||
});
|
||||
return type === "range" ? nowTime > timeArr[0] && nowTime < timeArr[1] : nowTime > timeArr[0]
|
||||
|
|
@ -235,14 +236,14 @@ const Glcc = (propsF) => {
|
|||
{!(round === 2 && !repoPublic) && <Route
|
||||
path="/glcc/:id/subjects/detail/:taskId"
|
||||
render={(props) => (
|
||||
<TaskDetail {...propsF} {...props} applyTaskId={applyTaskId} applyTask={applyTask} period={period}/>
|
||||
<TaskDetail {...propsF} {...props} applyTaskId={applyTaskId} applyTask={applyTask} period={period} round={round} currentRound={currentRound}/>
|
||||
)}
|
||||
></Route>}
|
||||
{/* 项目/课题列表 */}
|
||||
{!(round === 2 && !repoPublic) && <Route
|
||||
path="/glcc/:id/projects"
|
||||
render={(props) => (
|
||||
<Project period={period} round={round} {...propsF} {...props} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} applyTask={applyTask}/>
|
||||
<Project period={period} round={round} {...propsF} {...props} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} applyTask={applyTask} currentRound={currentRound}/>
|
||||
)}
|
||||
></Route>}
|
||||
|
||||
|
|
@ -250,7 +251,7 @@ const Glcc = (propsF) => {
|
|||
{!(round === 2 && !repoPublic) && <Route
|
||||
path="/glcc/:id/subjects"
|
||||
render={(props) => (
|
||||
<Project period={period} round={round} {...propsF} {...props} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} cancelCount={cancelCount} applyTask={applyTask}/>
|
||||
<Project period={period} round={round} {...propsF} {...props} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} cancelCount={cancelCount} applyTask={applyTask} currentRound={currentRound}/>
|
||||
)}
|
||||
></Route>}
|
||||
|
||||
|
|
@ -258,7 +259,7 @@ const Glcc = (propsF) => {
|
|||
<Route
|
||||
path="/glcc/openmmlab"
|
||||
render={(props) => (
|
||||
<Openmmlab {...propsF} {...props} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} applyTask={applyTask}/>
|
||||
<Openmmlab period={period} {...propsF} {...props} applyTaskId={applyTaskId} setStudentInfoReset={setStudentInfoReset} applyTask={applyTask}/>
|
||||
)}
|
||||
></Route>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import { projectList } from '../api';
|
|||
import './index.scss';
|
||||
|
||||
function Openmmlab(props) {
|
||||
const {location:{pathname}} = props;
|
||||
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
|
|
@ -19,8 +20,9 @@ function Openmmlab(props) {
|
|||
useEffect(() => {
|
||||
const params = {
|
||||
curPage: 1,
|
||||
keyword: 'openmmlab',
|
||||
pageSize: 10000
|
||||
keyword: 'openmmlab-',
|
||||
pageSize: 10000,
|
||||
round: pathname && pathname.endsWith("/2022") ? 1 : 2
|
||||
}
|
||||
projectList(params).then(response => {
|
||||
if (response && response.message === "success") {
|
||||
|
|
@ -40,23 +42,23 @@ function Openmmlab(props) {
|
|||
|
||||
<div className="openmmlab_slider openmmlab_main">
|
||||
<div className="slider_left">
|
||||
<SliderLeft />
|
||||
<SliderLeft pathname={pathname}/>
|
||||
</div>
|
||||
<div className="slider_right">
|
||||
<SliderRight list={list} {...props}/>
|
||||
<SliderRight list={list} {...props} year={pathname.endsWith("/2022") ? "2022" : "2023"}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="openmmlab_title">项目精选</div>
|
||||
<ProjectTabs {...props} list={list} />
|
||||
<ProjectTabs {...props} list={list} year={pathname.endsWith("/2022") ? "2022" : "2023"}/>
|
||||
|
||||
<div className="teachers">
|
||||
{pathname.endsWith("/2022") && <div className="teachers">
|
||||
<div className="teachers_tit">
|
||||
导师一览
|
||||
</div>
|
||||
<Teachers />
|
||||
</div>
|
||||
</div>}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ const $ = window.$;
|
|||
const { TabPane } = Tabs;
|
||||
|
||||
|
||||
function ProjectTabs({ list, applyTaskId, history, current_user, showLoginDialog, applyTask }) {
|
||||
function ProjectTabs({ list, applyTaskId, history, current_user, showLoginDialog, applyTask, year, period }) {
|
||||
|
||||
useEffect(()=>{
|
||||
setTimeout(()=>{
|
||||
|
|
@ -16,7 +16,6 @@ function ProjectTabs({ list, applyTaskId, history, current_user, showLoginDialog
|
|||
},(e)=>{
|
||||
});
|
||||
},1000)
|
||||
|
||||
},[])
|
||||
|
||||
return (
|
||||
|
|
@ -34,7 +33,7 @@ function ProjectTabs({ list, applyTaskId, history, current_user, showLoginDialog
|
|||
key={i + ''} >
|
||||
<div className="tab_content">
|
||||
<div className="openmmlab_tab_content">
|
||||
<ProjectDetail detail={item} applyTaskId={applyTaskId} current_user={current_user} showLoginDialog={showLoginDialog} applyTask={applyTask}/>
|
||||
<ProjectDetail detail={item} applyTaskId={applyTaskId} current_user={current_user} showLoginDialog={showLoginDialog} applyTask={applyTask} year={year} period={period}/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
.ant-tabs.openmmlab_tab {
|
||||
background-color: #2c374e;
|
||||
color: #fff;
|
||||
.ant-tabs-left-content{
|
||||
border-left: none;
|
||||
}
|
||||
.ant-tabs-bar {
|
||||
width: calc((100vw - 1200px) / 2 + 216px);
|
||||
|
||||
|
|
@ -59,7 +62,7 @@
|
|||
.tab_type {
|
||||
opacity: .8;
|
||||
display: block;
|
||||
width: 72px;
|
||||
width: 105px;
|
||||
height: 30px;
|
||||
border: 1px solid#ffffff;
|
||||
border-radius: 4px;
|
||||
|
|
@ -85,7 +88,7 @@
|
|||
}
|
||||
.openmmlab_tab_content {
|
||||
width:954px;
|
||||
height:813px;
|
||||
// height:813px;
|
||||
padding: 21px 30px 50px;
|
||||
// color: rgba(0,0,0,.65);
|
||||
background-image: url('../../img/openmmlab/tabBackground.png') ;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { Button, message, Tooltip } from 'antd';
|
|||
import Nodata from '../../../forge/Nodata';
|
||||
import { getProjectById } from '../../api';
|
||||
|
||||
export default ({ detail, projectId, applyTaskId, applyTask }) => {
|
||||
export default ({ detail, projectId, applyTaskId, applyTask, year, period }) => {
|
||||
const [info, setInfo] = useState(detail);
|
||||
|
||||
useEffect(()=>{
|
||||
|
|
@ -26,7 +26,7 @@ export default ({ detail, projectId, applyTaskId, applyTask }) => {
|
|||
{info.registrationTaskList && info.registrationTaskList.length > 0 ? info.registrationTaskList.map((item, index)=>{
|
||||
return <div className='taskItem mt15' key={index}>
|
||||
<div className="left">
|
||||
<div className="taskTitle" onClick={()=>{window.location.href=`/glcc/2022/subjects/detail/${item.id}`}}><Tooltip title={item.taskName}>{item.taskName}</Tooltip></div>
|
||||
<div className="taskTitle" onClick={()=>{window.location.href=`/glcc/${year}/subjects/detail/${item.id}`}}><Tooltip title={item.taskName}>{item.taskName}</Tooltip></div>
|
||||
<div className='mt15 oneLine leftWidth'>导师姓名: {item.tutorName}</div>
|
||||
{item.tutorMail && <div className='mb15 email oneLine leftWidth'>邮箱地址: <span><Tooltip title={item.tutorMail}>{item.tutorMail}</Tooltip></span></div>}
|
||||
</div>
|
||||
|
|
@ -35,16 +35,16 @@ export default ({ detail, projectId, applyTaskId, applyTask }) => {
|
|||
{item.taskUrl && <div className="taskUrl oneLine">课题链接: <a href={item.taskUrl} target={"_blank"}>{item.taskUrl}</a></div>}
|
||||
<div>
|
||||
{/* 报名详情按钮 */}
|
||||
{applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <Button onClick={()=>{window.location.href=`/glcc/student/apply/${item.id}`}} className='lookDetail mr10'>报名详情</Button>}
|
||||
{year === "2023" && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <Button onClick={()=>{window.location.href=`/glcc/student/apply/${item.id}`}} className='lookDetail mr10'>报名详情</Button>}
|
||||
|
||||
{/* 课题申请时间范围内: 申请课题 */}
|
||||
{/* 第一次报名 */}
|
||||
{false && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>}
|
||||
{year === "2023" && period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>}
|
||||
{/* 第二次报名 锁定状态 */}
|
||||
{false && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? <Tooltip title={"该课题已有学生入选"}><Button type='primary' className='mr10' disabled>申请课题</Button></Tooltip> : <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>)}
|
||||
{year === "2023" && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? <Tooltip title={"该课题已有学生入选"}><Button type='primary' className='mr10' disabled>申请课题</Button></Tooltip> : <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>)}
|
||||
|
||||
{/* 查看课题详情按钮 */}
|
||||
<Button onClick={()=>{window.open(`/glcc/subjects/detail/${item.id}`)}} className='lookDetail'>课题详情</Button>
|
||||
<Button onClick={()=>{window.open(`/glcc/${year}/subjects/detail/${item.id}`)}} className='lookDetail'>课题详情</Button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="right oneLine taskUrl"><span className='taskReward'>¥{item.taskReward}</span></div>
|
||||
|
|
|
|||
|
|
@ -62,6 +62,59 @@ const arithmeticArr = [
|
|||
},
|
||||
];
|
||||
|
||||
const arithmeticArr2023 = [
|
||||
{
|
||||
name: "MMEngine算法演示",
|
||||
describe: "MMEngine 是一个基于 PyTorch 实现的,用于训练深度学习模型的基础库。它为开发人员提供了坚实的工程基础,以此避免在工作流上编写冗余代码。作为 OpenMMLab 所有代码库的训练引擎,其在不同研究领域支持了上百个算法。此外,MMEngine 也可以用于非 OpenMMLab 项目中。",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/422473',
|
||||
type: 'img',
|
||||
},
|
||||
{
|
||||
name: "MMPreTrain算法演示",
|
||||
describe: "MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络,并支持不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和 MMSelfSup,并开放一系列新功能。 目前,预训练阶段对于视觉识别至关重要,凭借丰富而强大的预训练模型,我们能够改进各种下游视觉任务。",
|
||||
type: 'img',
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/422508'
|
||||
},
|
||||
{
|
||||
name: "MMDetection算法演示",
|
||||
describe: "MMDetection 是 OpenMMLab 中的通用目标检测算法平台,目前已经支持了 70+ 算法和 500+ 个预训练模型,支持目标检测、实例分割和全景分割。是 OpenMMLab 算法库中的MMDetection3D 和 MMRotate 的核心依赖,为 MMOCR、MMPose 和 MMTracking 提供了检测组件",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/388003',
|
||||
type: 'img',
|
||||
},
|
||||
{
|
||||
name: "MMDetection3D算法演示",
|
||||
describe: "MMDetection3D 是 OpenMMLab 中的通用 3D 感知算法平台,目前已经支持了室内外多个主流数据集的单模态/多模态 3D 检测和点云分割算法。同时 MMDetection3D 可以无缝使用 MMDetection 中的所有组件,为多模态感知提供了丰富的基础模块",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/387953',
|
||||
type: 'img',
|
||||
},
|
||||
{
|
||||
name: "MMSegmentation算法演示",
|
||||
describe: "MMSegmentation 是 OpenMMLab 中的语义分割算法工具箱,目前已经支持了 49 个算法,600+ 个预训练模型。为语义分割任务的统一实现和模型评估提供了一个框架,并且高质量实现了常用的语义分割方法和数据集。",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/422474',
|
||||
type: 'img',
|
||||
},
|
||||
{
|
||||
name: "MMAction2算法演示",
|
||||
describe: "MMAction2 是一个基于 PyTorch 的开源工具箱,支持众多视频理解模型,包括动作识别、基于骨架的动作识别、时空动作检测和时间动作定位。 此外,它支持广泛使用的学术数据集,并提供许多有用的工具,帮助用户探索模型和数据集,以及实现高质量的算法。",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/422475',
|
||||
type: 'img',
|
||||
},
|
||||
{
|
||||
name: "MMPose算法演示",
|
||||
describe: "MMPose 是 OpenMMLab 中的姿态估计算法库,目前已经支持了近 30 个算法和 300+ 预训练模型,涵盖了人体、人脸、人手、动物等多类目标的姿态估计。秉承 OpenMMLab 系列的结构化框架设计,MMPose 很适合作为算法复现和创新的平台",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/388257.mp4',
|
||||
type: 'mp4',
|
||||
img: 'https://www.gitlink.org.cn/api/attachments/388256'
|
||||
},
|
||||
{
|
||||
name: "MMagic算法演示",
|
||||
describe: "MMagic 是 OpenMMLab 中的图像&视频生成和编辑的开源算法平台,涵盖 GAN,diffusion model 多种生成模型,支持 Stable Diffusion 的微调和多种 diffusion 应用。同时支持图像修复、图文生成、3D生成、图像修补、抠图、超分辨率和生成等多种任务。利用 MMagic,通过组合不同模块轻松构建自定义的生成模型。",
|
||||
source: 'https://www.gitlink.org.cn/api/attachments/422478.mp4',
|
||||
img: 'https://www.gitlink.org.cn/api/attachments/388256',
|
||||
type: 'mp4',
|
||||
},
|
||||
];
|
||||
|
||||
let setting = {
|
||||
infinite: true,
|
||||
dots: true,
|
||||
|
|
@ -76,11 +129,12 @@ let setting = {
|
|||
autoplay: true,
|
||||
arrows: false,
|
||||
}
|
||||
function SliderLeft() {
|
||||
|
||||
function SliderLeft(props) {
|
||||
const {pathname} = props;
|
||||
const arr = pathname.endsWith("/2022") ? arithmeticArr : arithmeticArr2023
|
||||
return (
|
||||
<Slider {...setting}>
|
||||
{arithmeticArr.map(item => {
|
||||
{arr.map(item => {
|
||||
return <div className="slider_content" key={item.name}>
|
||||
<div className={`slider_img ${item.name.split('算法演示')[0]}`} >
|
||||
{item.type == 'img' && <img src={item.source} />}
|
||||
|
|
@ -97,8 +151,8 @@ function SliderLeft() {
|
|||
{
|
||||
item.name === 'MMDetection3D算法演示' && <div className="point">
|
||||
<div className="point_item">7 个数据集</div>
|
||||
<div className="point_item">17 种不同算法</div>
|
||||
<div className="point_item">80+ 个预训练模型</div>
|
||||
<div className="point_item">{pathname.endsWith("/2022") ? "17" : "30+"} 种不同算法</div>
|
||||
<div className="point_item">{pathname.endsWith("/2022") ? "80" : "90"}+ 个预训练模型</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -90,6 +90,9 @@
|
|||
// max-height: 100%;
|
||||
}
|
||||
}
|
||||
.MMagic .introduce-video{
|
||||
max-height: 112%;
|
||||
}
|
||||
|
||||
.MMDetection3D,.MMClassification {
|
||||
padding:30px 0;
|
||||
|
|
|
|||
|
|
@ -17,15 +17,11 @@ let setting = {
|
|||
vertical: true,
|
||||
}
|
||||
|
||||
function SliderLeft({list,history}) {
|
||||
function SliderLeft({list,year}) {
|
||||
|
||||
|
||||
function goDetail(projectName){
|
||||
// history.push({
|
||||
// pathname:'/glcc/projects',
|
||||
// state:{projectName:projectName.replace(/ /g,'-')}
|
||||
// })
|
||||
window.open(`/glcc/2022/projects?projectName=${projectName.replace(/ /g,'')}`);
|
||||
window.open(`/glcc/${year}/projects?projectName=${projectName.replace(/ /g,'')}`);
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ export default ({ detail, projectId, applyTaskId, period, showTask=true, applyTa
|
|||
{item.taskUrl && <div className="taskUrl oneLine">课题链接: <a href={item.taskUrl} target={"_blank"}>{item.taskUrl}</a></div>}
|
||||
<div>
|
||||
{/* 报名详情按钮 */}
|
||||
{applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <Button onClick={()=>{window.location.href=`/glcc/student/apply/${item.id}`}} className='lookDetail mr10'>报名详情</Button>}
|
||||
{round === 2 && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <Button onClick={()=>{window.location.href=`/glcc/student/apply/${item.id}`}} className='lookDetail mr10'>报名详情</Button>}
|
||||
|
||||
{/* 课题申请时间范围内: 申请课题 */}
|
||||
{/* 第一次报名 */}
|
||||
{period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>}
|
||||
{round === 2 && period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>}
|
||||
{/* 第二次报名 锁定状态 */}
|
||||
{period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? <Tooltip title={"该课题已有学生入选"}><Button type='primary' className='mr10' disabled>申请课题</Button></Tooltip> : <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>)}
|
||||
{round === 2 && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? <Tooltip title={"该课题已有学生入选"}><Button type='primary' className='mr10' disabled>申请课题</Button></Tooltip> : <Button type='primary' className='applyBut mr10' onClick={()=>{applyTask(item.id)}}>申请课题</Button>)}
|
||||
|
||||
{/* 查看课题详情按钮 */}
|
||||
<Button onClick={()=>{window.open(`/glcc/${id}/subjects/detail/${item.id}`)}} className='lookDetail'>课题详情</Button>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import './index.scss';
|
|||
|
||||
// 课题列表
|
||||
function TaskDetail(props) {
|
||||
const {match, location, period, applyTaskId, applyTask, match:{params:{id}}} = props
|
||||
const {match, location, period, applyTaskId, applyTask, match:{params:{id}}, currentRound, round} = props
|
||||
const taskId = Number(match.params.taskId);
|
||||
const [detail, setDetail] = useState(undefined);
|
||||
|
||||
|
|
@ -48,13 +48,13 @@ function TaskDetail(props) {
|
|||
<div className='desc'>{detail.taskDesc}</div>
|
||||
</div>
|
||||
{/* 报名详情按钮 */}
|
||||
{applyTaskId && Object.keys(applyTaskId).includes(taskId.toString()) && <Button onClick={()=>{window.location.href=`/glcc/student/apply/${taskId}`}} className='lookDetail detailBut'>报名详情</Button>}
|
||||
{round === currentRound && applyTaskId && Object.keys(applyTaskId).includes(taskId.toString()) && <Button onClick={()=>{window.location.href=`/glcc/student/apply/${taskId}`}} className='lookDetail detailBut'>报名详情</Button>}
|
||||
|
||||
{/* 课题申请时间范围内: 申请课题 */}
|
||||
{/* 第一次报名 */}
|
||||
{period==="stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && <Button type='primary' className='applyBut detailBut' onClick={()=>{applyTask(taskId)}}>申请课题</Button>}
|
||||
{round === currentRound && period==="stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && <Button type='primary' className='applyBut detailBut' onClick={()=>{applyTask(taskId)}}>申请课题</Button>}
|
||||
{/* 第二次报名 锁定状态 */}
|
||||
{period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && (detail.locked ? <Tooltip title={"该课题已有学生入选"}><Button type='primary' className='mr10 detailBut' disabled>申请课题</Button></Tooltip> : <Button type='primary' className='applyBut mr10 detailBut' onClick={()=>{applyTask(taskId)}}>申请课题</Button>)}
|
||||
{round === currentRound && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && (detail.locked ? <Tooltip title={"该课题已有学生入选"}><Button type='primary' className='mr10 detailBut' disabled>申请课题</Button></Tooltip> : <Button type='primary' className='applyBut mr10 detailBut' onClick={()=>{applyTask(taskId)}}>申请课题</Button>)}
|
||||
</div>
|
||||
<img src={bgPng} alt='' className='bgPng1'/>
|
||||
<img src={bgPng} alt='' className='bgPng2'/>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import bgPng from "../../img/bgPng.png";
|
|||
const { Search } = Input;
|
||||
|
||||
// 课题列表
|
||||
function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDialog,cancelCount,showNotification, applyTask, round, match:{params:{id}}, period }) {
|
||||
function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDialog,cancelCount,showNotification, applyTask, round, match:{params:{id}}, period, currentRound }) {
|
||||
const [visible, setVisible] = useState(false);
|
||||
const [deleteTaskId, setDeleteTaskId] = useState(undefined);
|
||||
// 输入搜索框
|
||||
|
|
@ -33,16 +33,16 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial
|
|||
return (
|
||||
<div className='actionBox'>
|
||||
{/* 报名详情按钮 */}
|
||||
{applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <span onClick={()=>{window.location.href=`/glcc/student/apply/${item.id}`}}><i className='iconfont icon-baomingxiangqingicon mr5'></i>报名详情</span>}
|
||||
{round === currentRound && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <span onClick={()=>{window.location.href=`/glcc/student/apply/${item.id}`}}><i className='iconfont icon-baomingxiangqingicon mr5'></i>报名详情</span>}
|
||||
|
||||
{/* 取消按钮5.26-6.25 */}
|
||||
{(period === "stuApply" || period === "stuApply1") && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <Tooltip title={"取消申请"}><i className='iconfont icon-shanchuicon3 ml20 cancelApply' onClick={()=>{deleteItem(item.id)}}></i></Tooltip>}
|
||||
{round === currentRound && (period === "stuApply" || period === "stuApply1") && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && <Tooltip title={"取消申请"}><i className='iconfont icon-shanchuicon3 ml20 cancelApply' onClick={()=>{deleteItem(item.id)}}></i></Tooltip>}
|
||||
|
||||
{/* 课题申请时间范围内: 申请课题 */}
|
||||
{/* 第一次报名 */}
|
||||
{period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && <span onClick={()=>{applyTask(item.id)}}><i className='iconfont icon-shenqingketiicon applyTask mr5'></i><span className='applyTask'>申请课题</span></span>}
|
||||
{round === currentRound && period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && <span onClick={()=>{applyTask(item.id)}}><i className='iconfont icon-shenqingketiicon applyTask mr5'></i><span className='applyTask'>申请课题</span></span>}
|
||||
{/* 第二次报名 锁定状态 */}
|
||||
{period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? <Tooltip title={"该课题已有学生入选"}><span className='disabled'><i className='iconfont icon-shenqingketiicon mr5 disabled'></i><span className='disabled'>申请课题</span></span></Tooltip> : <span onClick={()=>{applyTask(item.id, item.locked)}}><i className='iconfont icon-shenqingketiicon applyTask mr5'></i><span className='applyTask'>申请课题</span></span>)}
|
||||
{round === currentRound && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? <Tooltip title={"该课题已有学生入选"}><span className='disabled'><i className='iconfont icon-shenqingketiicon mr5 disabled'></i><span className='disabled'>申请课题</span></span></Tooltip> : <span onClick={()=>{applyTask(item.id, item.locked)}}><i className='iconfont icon-shenqingketiicon applyTask mr5'></i><span className='applyTask'>申请课题</span></span>)}
|
||||
</div>
|
||||
)
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue