From 2676d6f54e711bfc6eea88ae722cd06ccc366af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= Date: Sat, 28 May 2022 14:17:34 +0800 Subject: [PATCH] =?UTF-8?q?glcc=E4=BA=8C=E6=9C=9F=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AF=BE=E9=A2=98=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/glcc/api.js | 8 ++ src/glcc/home/index.jsx | 9 +- src/glcc/home/lightspot/index.jsx | 7 +- src/glcc/img/bgPng.png | Bin 0 -> 23171 bytes src/glcc/index.jsx | 44 ++++++- src/glcc/project/component/projectDetail.jsx | 13 ++- src/glcc/project/index.jsx | 29 +---- src/glcc/project/index.scss | 49 +++++--- src/glcc/project/projectList/index.jsx | 5 +- src/glcc/project/taskDetail/index.jsx | 76 ++++++++++++ src/glcc/project/taskDetail/index.scss | 116 +++++++++++++++++++ src/glcc/project/taskList/index.jsx | 16 ++- src/glcc/student/index.jsx | 4 +- 13 files changed, 313 insertions(+), 63 deletions(-) create mode 100644 src/glcc/img/bgPng.png create mode 100644 src/glcc/project/taskDetail/index.jsx create mode 100644 src/glcc/project/taskDetail/index.scss diff --git a/src/glcc/api.js b/src/glcc/api.js index 217d7870d..89e8e5694 100644 --- a/src/glcc/api.js +++ b/src/glcc/api.js @@ -88,4 +88,12 @@ export function studentApplyList(params) { method: 'get', params }); +} + +// 课题详情 +export function getTaskById(id) { + return fetch({ + url: `/api/applyInformation/task/${id}`, + method: 'get' + }); } \ No newline at end of file diff --git a/src/glcc/home/index.jsx b/src/glcc/home/index.jsx index c3085b392..04bc9a8ca 100644 --- a/src/glcc/home/index.jsx +++ b/src/glcc/home/index.jsx @@ -14,7 +14,7 @@ import apply2 from "../img/apply2.png"; import './index.scss'; export default (props) => { - const { current_user, isGlccApplyDate, showNotification } = props; + const { current_user, isGlccApplyDate, showNotification, studentApplyStart } = props; function goToApply() { if (isGlccApplyDate) { if (current_user && current_user.login) { @@ -30,9 +30,10 @@ export default (props) => { function goToStudent(){ // 学生报名时间 - const studentApply = Date.parse(new Date()) > 1653494400000; - if(!studentApply){ + if(!studentApplyStart){ showNotification("不在报名时间,报名开始时间为5月26日"); + }else{ + window.location.href="/glcc/student/2"; } } @@ -76,7 +77,7 @@ export default (props) => { - + diff --git a/src/glcc/home/lightspot/index.jsx b/src/glcc/home/lightspot/index.jsx index b8ba6af0f..2b26427ff 100644 --- a/src/glcc/home/lightspot/index.jsx +++ b/src/glcc/home/lightspot/index.jsx @@ -12,7 +12,7 @@ import { Link } from 'react-router-dom'; function Lightspot(props) { - const {current_user, isGlccApplyDate, showNotification} = props; + const {current_user, isGlccApplyDate, showNotification, studentApplyStart} = props; function goToApply(){ if(isGlccApplyDate){ @@ -29,9 +29,10 @@ function Lightspot(props) { function goToStudent(){ // 学生报名时间 - const studentApply = Date.parse(new Date()) > 1653494400000; - if(!studentApply){ + if(!studentApplyStart){ showNotification("不在报名时间,报名开始时间为5月26日"); + }else{ + window.location.href="/glcc/student/2"; } } diff --git a/src/glcc/img/bgPng.png b/src/glcc/img/bgPng.png new file mode 100644 index 0000000000000000000000000000000000000000..abfa4a502a03c144fd8fbdc8d252651b20f5a054 GIT binary patch literal 23171 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 literal 0 HcmV?d00001 diff --git a/src/glcc/index.jsx b/src/glcc/index.jsx index 1778b66d9..0654858ee 100644 --- a/src/glcc/index.jsx +++ b/src/glcc/index.jsx @@ -12,6 +12,8 @@ import Loadable from "react-loadable"; import Loading from "../Loading"; import { ImageLayerOfCommentHOC } from "../modules/page/layers/ImageLayerOfCommentHOC"; import { useState } from "react"; +import { useEffect } from "react"; +import { getStudentApplyInfo } from "./api"; // 任务管理审核 @@ -40,11 +42,41 @@ const Project = Loadable({ loader: () => import("./project"), loading: Loading, }); +// 课题详情页面 +const TaskDetail = Loadable({ + loader: () => import("./project/taskDetail"), + loading: Loading, +}); const Glcc = (propsF) => { + const {current_user} = propsF; // 判断时间是否在开源夏令营报名时间内(4月15日~5月20日) const isGlccApplyDate = Date.parse(new Date()) < 1653062400000; + // 学生报名时间new Date().getTime() > new Date('2022-05-26').getTime() + const studentApplyStart = new Date().getTime() > new Date('2022-05-26').getTime(); + const isStudentApplyDate = new Date().getTime() > new Date('2022-05-26').getTime() && new Date().getTime() < new Date('2022-06-25').getTime(); + const studentApplyEnd = new Date().getTime() > new Date('2022-06-25').getTime(); + + // 用户已报名课题id数组 + const [applyTaskId, setApplyTaskId] = useState({}); + // 刷新用户课题报名信息 + const [studentInfoReset, setStudentInfoReset] = useState(undefined); + + useEffect(()=>{ + // 获取用户课题报名信息current_user user_id + current_user && current_user.login && getStudentApplyInfo({userId: current_user.user_id}).then(response=>{ + if(response && response.message === "success"){ + // setData(response.data.rows); + const data = {}; + response.data && response.data.registrationStudentTaskList.map(item=>{ + data[item.taskId] = item.id; + }) + setApplyTaskId(data); + } + }) + },[studentInfoReset, current_user]) + return (
@@ -52,7 +84,7 @@ const Glcc = (propsF) => { ( - + )} > {/* 开源夏令营报名页面 */} @@ -69,18 +101,24 @@ const Glcc = (propsF) => { )} > + ( + + )} + > {/* 项目/课题列表 */} ( - + )} > {/* 首页 */} ( - + )} > diff --git a/src/glcc/project/component/projectDetail.jsx b/src/glcc/project/component/projectDetail.jsx index e8575d900..43ee10346 100644 --- a/src/glcc/project/component/projectDetail.jsx +++ b/src/glcc/project/component/projectDetail.jsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { Button, message } from 'antd'; +import { Button, message, Tooltip } from 'antd'; import Nodata from '../../../forge/Nodata'; import { useEffect } from 'react'; import { getProjectById } from '../../api'; @@ -45,16 +45,19 @@ export default ({ detail, projectId, applyTaskId, current_user, showLoginDialog, {info.registrationTaskList && info.registrationTaskList.length > 0 ? info.registrationTaskList.map(item=>{ return
-
{item.taskName}
+
{window.location.href=`/glcc/student/detail/${item.id}`}}>{item.taskName}
导师姓名:   {item.tutorName}
邮箱地址:   {item.tutorMail}
      {item.taskDesc}
-
奖金:   {item.taskReward}
- {item.taskUrl &&
课题链接:   {item.taskUrl}
} -
{(isStudentApplyDate || studentApplyEnd) && (applyTaskId && item.id && Object.keys(applyTaskId).includes(item.id.toString()) ? : isStudentApplyDate && )}
+ {item.taskUrl &&
课题链接:   {item.taskUrl}
} +
+ {(isStudentApplyDate || studentApplyEnd) && (applyTaskId && item.id && Object.keys(applyTaskId).includes(item.id.toString()) ? : isStudentApplyDate && )} + +
+
¥{item.taskReward}
}) : }
:
diff --git a/src/glcc/project/index.jsx b/src/glcc/project/index.jsx index 652de14c0..cf78af126 100644 --- a/src/glcc/project/index.jsx +++ b/src/glcc/project/index.jsx @@ -1,4 +1,4 @@ -import React , { useEffect , useState } from 'react'; +import React from 'react'; import { Spin } from 'antd'; import { Route, Switch } from "react-router-dom"; import banner from "../img/studentProject.png"; @@ -6,7 +6,6 @@ import './index.scss'; import Loadable from "react-loadable"; import Loading from "../../Loading"; import { Link } from 'react-router-dom'; -import { getStudentApplyInfo } from '../api'; // 项目列表页面 const ProjectList = Loadable({ @@ -20,31 +19,9 @@ const TaskList = Loadable({ }); function Project(propsF) { - const {location, current_user, showLoginDialog} = propsF; + const {location, current_user, showLoginDialog, isStudentApplyDate, studentApplyEnd, applyTaskId, setStudentInfoReset} = propsF; const {pathname} = location; - const isStudentApplyDate = Date.parse(new Date()) > 1653494400000 && Date.parse(new Date()) < 1656086400000; - const studentApplyEnd = Date.parse(new Date()) > 1656086400000; - // const studentApplyEnd = false; - // const isStudentApplyDate = true; - // 用户已报名课题id数组 - const [applyTaskId, setApplyTaskId] = useState({}); - // 刷新用户课题报名信息 - const [studentInfoReset, setStudentInfoReset] = useState(undefined); - - useEffect(()=>{ - // 获取用户课题报名信息current_user user_id - current_user && current_user.login && getStudentApplyInfo({userId: current_user.user_id}).then(response=>{ - if(response && response.message === "success"){ - // setData(response.data.rows); - const data = {}; - response.data && response.data.registrationStudentTaskList.map(item=>{ - data[item.taskId] = item.id; - }) - setApplyTaskId(data); - } - }) - },[studentInfoReset, current_user]) return(
@@ -67,7 +44,7 @@ function Project(propsF) { ( - + )} >
+ + ) } diff --git a/src/glcc/project/taskDetail/index.jsx b/src/glcc/project/taskDetail/index.jsx new file mode 100644 index 000000000..25cf6911f --- /dev/null +++ b/src/glcc/project/taskDetail/index.jsx @@ -0,0 +1,76 @@ +import React, {useEffect, useState } from 'react'; +import { Button, message, Spin} from 'antd'; +import '../index.scss'; +import './index.scss'; +import { getTaskById } from '../../api'; +import banner from "../../img/studentProject.png"; +import bgPng from "../../img/bgPng.png"; + +// 课题列表 +function TaskDetail(props) { + const {match, current_user, showLoginDialog, isStudentApplyDate, studentApplyEnd, applyTaskId} = props + const taskId = Number(match.params.taskId); + const [detail, setDetail] = useState(undefined); + + useEffect(()=>{ + getTaskById(taskId).then(res=>{ + if(res && res.message === "success"){ + setDetail(res.data); + } + }) + },[]) + + // 申请课题按钮点击函数 + function applyTask(id){ + // 判断用户是否已经登录 + if(current_user && current_user.login){ + // 判断用户是否已经报名两个课题 + if(applyTaskId && Object.keys(applyTaskId).length >= 2){ + message.error('最多只能同时报名两个课题'); + }else{ + // 跳转到学生报名页 + window.location.href=`/glcc/student/apply/${id}`; + } + }else{ + showLoginDialog(); + } + } + + return ( +
+ + + {detail &&
+ +
+
+
{detail.taskName}
+
+ {detail.projectType && {detail.projectType}} + {detail.taskUrl && 课题链接: {detail.taskUrl}} +
+
+
+
所属项目{detail.projectName}
+
课题奖金¥{detail.taskReward}
+
导师信息{detail.tutorName} | {detail.tutorMail}
+
+
课题简介
+
{detail.taskDesc}
+
+ {(isStudentApplyDate || studentApplyEnd) && (applyTaskId && taskId && Object.keys(applyTaskId).includes(taskId.toString()) ? : isStudentApplyDate && )} +
+ + +
} +
+
+ ) +} +export default TaskDetail; \ No newline at end of file diff --git a/src/glcc/project/taskDetail/index.scss b/src/glcc/project/taskDetail/index.scss new file mode 100644 index 000000000..ac8837a6a --- /dev/null +++ b/src/glcc/project/taskDetail/index.scss @@ -0,0 +1,116 @@ +.taskDetailBgBox{ + text-align: center; + .glcc-banner { + width: 100%; + } + .goBackBox{ + width: 1200px; + margin: 0 auto; + padding: 25px 0 12px; + color: #202d40; + font-size: 16px; + border-bottom: 1px dashed #bec5d5; + a{ + color:#a4aabb; + } + } + .bgBox{ + text-align: left; + background-image:linear-gradient(180deg,#ebf2ff 0%,#ebf2ff 43.09%,#f3f4f8 100%); + padding-bottom: 100px; + position: relative; + .bgPng1{ + width: 146px; + position: absolute; + top: 230px; + left: 110px; + z-index: 0; + } + .bgPng2{ + width: 186px; + position: absolute; + top: 520px; + right: 310px; + z-index: 0; + } + } + .detailContent{ + position: relative; + z-index: 1; + width: 1200px; + margin: 25px auto 0; + background-image:linear-gradient(180deg,#f1f5ff 0%,#f3f8ff 100%); + border:1px solid #ffffff; + border-radius:4px; + padding: 40px 30px 30px; + .detailHead{ + border-bottom: 1px dashed #bec5d5; + .title{ + font-weight:700; + color:#3753c5; + font-size:20px; + } + .box{ + color:#465474; + font-size:15px; + margin: 15px 0; + .classify{ + padding: 0px 8px; + display: inline-block; + border:1px solid #6680bb; + border-radius: 4px; + margin-right: 25px; + } + } + .link{margin-left: 6px;} + } + } + .detailCont{ + background-color:#e9efff; + padding: 20px 15px; + color:#465474; + font-size:15px; + margin-top: 20px; + .bor{ + margin: 0 -15px 20px -15px; + border-bottom: 1px dashed #bec5d5;; + } + .smallTil{ + font-weight:500; + color:#000000; + margin-right: 15px; + } + .moneyBox{ + display: flex; + align-items: center; + } + .money{ + font-weight:700; + color:#ff8800; + font-size:20px; + } + div{ + margin-bottom: 15px; + } + } + .link{ + color:#466aff; + &:hover{ + color: #5d7cff !important; + } + &:active{ + color: #1140ff !important; + } + } + .applyBut{ + background-color:#466aff; + border-color: #466aff; + &:hover{background-color:#5d7cff;} + &:focus{background-color:#1140ff;} + } + .detailBut{ + height: 36px; + line-height: 36px; + margin-top: 25px; + } +} diff --git a/src/glcc/project/taskList/index.jsx b/src/glcc/project/taskList/index.jsx index f6d580828..fef20a795 100644 --- a/src/glcc/project/taskList/index.jsx +++ b/src/glcc/project/taskList/index.jsx @@ -1,12 +1,13 @@ import React, { Fragment, useEffect, useState } from 'react'; import { Checkbox, Input, message, Modal, Table, Tooltip } from 'antd'; import './index.scss'; -import { cancelTaskApply, taskList, studentApplyList } from '../../api'; +import { cancelTaskApply, taskList } from '../../api'; import ProjectDetail from '../component/projectDetail'; +import bgPng from "../../img/bgPng.png"; const { Search } = Input; // 课题列表 -function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDialog, isStudentApplyDate, studentApplyEnd, studentInfoReset}) { +function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDialog, isStudentApplyDate, studentApplyEnd}) { const [visible, setVisible] = useState(false); const [deleteTaskId, setDeleteTaskId] = useState(undefined); // 输入搜索框 @@ -23,7 +24,7 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial const columns = [ { title: '序号', dataIndex: 'index', align: 'center', className:"taskTableColumns", width: '6%', render: (text, item, index) => {(current-1)*pageSize+index + 1} }, - { title: '课题名称', dataIndex: 'taskName', className:"taskTableColumns taskName", width: '28%', ellipsis: true, render: (text, item) => {window.location.href=item.taskUrl}}>{text} }, + { title: '课题名称', dataIndex: 'taskName', className:"taskTableColumns taskName", width: '28%', ellipsis: true, render: (text, item) => {window.location.href=`/glcc/student/detail/${item.id}`}}>{text} }, { title: '项目名称', dataIndex: 'projectName', className:"taskTableColumns", width: '28%', ellipsis: true, render: (text) => {text} }, { title: '课题奖金', dataIndex: 'taskReward', className:"taskTableColumns", ellipsis: true, width: `${isStudentApplyDate || studentApplyEnd ? '15%' : ''}`, render: (text) => {text} }, { @@ -124,7 +125,8 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial const params = { curPage: current, keyword, - pageSize + pageSize, + userId: apply ? current_user.user_id : '' } taskList(params).then(response => { if (response && response.message === "success") { @@ -139,7 +141,7 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial } setLoading(false); }) - }, [keyword, current, pageSize, applyTaskId]) + }, [keyword, current, pageSize, applyTaskId, apply]) useEffect(()=>{ // if(apply){ @@ -160,7 +162,7 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial
- {setApply(e.target.checked)}}>已报名 + {setCurrent(1);setApply(e.target.checked)}}>已报名 { setCurrent(1); setKeyword(value) }} />
@@ -178,6 +180,8 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial pagination={{current: current, pageSize: pageSize, total: total, showSizeChanger: true, onShowSizeChange:onShowSizeChange, showQuickJumper: true, onChange: changePage}} />
+ + { if (response && response.message === "success") { showNotification("修改信息成功"); - // setStudentInfoReset(Math.random()); + setStudentInfoReset(Math.random()); setReload(Math.random()); setLoading(false); } @@ -199,7 +199,7 @@ function Apply(props) { studentApply(params).then(response => { if (response && response.message === "success") { showNotification("报名成功"); - // setStudentInfoReset(Math.random()); + setStudentInfoReset(Math.random()); setReload(Math.random()); setLoading(false); }