主办方
diff --git a/src/glcc/home/previousReview/index.jsx b/src/glcc/home/previousReview/index.jsx
new file mode 100644
index 000000000..1573f0de6
--- /dev/null
+++ b/src/glcc/home/previousReview/index.jsx
@@ -0,0 +1,175 @@
+import React, { Fragment } from 'react';
+import Step from '../timerShaft/step';
+import lightspot1 from '../../img/lightspot1.png';
+import lightspot2 from '../../img/lightspot2.png';
+import lightspot3 from '../../img/lightspot3.png';
+import lightspot4 from '../../img/lightspot4.png';
+import '../lightspot/index.scss';
+import '../timerShaft/index.scss';
+
+
+function Lightspot({round}) {
+ const stepArr2022 = [{
+ title: "Step1",
+ date: "4.15",
+ content: "GLCC夏令营活动发布"
+ },
+ {
+ title: "Step2",
+ date: "4.15-5.19",
+ content: "社区项目报名,提交课题"
+ },
+ {
+ title: "Step2",
+ date: "5.20-5.25",
+ content: "公示社区项目名单"
+ },
+ {
+ title: "Step2",
+ date: "5.26-6.24",
+ content: "学生报名,提交Proposal"
+ },
+ {
+ title: "Step2",
+ date: "7.1",
+ content: "公示入选学生名单",
+ noArrow: true,
+ },
+ {
+ title: "Step2",
+ date: "7.1-8.12",
+ content: "项目开发第一阶段",
+ },
+ {
+ title: "Step2",
+ date: "8.12-9.30",
+ content: "项目开发第二阶段",
+ },
+ {
+ title: "Step2",
+ date: "10.1-10.21",
+ content: "结项审核,并公示考核结果",
+ },
+ {
+ title: "Step2",
+ date: "10.21-11.11",
+ content: "评选公布优秀项目和学员",
+ noArrow: true,
+ }
+ ]
+ const stepArr2023 = [{
+ title: "Step1",
+ date: "4.29",
+ content: "GLCC夏令营活动发布"
+ },
+ {
+ title: "Step2",
+ date: "4.29-5.30",
+ content: "社区项目报名,提交课题"
+ },
+ {
+ title: "Step2",
+ date: "5.31-6.3",
+ content: "课题审核及公布"
+ },
+ {
+ title: "Step2",
+ date: "6.4-6.21",
+ content: "学生报名,提交Proposal"
+ },
+ {
+ title: "Step2",
+ date: "7.1",
+ content: "公示入选学生名单",
+ noArrow: true,
+ },
+ {
+ title: "Step2",
+ date: "7.1-8.11",
+ content: "项目开发第一阶段",
+ },
+ {
+ title: "Step2",
+ date: "8.20",
+ content: "中期考核,公示考核结果",
+ },
+ {
+ title: "Step2",
+ date: "8.21-9.28",
+ content: "项目开发第二阶段",
+ },
+ {
+ title: "Step2",
+ date: "10.11",
+ content: "结项考核,公示考核结果",
+ },
+ {
+ title: "Step2",
+ date: "10.22",
+ content: "优秀项目/学生公布及颁奖",
+ noArrow: true,
+ }
+ ]
+ const step = round === 2 ? stepArr2023 : stepArr2022
+ return (
+
+
+
+
活动亮点
+
+
+
+
有兴趣成为GLCC的导师吗?
+
想要扩大项目知名度和影响力,为开源项目吸引新鲜血液,培养长期开发者。通过GitLink平台,与高校建立连接,指导开源新人传授他们的开源文化,享受开源的乐趣
+
项目报名已结束
+
+
+
你是开源新手,有兴趣参加GLCC吗?
+
想要参与一线开源项目开发,熟悉开源社区运作流程,接受资深开源软件专家指导,获得丰厚奖金和实习机会。参加GLCC,开启全新的开源之旅。
+
学生报名已结束
+
+
+
+
+

+
汇聚行业顶尖开源项目
+
平台汇聚腾讯、百度、阿里巴巴、亚马逊云科技、滴滴等行业尖端开源项目,把握开源生态发展脉搏
+
+
+
+

+
覆盖全国千所高校、万名会员
+
活动邀请10+全球顶尖开源基金会,100+顶级开源项目社区,致力营造专业、开放的开源社区
+
+
+
+

+
结识开源伙伴和技术大咖
+
每个项目配备一名导师,参与开源项目开发可接受一线资深开源项目专家专业指导,结识志同道合的开发伙伴
+
+
+
+

+
丰厚奖励&实习绿色通道
+
入选同学可获得丰厚奖金,并有机会进入优秀开源项目企业实习或工作,受邀参与开源大会等机会
+
+
+
+
+
+
+
+
时间规划
+
+ {
+ step.map((item, i) => {
+ return
+ })
+ }
+
+
+
+
+ )
+}
+export default Lightspot;
\ No newline at end of file
diff --git a/src/glcc/home/timerShaft/index.jsx b/src/glcc/home/timerShaft/index.jsx
index cd808db55..37a1bf372 100644
--- a/src/glcc/home/timerShaft/index.jsx
+++ b/src/glcc/home/timerShaft/index.jsx
@@ -1,146 +1,125 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import Step from './step';
import './index.scss';
+import { formatParsedResult } from '../../api';
-const stepArr2022 = [{
- title: "Step1",
- date: "4.15",
- content: "GLCC夏令营活动发布"
-},
-{
- title: "Step2",
- date: "4.15-5.19",
- content: "社区项目报名,提交课题"
-},
-{
- title: "Step2",
- date: "5.20-5.25",
- content: "公示社区项目名单"
-},
-{
- title: "Step2",
- date: "5.26-6.24",
- content: "学生报名,提交Proposal"
-},
-{
- title: "Step2",
- date: "7.1",
- content: "公示入选学生名单",
- noArrow: true,
-},
-{
- title: "Step2",
- date: "7.1-8.12",
- content: "项目开发第一阶段",
-},
-{
- title: "Step2",
- date: "8.12-9.30",
- content: "项目开发第二阶段",
-},
-{
- title: "Step2",
- date: "10.1-10.21",
- content: "结项审核,并公示考核结果",
-},
-{
- title: "Step2",
- date: "10.21-11.11",
- content: "评选公布优秀项目和学员",
- noArrow: true,
-}
-]
-const stepArr = [{
- title: "Step1",
- date: "4.29",
- content: "GLCC夏令营活动发布"
-},
-{
- title: "Step2",
- date: "4.29-5.30",
- content: "社区项目报名,提交课题"
-},
-{
- title: "Step2",
- date: "5.31-6.3",
- content: "课题审核及公布"
-},
-{
- title: "Step2",
- date: "6.4-6.21",
- content: "学生报名,提交Proposal"
-},
-{
- title: "Step2",
- date: "7.1",
- content: "公示入选学生名单",
- noArrow: true,
-},
-{
- title: "Step2",
- date: "7.1-8.11",
- content: "项目开发第一阶段",
-},
-{
- title: "Step2",
- date: "8.20",
- content: "中期考核,公示考核结果",
-},
-{
- title: "Step2",
- date: "8.21-9.28",
- content: "项目开发第二阶段",
-},
-{
- title: "Step2",
- date: "10.11",
- content: "结项考核,公示考核结果",
-},
-{
- title: "Step2",
- date: "10.22",
- content: "优秀项目/学生公布及颁奖",
- noArrow: true,
-}
-]
+function TimerShaft(props) {
+ const {current_user, period, history, showLoginDialog, id, glccSettings} = props;
+ let repoApplyEnd = undefined
+ const step = [{
+ title: "Step1",
+ date: "4.22",
+ content: "GLCC夏令营活动发布"
+ },
+ {
+ title: "Step2",
+ date: "4.22-5.24",
+ content: "社区项目报名,提交课题"
+ },
+ {
+ title: "Step2",
+ date: "5.25-5.30",
+ content: "课题审核及公布"
+ },
+ {
+ title: "Step2",
+ date: "5.31-6.23",
+ content: "学生报名,提交Proposal"
+ },
+ {
+ title: "Step2",
+ date: "6.28",
+ content: "公示入选学生名单",
+ noArrow: true,
+ },
+ {
+ title: "Step2",
+ date: "7.1-8.18",
+ content: "项目开发第一阶段",
+ },
+ {
+ title: "Step2",
+ date: "8.30",
+ content: "中期考核,公示考核结果",
+ },
+ {
+ title: "Step2",
+ date: "8.31-10.20",
+ content: "项目开发第二阶段",
+ },
+ {
+ title: "Step2",
+ date: "10.31",
+ content: "结项考核,公示考核结果",
+ },
+ {
+ title: "Step2",
+ date: "11月",
+ content: "优秀项目/学生公布及颁奖",
+ noArrow: true,
+ }]
-function TimerShaft({round, glccSettings}) {
- // if(glccSettings && glccSettings.length > 12){
- // stepArr[1].date = getRangeTime(glccSettings[0].value);
- // stepArr[2].date = getRangeTime(glccSettings[1].value);
- // stepArr[3].date = getRangeTime(glccSettings[2].value);
- // stepArr[4].date = getTime(glccSettings[3].value);
- // stepArr[5].date = getRangeTime(glccSettings[11].value);
- // stepArr[6].date = getTime(glccSettings[7].value);
- // stepArr[7].date = getRangeTime(glccSettings[12].value);
- // stepArr[8].date = getTime(glccSettings[9].value);
- // stepArr[9].date = getTime(glccSettings[4].value);
- // }
- const step = round === 2 ? stepArr : stepArr2022
-
- // 截取月份/日期
- function getRangeTime(value){
- return value.split(",").map(item=>`${new Date(item).getMonth()+1}.${new Date(item).getDate()}`).join("-");
+ function goToApply(){
+ const url = period === "repoApply" ? `/glcc/apply` : `/glcc/${id}/subjects`;
+ if(current_user && !current_user.login){
+ showLoginDialog(url);
+ return;
+ }
+ history.push(url);
}
-
- function getTime(value){
- const time = new Date(value.split(",")[0]);
- return `${new Date(time).getMonth()+1}.${new Date(time).getDate()}`;
+ if(glccSettings){
+ // 活动发布、项目课题报名
+ const repoApply = glccSettings.filter(item=>item.name === "repoApply");
+ repoApply[0] && (step[0].date = formatParsedResult(repoApply, "startMonthDay"))
+ repoApply[0] && (step[1].date = formatParsedResult(repoApply, "rangeConcatDot"))
+ if(repoApply[0]){
+ repoApplyEnd = new Date(repoApply[0].value.split(",")[1]).getTime()-new Date().getTime() < 0
+ }
+ // 学生报名
+ const stuApply = glccSettings.filter(item=>item.name === "stuApply");
+ stuApply[0] && (step[3].date = formatParsedResult(stuApply, "rangeConcatDot"))
+ // 入选学生名单公示-取配置的截止时间
+ const stuPublic = glccSettings.filter(item=>item.name === "stuPublic");
+ stuPublic[0] && (step[4].date = formatParsedResult(stuPublic, "startMonthDay"))
+ // 中期考核结果公示-取配置的截止时间
+ const mediumExamine = glccSettings.filter(item=>item.name === "mediumExamine3");
+ mediumExamine[0] && (step[6].date = formatParsedResult(mediumExamine, "startMonthDay"))
+ // 结项考核结果公示-取配置的截止时间
+ const finalExamine = glccSettings.filter(item=>item.name === "finalExamine3");
+ finalExamine[0] && (step[8].date = formatParsedResult(finalExamine, "startMonthDay"))
}
return (
-
-
-
时间规划
-
- {
- step.map((item, i) => {
- return
- })
- }
+
+
+
活动报名
+
+
+
有兴趣成为GLCC的导师吗?
+
想要扩大项目知名度和影响力,为开源项目吸引新鲜血液,培养长期开发者。通过GitLink平台,与高校建立连接,指导开源新人传授他们的开源文化,享受开源的乐趣
+ {period === "repoApply" ?
立即报名
:
项目报名{repoApplyEnd ? "已结束" : "敬请期待"}
}
+
+
+
你是开源新手,有兴趣参加GLCC吗?
+
想要参与一线开源项目开发,熟悉开源社区运作流程,接受资深开源软件专家指导,获得丰厚奖金和实习机会。参加GLCC,开启全新的开源之旅。
+ {(period === "stuApply" || period === "stuApply1") ?
学生报名
:
学生报名{(period === "repoApply" || !period) ? "敬请期待" : "已结束"}
}
+
-
+
+
+
+
时间规划
+
+ {
+ step.map((item, i) => {
+ return
+ })
+ }
+
+
+
+
)
}
export default TimerShaft;
\ No newline at end of file
diff --git a/src/glcc/home/timerShaft/index.scss b/src/glcc/home/timerShaft/index.scss
index 631eed939..12843e5ae 100644
--- a/src/glcc/home/timerShaft/index.scss
+++ b/src/glcc/home/timerShaft/index.scss
@@ -1,5 +1,5 @@
.timerShaft {
- background: url("../../img/time-bg.png");
+ background: url("../../img/time-bg1.png");
background-size: 100% 100%;
width: 100%;
height: 32.34375vw;
@@ -58,3 +58,62 @@
}
}
}
+.applyHomeBox{
+ background: url("../../img/time-bg.png");
+ background-size: 100% 100%;
+ width: 100%;
+ min-height: 450px;
+ display: flex;
+ flex-flow: column nowrap;
+ justify-content: center;
+ .info-teacher {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 50px;
+ padding-top: 0px;
+ }
+ .teacher-text {
+ margin-right: 2.84%;
+ .applyBut{
+ width: 120px;
+ height: 36px;
+ background-color: #466aff;
+ border-radius: 2px;
+ color: white;
+ display: block;
+ line-height: 36px;
+ text-align: center;
+ &:hover{
+ opacity: .8;
+ color: white !important;
+ cursor: pointer;
+ .hover-show{
+ display: inline-block;
+ }
+ .hover-none{
+ display: none;
+ }
+ }
+ &:hover.project{
+ background-color:#abafbe;
+ cursor: default;
+ }
+ .hover-show{
+ display: none;
+ }
+ }
+ }
+ .teacher-invite {
+ color: #202d40;
+ font-size: 24px;
+ line-height: 26px;
+ margin: 35px auto 25px !important;
+ }
+
+ .teacher-content {
+ color: #6c7283;
+ font-size: 14px;
+ line-height: 26px;
+ margin-bottom: 30px;
+ }
+}
diff --git a/src/glcc/img/70.png b/src/glcc/img/70.png
new file mode 100644
index 000000000..e69658e3f
Binary files /dev/null and b/src/glcc/img/70.png differ
diff --git a/src/glcc/img/banner2024.jpg b/src/glcc/img/banner2024.jpg
new file mode 100644
index 000000000..003fb0f6e
Binary files /dev/null and b/src/glcc/img/banner2024.jpg differ
diff --git a/src/glcc/img/lightspot-bg.png b/src/glcc/img/lightspot-bg.png
index 8f7d69b34..22d14baa1 100644
Binary files a/src/glcc/img/lightspot-bg.png and b/src/glcc/img/lightspot-bg.png differ
diff --git a/src/glcc/img/newsBg.png b/src/glcc/img/newsBg.png
new file mode 100644
index 000000000..702251f51
Binary files /dev/null and b/src/glcc/img/newsBg.png differ
diff --git a/src/glcc/img/time-bg1.png b/src/glcc/img/time-bg1.png
new file mode 100644
index 000000000..b04f561b0
Binary files /dev/null and b/src/glcc/img/time-bg1.png differ
diff --git a/src/glcc/index.jsx b/src/glcc/index.jsx
index c4e091d3a..0af84917c 100644
--- a/src/glcc/index.jsx
+++ b/src/glcc/index.jsx
@@ -11,7 +11,7 @@ import "./index.scss";
import Loadable from "react-loadable";
import Loading from "../Loading";
import { ImageLayerOfCommentHOC } from "../modules/page/layers/ImageLayerOfCommentHOC";
-import { getGlccSettings, getStudentApplyInfo, hasAuditRole } from "./api";
+import { currentRound, getGlccSettings, getStudentApplyInfo, hasAuditRole } from "./api";
import { message } from "antd";
@@ -30,6 +30,11 @@ const Help = Loadable({
loader: () => import("./help"),
loading: Loading,
});
+// 开源夏令营新闻列表页面
+const News = Loadable({
+ loader: () => import("./news"),
+ loading: Loading,
+});
// 学生报名课题
const Student = Loadable({
loader: () => import("./student"),
@@ -89,10 +94,8 @@ const MiddleResult = Loadable({
});
const Glcc = (propsF) => {
const {current_user, showLoginDialog, match:{params:{id}}} = propsF;
- // 当届
- const currentRound = 2;
- // round:2022届(1) 2023届(2)
- const [round, setRound] = useState(2);
+ // round:2022届(1) 2023届(2) 2024届(3)
+ const [round, setRound] = useState(3);
// glcc 所处阶段 repoApply(项目报名) stuApply(学生报名阶段)
const [period, setPeriod] = useState(undefined);
// glcc后台时间配置
@@ -111,13 +114,13 @@ const Glcc = (propsF) => {
const [isFinalExamineByToTutor, setIsFinalExamineByToTutor] = useState(false);
useEffect(()=>{
- if(id && id === "2022"){
- setRound(1);
+ if(id){
+ setRound(id === "2022" ? 1 : id === "2023" ? 2 : 3);
}
}, [id])
useEffect(()=>{
// 获取当前glcc配置
- getGlccSettings({round: currentRound}).then(res=>{
+ getGlccSettings({round: currentRound, type: "timeSetting"}).then(res=>{
if(res && res.message === "success"){
setGLccSetting(res.data);
const nowTime = new Date().getTime();
@@ -244,14 +247,14 @@ const Glcc = (propsF) => {
{period === "repoApply" &&
(
-
+
)}
>}
{/* 导师报名课题路由通道(补录) */}
{applyRepo &&
(
-
+
)}
>}
{/* 导师-学生配对阶段 */}
@@ -277,25 +280,34 @@ const Glcc = (propsF) => {
)}
>
- {!(round === 2 && !repoPublic) &&
(
+
+ )}
+ >
+
+ {!(round === currentRound && !repoPublic) &&
(
)}
>}
{/* 项目/课题列表 */}
- {!(round === 2 && !repoPublic) &&
(
-
+
)}
>}
{/* 课题列表 */}
- {!(round === 2 && !repoPublic) &&
(
-
+
)}
>}
diff --git a/src/glcc/index.scss b/src/glcc/index.scss
index 69f5be197..f59b0b8b5 100644
--- a/src/glcc/index.scss
+++ b/src/glcc/index.scss
@@ -106,3 +106,38 @@
line-height: 24px;
}
}
+.previousReview{
+ .ant-popover-inner-content{
+ padding: 4px;
+ }
+ .ant-menu-item:hover{
+ background-color: #E6ECFF;
+ }
+}
+// glcc公共样式
+.gobackBox{
+ margin: 0 auto;
+ padding: 25px 0 12px;
+ color: #202d40;
+ font-size: 16px;
+ border-bottom: 1px dashed #bec5d5;
+ a{
+ color:#a4aabb;
+ }
+}
+.glccTable{
+ border: 1px solid white;
+ .ant-table-thead > tr > th{
+ background-color: #DFE8FF;
+ }
+ .ant-table-tbody > tr > td{
+ background-color: #ECF2FF;
+ border-bottom: 1px dashed #bec5d5;
+ font-size: 15px;
+ color: #353f5e;
+ }
+ .ant-table-pagination.ant-pagination{
+ margin: 26px 20px 0 0;
+ padding-bottom: 26px;
+ }
+}
\ No newline at end of file
diff --git a/src/glcc/news/index.jsx b/src/glcc/news/index.jsx
new file mode 100644
index 000000000..8b5bc542a
--- /dev/null
+++ b/src/glcc/news/index.jsx
@@ -0,0 +1,65 @@
+import React, { useEffect, useState } from 'react';
+import { Link } from 'react-router-dom';
+import banner from "../img/newsBg.png";
+import bgPng from "../img/bgPng.png";
+import './index.scss';
+import { Table } from 'antd';
+import axios from 'axios';
+
+function FreeProject(propsF) {
+ const pageSize = 20;
+ const [list, setList] = useState([]);
+ const [current, setCurrent] = useState(1);
+ const [total, setTotal] = useState(0);
+
+ useEffect(()=>{
+ window.scrollTo(0, 0);
+ getNewsList();
+ },[current])
+
+ function getNewsList(){
+ const url = `/topics.json?topic_type=glcc_news`;
+ axios.get(url, {
+ params: {
+ page: current,
+ limit: pageSize
+ }
+ }).then(result => {
+ if (result && result.data) {
+ setList(result.data.topics);
+ setTotal(result.data.total_count);
+ }
+ }).catch(error => { })
+ }
+
+ const columns = [
+ { title: '序号', dataIndex: 'index', align: 'center', className:"taskTableColumns", width: '6%', render: (text, item, index) =>
{(current-1)*pageSize+index + 1} },
+ { title: '标题', dataIndex: 'title', className:"taskTableColumns taskName", width: '28%', ellipsis: true, render: (text, item) =>
{text} },
+ { title: '时间', dataIndex: 'created_time', className:"taskTableColumns", width: '12%', ellipsis: true, render: (text)=>
{text.split(' ')[0]} }
+ ]
+
+ return(
+
+

+
+ 开源夏令营 /
+ 新闻中心
+
+
{setCurrent(page)}
+ }}
+ />
+
+
+
+ )
+}
+export default FreeProject;
\ No newline at end of file
diff --git a/src/glcc/news/index.scss b/src/glcc/news/index.scss
new file mode 100644
index 000000000..198c83a08
--- /dev/null
+++ b/src/glcc/news/index.scss
@@ -0,0 +1,27 @@
+.glcc_news{
+ min-height: 85vh;
+ background: linear-gradient( 180deg, #E9F0FF 0%, #DEE8FF 52%, #F3F4F8 100%);
+ position: relative;
+ z-index: 1;
+ .newsBanner{
+ width: 100%;
+ height: 300px;
+ object-fit: cover;
+ }
+ .news_content_center{
+ width: 1200px;
+ margin: 0 auto;
+ }
+ .bgPng3, .bgPng4{
+ width: 146px;
+ position: absolute;
+ z-index: -1;
+ top: 462px;
+ left: 100px;
+ }
+ .bgPng4{
+ top: 750px;
+ left: auto;
+ right: 310px;
+ }
+}
\ No newline at end of file
diff --git a/src/glcc/openmmlab/projectTab/index.scss b/src/glcc/openmmlab/projectTab/index.scss
index 624d1dab4..fef79f0e0 100644
--- a/src/glcc/openmmlab/projectTab/index.scss
+++ b/src/glcc/openmmlab/projectTab/index.scss
@@ -96,6 +96,7 @@
}
// 项目详情框
.projectDetailBox {
+ word-break: break-all;
&.byTask {
background-image: linear-gradient(180deg, #f1f5ff 0%, #ffffff 100%);
border: 1px solid #ffffff;
diff --git a/src/glcc/project/component/projectDetail.jsx b/src/glcc/project/component/projectDetail.jsx
index fb4bacdba..d61756fd5 100644
--- a/src/glcc/project/component/projectDetail.jsx
+++ b/src/glcc/project/component/projectDetail.jsx
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { Button, message, Tooltip } from 'antd';
import Nodata from '../../../forge/Nodata';
import { useEffect } from 'react';
-import { getProjectById } from '../../api';
+import { getProjectById, rewardMoney, rewardSettingRound } from '../../api';
import './index.scss';
export default ({ detail, projectId, applyTaskId, period, showTask=true, applyTask, id, round, listLen }) => {
@@ -45,6 +45,7 @@ export default ({ detail, projectId, applyTaskId, period, showTask=true, applyTa
{item.taskDesc}
{item.taskUrl &&
}
+ {round >= rewardSettingRound && item.settingRewardValue !== rewardMoney &&
奖励备注: {item.settingRewardRemark}
}
{/* 报名详情按钮 */}
{round === 2 && applyTaskId && Object.keys(applyTaskId).includes(item.id.toString()) && }
@@ -59,7 +60,7 @@ export default ({ detail, projectId, applyTaskId, period, showTask=true, applyTa
- ¥{item.taskReward}
+ {round >= rewardSettingRound ? item.settingRewardValue === rewardMoney ? item.settingRewardRemark ? `¥ ${item.settingRewardRemark}` : "" : item.settingRewardValue : `¥ ${item.taskReward}`}
}) : )}
diff --git a/src/glcc/project/index.jsx b/src/glcc/project/index.jsx
index ecd9399e2..eb1f09e5d 100644
--- a/src/glcc/project/index.jsx
+++ b/src/glcc/project/index.jsx
@@ -7,6 +7,7 @@ import Loadable from "react-loadable";
import Loading from "../../Loading";
import { Link } from 'react-router-dom';
import { useEffect } from 'react';
+import { currentRound, formatParsedResult } from '../api';
// 项目列表页面
const ProjectList = Loadable({
@@ -20,8 +21,11 @@ const TaskList = Loadable({
});
function Project(propsF) {
- const {location, match:{params:{id}}} = propsF;
+ const {location, match:{params:{id}}, glccSettings, round} = propsF;
const {pathname} = location;
+ const studentApplyTime = glccSettings && glccSettings.filter(item=>item.name === "stuApply");
+ const applyTime = studentApplyTime && formatParsedResult(studentApplyTime, "rangeDay")
+
useEffect(()=>{
window.scrollTo(0, 0);
},[])
@@ -30,7 +34,7 @@ function Project(propsF) {

-
学生报名时间: {id === '2022' ? '2022年5月26日-6月24日' : '2023年6月4日-6月21日'}
+ {round === currentRound && applyTime &&
学生报名时间: {applyTime}
}
课题列表
diff --git a/src/glcc/project/index.scss b/src/glcc/project/index.scss
index f7bda699d..7c6f1b600 100644
--- a/src/glcc/project/index.scss
+++ b/src/glcc/project/index.scss
@@ -88,6 +88,7 @@
}
// 项目详情框
.projectDetailBox{
+ word-break: break-all;
&.byTask{
background-image:linear-gradient(180deg,#f1f5ff 0%,#ffffff 100%);
border:1px solid #ffffff;
@@ -177,7 +178,6 @@
color:#465474;
font-size:16px;
line-height: 28px;
- margin-bottom: 5px;
a{color:#466aff;}
}
.applyBut{
diff --git a/src/glcc/project/taskDetail/index.jsx b/src/glcc/project/taskDetail/index.jsx
index ee812529b..0c672cedc 100644
--- a/src/glcc/project/taskDetail/index.jsx
+++ b/src/glcc/project/taskDetail/index.jsx
@@ -1,6 +1,6 @@
import React, {useEffect, useState } from 'react';
import { Button, Spin, Tooltip} from 'antd';
-import { getTaskById } from '../../api';
+import { getTaskById, rewardMoney, rewardSettingRound } from '../../api';
import bgPng from "../../img/bgPng.png";
import '../index.scss';
import './index.scss';
@@ -41,7 +41,10 @@ function TaskDetail(props) {
所属项目{detail.projectName}
-
课题奖金¥{detail.taskReward}
+
课题奖励
+ {round >= rewardSettingRound ? detail.settingRewardValue !== rewardMoney ? detail.settingRewardValue : `¥${detail.settingRewardRemark}` : `¥${detail.taskReward}`}
+
+ {detail.settingRewardValue !== rewardMoney && detail.settingRewardRemark &&
奖励备注{detail.settingRewardRemark}
}
导师信息{detail.tutorName}{detail.tutorMail &&` | ${detail.tutorMail}`}
课题简介
diff --git a/src/glcc/project/taskDetail/index.scss b/src/glcc/project/taskDetail/index.scss
index e71ffac4a..d4c5d996e 100644
--- a/src/glcc/project/taskDetail/index.scss
+++ b/src/glcc/project/taskDetail/index.scss
@@ -71,6 +71,7 @@
color:#465474;
font-size:15px;
margin-top: 20px;
+ word-break: break-all;
.bor{
margin: 0 -15px 20px -15px;
border-bottom: 1px dashed #bec5d5;;
diff --git a/src/glcc/project/taskList/index.jsx b/src/glcc/project/taskList/index.jsx
index a21f4e248..3a3aed04c 100644
--- a/src/glcc/project/taskList/index.jsx
+++ b/src/glcc/project/taskList/index.jsx
@@ -1,7 +1,7 @@
import React, { Fragment, useEffect, useState } from 'react';
import { Checkbox, Input, message, Modal, Table, Tooltip } from 'antd';
import './index.scss';
-import { cancelTaskApply, taskList } from '../../api';
+import { cancelTaskApply, rewardSettingRound, taskList } from '../../api';
import ProjectDetail from '../component/projectDetail';
import bgPng from "../../img/bgPng.png";
const { Search } = Input;
@@ -29,7 +29,7 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial
{ title: '课题名称', dataIndex: 'taskName', className:"taskTableColumns taskName", width: '24%', ellipsis: true, render: (text, item) =>
{window.open(`/glcc/${id}/subjects/detail/${item.id}`)}}>{text} },
{ title: '课题类型', dataIndex: 'projectType', className:"taskTableColumns", width: '12%', ellipsis: true, },
{ title: '项目名称', dataIndex: 'projectName', className:"taskTableColumns", width: '24%', ellipsis: true, render: (text) =>
{text} },
- { title: '课题奖金', dataIndex: 'taskReward', className:"taskTableColumns", ellipsis: true, width: '10%', render: (text) =>
{text} },
+ { title: round >= rewardSettingRound ? '课题奖励' : '课题奖金', dataIndex: round >= rewardSettingRound ? 'settingRewardValue' : 'taskReward', className:"taskTableColumns", ellipsis: true, width: '10%', render: (text) =>
{text} },
{
title: '操作', dataIndex: 'action', align: 'center', className:"actionColumns taskTableColumns", render: ((text, item, index) => {
return (
@@ -129,13 +129,12 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial
setLoading(true);
const params = {
curPage: current,
- keyword,
+ keyword: keyword || "",
pageSize,
userId: apply ? current_user.user_id : '',
round,
locked: isAvailable ? false : undefined
}
- console.log('params', params);
taskList(params).then(response => {
if (response && response.message === "success") {
const data = response.data.rows;
diff --git a/src/glcc/siderBarHelp.js b/src/glcc/siderBarHelp.js
index e7e9c1639..df5535c1c 100644
--- a/src/glcc/siderBarHelp.js
+++ b/src/glcc/siderBarHelp.js
@@ -1,5 +1,5 @@
import React from 'react';
-import { Popover } from 'antd';
+import { Popover, Menu } from 'antd';
import qqChat from "./img/qqChat.png";
import './index.scss';
@@ -12,6 +12,21 @@ function SiderBar() {
)
+ const menu = (
+
+ );
+
return (
// 开源夏令营定制帮助中心调整按钮
@@ -25,10 +40,12 @@ function SiderBar() {
帮助中心
-
window.open("/glcc/2022")}>
-
- 往期回顾
-
+
+
+
+ 往期回顾
+
+
)
}
diff --git a/src/home/TopEdition.jsx b/src/home/TopEdition.jsx
index 37c48efaf..527502295 100644
--- a/src/home/TopEdition.jsx
+++ b/src/home/TopEdition.jsx
@@ -32,7 +32,7 @@ function TopEdition({register,current_user}) {
const url = `/topics.json?topic_type=banner`;
axios.get(url,{
params:{
- limit:5
+ limit:6
}
}).then(result=>{
if(result){
diff --git a/src/modules/tpm/challengesnew/tpm-md-editor.js b/src/modules/tpm/challengesnew/tpm-md-editor.js
index 630f0c276..d96674cda 100644
--- a/src/modules/tpm/challengesnew/tpm-md-editor.js
+++ b/src/modules/tpm/challengesnew/tpm-md-editor.js
@@ -158,7 +158,7 @@ export default ({ mdID, onChange, onCMBeforeChange, onCMBlur, error = false, cla
const ch = cursor.ch;//列
const startIndex = cm.getRange({line,ch:0},{line,ch}).lastIndexOf("#");
//替换内容
- cm.replaceRange(`[#${i.project_issues_index}](/${owner}/${projectsId}/issues/${i.project_issues_index}) `,{line,ch:startIndex},{line,ch});
+ cm.replaceRange(`[#${i.subject}](/${owner}/${projectsId}/issues/${i.project_issues_index}) `,{line,ch:startIndex},{line,ch});
//鼠标聚焦
cm.focus();
// 保存引用的issue