diff --git a/.umirc.ts b/.umirc.ts index 614e17d41..6bf58f8bc 100755 --- a/.umirc.ts +++ b/.umirc.ts @@ -54,7 +54,7 @@ export default defineConfig({ }, ignoreMomentLocale: true, hash: true, - title: "forge", + title: "GitLink", routes, locale: { default: "zh-CN", diff --git a/src/pages/Competitions/Detail/components/SubCompetition/Index.less b/src/pages/Competitions/Detail/components/SubCompetition/Index.less new file mode 100644 index 000000000..03284d0e5 --- /dev/null +++ b/src/pages/Competitions/Detail/components/SubCompetition/Index.less @@ -0,0 +1,17 @@ +.lists { + padding: 0px 15px; + li { + display: flex; + align-items: center; + height: 70px; + justify-content: space-between; + border-bottom: 1px solid #eee; + &:last-child { + border-bottom: none; + } + a:first-child { + flex: 1; + margin-right: 15px; + } + } +} diff --git a/src/pages/Competitions/Detail/components/SubCompetition/Index.tsx b/src/pages/Competitions/Detail/components/SubCompetition/Index.tsx new file mode 100644 index 000000000..692d06cf4 --- /dev/null +++ b/src/pages/Competitions/Detail/components/SubCompetition/Index.tsx @@ -0,0 +1,76 @@ +import React, { FC , useEffect , useState } from 'react'; +import { + GlobalSettingModelState, + ConnectProps, + Loading, + connect, + Dispatch, +} from 'umi'; +import { Modal, Button } from 'antd'; +import styles from './Index.less'; +import { openNewWindow } from '@/utils/util'; + + +interface PageProps extends Partial { + filterlist: any; + loading: { [key: string]: boolean; }; + dispatch: Dispatch; + visible:boolean, + onClose: () => void; +} +const SubCompetition:FC=({ + filterlist, + visible, + onClose = () => { }, +})=>{ + const [ list , setList ] = useState([]); + + useEffect(()=>{ + if(filterlist && filterlist.list && filterlist.list.length > 0 ){ + setList(filterlist.list); + console.log(filterlist.list); + } + },[filterlist]) + return( + + { + list && list.length>0 && +
    + { + list.map(function(i:any,k:number){ + return( +
  • + {i.name} + +
  • + ) + }) + } + +
+ } +
+ ) +} +export default connect( + ({ + loading, + globalSetting, + }: { + loading: Loading; + globalSetting: GlobalSettingModelState; + }) => ({ + globalSetting, + loading: loading.effects, + }), +)(SubCompetition); diff --git a/src/pages/Competitions/Detail/index.tsx b/src/pages/Competitions/Detail/index.tsx index b97148740..1a4968ce7 100644 --- a/src/pages/Competitions/Detail/index.tsx +++ b/src/pages/Competitions/Detail/index.tsx @@ -25,7 +25,8 @@ import ENV from '@/utils/env'; import { getCookie, openNewWindow,setCookie,setDocumentTitle } from '@/utils/util'; import { handleVerifyLogin, handleVerify , handleProfleCompletedModal } from '@/utils/verifyLogin'; import { isSuperAdmin } from '@/utils/authority'; -import SubmitResult from './SubmitResult' +import SubmitResult from './SubmitResult'; +import SubCompetition from './components/SubCompetition'; import QR from './mCode.png'; interface PageProps extends ConnectProps { @@ -72,6 +73,9 @@ const competitionDetails: FC = ({ const [TabResults, setTabResults] = useState([]); //弹窗 const [isshowType, setisshowType] = useState(); + + const [ subComShow , setSubComShow ] = useState(false); + const [ subComList , setSubComList] = useState([]); const loction = useLocation(); const see = useRef(null) useEffect(() => { @@ -163,6 +167,18 @@ const competitionDetails: FC = ({ if(!handleProfleCompletedModal()){ return; } + if(globalSetting?.setting?.sub_competitions){ + let subArr = globalSetting?.setting?.sub_competitions; + if(subArr.length>0){ + let filterArr = subArr.filter((i:any)=>i.identifier === item.identifier); + console.log(filterArr); + if(filterArr && filterArr.length >0 ){ + setSubComShow(true); + setSubComList(filterArr[0]); + return; + } + } + } if (HeaderDetail?.is_authentication && !user?.userInfo?.authentication) { dispatch({ @@ -173,11 +189,11 @@ const competitionDetails: FC = ({ }) return } - if(item.identifier === "gcc-courses-2022" || item.identifier === "gcc_2022_projects_type2" || item.identifier === "gcc_2022_projects_type1"){ - let arr = HeaderDetail.competition_modules?.filter((item:any)=>item.name === "赛事发布"); - arr && arr.length > 0 && getrightdatas(arr[0]); - return; - } + // if(item.identifier === "gcc_2022_projects_type2" || item.identifier === "gcc_2022_projects_type1"){ + // let arr = HeaderDetail.competition_modules?.filter((item:any)=>item.name === "赛事发布"); + // arr && arr.length > 0 && getrightdatas(arr[0]); + // return; + // } if (url === "ismodel") { if (item.member_of_course === true) { openNewWindow(`/classrooms/${item.course_id}`) @@ -293,6 +309,7 @@ const competitionDetails: FC = ({ return (
+ setSubComShow(false)} filterlist={subComList}/> 在线竞赛 {HeaderDetail.name}{HeaderDetail.sub_title ? '-' + HeaderDetail.sub_title : null} @@ -336,6 +353,7 @@ const competitionDetails: FC = ({ HeaderDetail.competition_status !== 'nearly_published' && HeaderDetail.enroll_end && HeaderDetail.competition_status !== 'ended' ? : null } + {/* */} {HeaderDetail.competition_status === 'progressing' && HeaderDetail.enroll_end != true ? : null} + }>{StaffDetail.enrolled ? HeaderDetail.need_attachment ? '上传作品' : '已报名' : '立即报名'} : null} {user.userInfo.real_name != "游客" && gotocourse(e, HeaderDetail, `/competitions/index/${HeaderDetail.identifier}/enroll`)} className={styles.myteam}>{isSuperAdmin() ? '参赛战队>>' : '我的战队>>'}}
diff --git a/src/pages/Competitions/Index/index.tsx b/src/pages/Competitions/Index/index.tsx index e776a5b7e..ff4f57e2e 100755 --- a/src/pages/Competitions/Index/index.tsx +++ b/src/pages/Competitions/Index/index.tsx @@ -122,10 +122,7 @@ const competitionsPage: FC = ({ }) return } - if(item.identifier === "gcc-courses-2022" || item.identifier === "gcc_2022_projects_type2" || item.identifier === "gcc_2022_projects_type1"){ - openNewWindow(`/competitions/index/${item.identifier}`); - return; - } + if (url === "ismodel") { if (item.member_of_course === true) { openNewWindow(`/classrooms/${item.course_id}`) @@ -276,7 +273,7 @@ const competitionsPage: FC = ({ {item && item.competition_status === 'nearly_published' ? noclick(e)}>未发布 : null} {item && item.competition_status !== 'nearly_published' && item.enroll_end && item.competition_status !== 'ended' ? noclick(e)}>报名截止 : null} {item && item.competition_status === 'progressing' && item.enroll_end != true ? : null} diff --git a/src/pages/document.ejs b/src/pages/document.ejs index ace1bcb59..5411f6937 100755 --- a/src/pages/document.ejs +++ b/src/pages/document.ejs @@ -12,7 +12,7 @@ - forge + GitLink diff --git a/src/utils/env.ts b/src/utils/env.ts index f17a913bc..5da3a8ac7 100755 --- a/src/utils/env.ts +++ b/src/utils/env.ts @@ -22,7 +22,7 @@ export interface ConfigProps { export const GlobalConfig: ConfigProps = { local: { - API_SERVER: 'http://localhost:3000', + API_SERVER: 'https://pre-data.educoder.net', IMG_SERVER: 'https://testforgeplus.trustie.net/', REPORT_SERVER: "http://192.168.1.57:3001", FORGE: "https://test-oldweb.educoder.net/", diff --git a/src/utils/env/dev.ts b/src/utils/env/dev.ts index 1d97a859d..cecbc0986 100644 --- a/src/utils/env/dev.ts +++ b/src/utils/env/dev.ts @@ -1,12 +1,12 @@ export const DEV = { PROXY_SERVER: "https://kepukehuan-data.educoder.net", - API_SERVER: "http://localhost:8000", + API_SERVER: "https://pre-data.educoder.net", REPORT_SERVER: "http://192.168.1.57:3001", IMG_SERVER: 'https://new-testali-cdn.educoder.net', FORGE: "https://code.educoder.net/", SSH_SERVER:"wss://webssh.educoder.net", QQLoginCB: encodeURIComponent("https://test-newweb.educoder.net"), - FORGE_SERVER:"https://testforgeplus.trustie.net" + FORGE_SERVER:"https://pre.gitlink.org.cn" } export default DEV \ No newline at end of file