diff --git a/src/glcc/home/index.jsx b/src/glcc/home/index.jsx index 22720eb2f..1e212ea75 100644 --- a/src/glcc/home/index.jsx +++ b/src/glcc/home/index.jsx @@ -159,7 +159,7 @@ export default (props) => {
OpenMMLab是深度学习时代最完整的计算机视觉开源算法体系。自开源以来,累计发布了超过20个算法库,有超过300个算法2300多个预训练模型。所有算法均具备风格统一、模型丰富、质量高、易复现等特点。在社区生态上,OpenMMLab一直秉持开放、认真、持续成长的原则,积极推动社区建设发展
-
+
} diff --git a/src/glcc/index.jsx b/src/glcc/index.jsx index 701c1021b..eabbd26b5 100644 --- a/src/glcc/index.jsx +++ b/src/glcc/index.jsx @@ -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) && ( - + )} >} {/* 项目/课题列表 */} {!(round === 2 && !repoPublic) && ( - + )} >} @@ -250,7 +251,7 @@ const Glcc = (propsF) => { {!(round === 2 && !repoPublic) && ( - + )} >} @@ -258,7 +259,7 @@ const Glcc = (propsF) => { ( - + )} > diff --git a/src/glcc/openmmlab/index.jsx b/src/glcc/openmmlab/index.jsx index 4945c030a..eba15b8a3 100644 --- a/src/glcc/openmmlab/index.jsx +++ b/src/glcc/openmmlab/index.jsx @@ -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) {
- +
- +
项目精选
- + -
+ {pathname.endsWith("/2022") &&
导师一览
-
+
} ) } diff --git a/src/glcc/openmmlab/projectTab/index.jsx b/src/glcc/openmmlab/projectTab/index.jsx index 9dfc1e1ef..dab774525 100644 --- a/src/glcc/openmmlab/projectTab/index.jsx +++ b/src/glcc/openmmlab/projectTab/index.jsx @@ -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 + ''} >
- +
diff --git a/src/glcc/openmmlab/projectTab/index.scss b/src/glcc/openmmlab/projectTab/index.scss index 0b8b64e10..624d1dab4 100644 --- a/src/glcc/openmmlab/projectTab/index.scss +++ b/src/glcc/openmmlab/projectTab/index.scss @@ -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') ; diff --git a/src/glcc/openmmlab/projectTab/projectDetail.jsx b/src/glcc/openmmlab/projectTab/projectDetail.jsx index fd7c0b1dc..48f8b65da 100644 --- a/src/glcc/openmmlab/projectTab/projectDetail.jsx +++ b/src/glcc/openmmlab/projectTab/projectDetail.jsx @@ -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
-
{window.location.href=`/glcc/2022/subjects/detail/${item.id}`}}>{item.taskName}
+
{window.location.href=`/glcc/${year}/subjects/detail/${item.id}`}}>{item.taskName}
导师姓名:   {item.tutorName}
{item.tutorMail &&
邮箱地址:   {item.tutorMail}
}
@@ -35,16 +35,16 @@ export default ({ detail, projectId, applyTaskId, applyTask }) => { {item.taskUrl &&
课题链接:   {item.taskUrl}
}
{/* 报名详情按钮 */} - {applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && } + {year === "2023" && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && } {/* 课题申请时间范围内: 申请课题 */} {/* 第一次报名 */} - {false && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && } + {year === "2023" && period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && } {/* 第二次报名 锁定状态 */} - {false && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? : )} + {year === "2023" && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? : )} {/* 查看课题详情按钮 */} - +
¥{item.taskReward}
diff --git a/src/glcc/openmmlab/sliderLeft/index.jsx b/src/glcc/openmmlab/sliderLeft/index.jsx index b3d13bf47..9fc64fa05 100644 --- a/src/glcc/openmmlab/sliderLeft/index.jsx +++ b/src/glcc/openmmlab/sliderLeft/index.jsx @@ -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 ( - {arithmeticArr.map(item => { + {arr.map(item => { return
{item.type == 'img' && } @@ -97,8 +151,8 @@ function SliderLeft() { { item.name === 'MMDetection3D算法演示' &&
7 个数据集
-
17 种不同算法
-
80+ 个预训练模型
+
{pathname.endsWith("/2022") ? "17" : "30+"} 种不同算法
+
{pathname.endsWith("/2022") ? "80" : "90"}+ 个预训练模型
}
diff --git a/src/glcc/openmmlab/sliderLeft/index.scss b/src/glcc/openmmlab/sliderLeft/index.scss index 61d1ca106..828579a1e 100644 --- a/src/glcc/openmmlab/sliderLeft/index.scss +++ b/src/glcc/openmmlab/sliderLeft/index.scss @@ -90,6 +90,9 @@ // max-height: 100%; } } + .MMagic .introduce-video{ + max-height: 112%; + } .MMDetection3D,.MMClassification { padding:30px 0; diff --git a/src/glcc/openmmlab/sliderRight/index.jsx b/src/glcc/openmmlab/sliderRight/index.jsx index 7dd8eb961..876bd6dfb 100644 --- a/src/glcc/openmmlab/sliderRight/index.jsx +++ b/src/glcc/openmmlab/sliderRight/index.jsx @@ -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 ( diff --git a/src/glcc/project/component/projectDetail.jsx b/src/glcc/project/component/projectDetail.jsx index a76eee080..8a882b184 100644 --- a/src/glcc/project/component/projectDetail.jsx +++ b/src/glcc/project/component/projectDetail.jsx @@ -39,13 +39,13 @@ export default ({ detail, projectId, applyTaskId, period, showTask=true, applyTa {item.taskUrl &&
课题链接:   {item.taskUrl}
}
{/* 报名详情按钮 */} - {applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && } + {round === 2 && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && } {/* 课题申请时间范围内: 申请课题 */} {/* 第一次报名 */} - {period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && } + {round === 2 && period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && } {/* 第二次报名 锁定状态 */} - {period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? : )} + {round === 2 && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? : )} {/* 查看课题详情按钮 */} diff --git a/src/glcc/project/taskDetail/index.jsx b/src/glcc/project/taskDetail/index.jsx index bd678b75a..f551a5d0a 100644 --- a/src/glcc/project/taskDetail/index.jsx +++ b/src/glcc/project/taskDetail/index.jsx @@ -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) {
{detail.taskDesc}
{/* 报名详情按钮 */} - {applyTaskId && Object.keys(applyTaskId).includes(taskId.toString()) && } + {round === currentRound && applyTaskId && Object.keys(applyTaskId).includes(taskId.toString()) && } {/* 课题申请时间范围内: 申请课题 */} {/* 第一次报名 */} - {period==="stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && } + {round === currentRound && period==="stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && } {/* 第二次报名 锁定状态 */} - {period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && (detail.locked ? : )} + {round === currentRound && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(taskId.toString())) && (detail.locked ? : )}
diff --git a/src/glcc/project/taskList/index.jsx b/src/glcc/project/taskList/index.jsx index 26f36eb09..11cec9f9d 100644 --- a/src/glcc/project/taskList/index.jsx +++ b/src/glcc/project/taskList/index.jsx @@ -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 (
{/* 报名详情按钮 */} - {applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && {window.location.href=`/glcc/student/apply/${item.id}`}}>报名详情} + {round === currentRound && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && {window.location.href=`/glcc/student/apply/${item.id}`}}>报名详情} {/* 取消按钮5.26-6.25 */} - {(period === "stuApply" || period === "stuApply1") && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && {deleteItem(item.id)}}>} + {round === currentRound && (period === "stuApply" || period === "stuApply1") && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && {deleteItem(item.id)}}>} {/* 课题申请时间范围内: 申请课题 */} {/* 第一次报名 */} - {period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && {applyTask(item.id)}}>申请课题} + {round === currentRound && period === "stuApply" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && {applyTask(item.id)}}>申请课题} {/* 第二次报名 锁定状态 */} - {period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? 申请课题 : {applyTask(item.id, item.locked)}}>申请课题)} + {round === currentRound && period === "stuApply1" && !(applyTaskId && Object.keys(applyTaskId).includes(item.id.toString())) && (item.locked ? 申请课题 : {applyTask(item.id, item.locked)}}>申请课题)}
) })