350 lines
11 KiB
JavaScript
350 lines
11 KiB
JavaScript
import React ,{ useEffect , useState } from "react";
|
||
|
||
import { Route, Switch } from "react-router-dom";
|
||
import { withRouter } from "react-router";
|
||
|
||
import { SnackbarHOC } from "educoder";
|
||
import { CNotificationHOC } from "../../modules/courses/common/CNotificationHOC";
|
||
import { TPMIndexHOC } from "../../modules/tpm/TPMIndexHOC";
|
||
import Loadable from "react-loadable";
|
||
import Loading from "../../Loading";
|
||
import { getMainInfos , getCheckZoneRole, getCurrentRole } from './api';
|
||
import PublicBanner from "./Component/publicBanner";
|
||
import './index.scss';
|
||
import { isPhone } from 'educoder';
|
||
import "slick-carousel/slick/slick.css";
|
||
import "slick-carousel/slick/slick-theme.css";
|
||
import { tempEnum } from "./tempInfo";
|
||
import { ImageLayerOfCommentHOC } from "../../modules/page/layers/ImageLayerOfCommentHOC";
|
||
import { setSeoMeta } from 'educoder';
|
||
import { configShareForCustom } from 'educoder';
|
||
|
||
|
||
const SourceDetail = Loadable({
|
||
loader: () => import("./Pages/sourceDetail"),
|
||
loading: Loading,
|
||
});
|
||
const SourceCreate = Loadable({
|
||
loader: () => import("./Pages/sourceCreate"),
|
||
loading: Loading,
|
||
});
|
||
const VIP = Loadable({
|
||
loader: () => import("./Pages/zoneVIP"),
|
||
loading: Loading,
|
||
});
|
||
const Apply = Loadable({
|
||
loader: () => import("./Pages/apply"),
|
||
loading: Loading,
|
||
});
|
||
const Lessons = Loadable({
|
||
loader: () => import("./Pages/lessons"),
|
||
loading: Loading,
|
||
});
|
||
const Source = Loadable({
|
||
loader: () => import("./Pages/source"),
|
||
loading: Loading,
|
||
});
|
||
const SourceSelfList = Loadable({
|
||
loader: () => import("./Pages/selfList"),
|
||
loading: Loading,
|
||
});
|
||
const HeaderPage = Loadable({
|
||
loader: () => import("./Pages/headerPage"),
|
||
loading: Loading,
|
||
});
|
||
|
||
const HeaderPageZone1 = Loadable({
|
||
loader: () => import("./Pages/headerPageZone1"),
|
||
loading: Loading,
|
||
});
|
||
|
||
const HeaderPageCCF = Loadable({
|
||
loader : () => import("./Pages/headerPagebyCCF"),
|
||
loading : Loading,
|
||
});
|
||
|
||
const HeaderPageKyzx = Loadable({
|
||
loader : () => import("./Pages/headerPagebyKyzx"),
|
||
loading : Loading,
|
||
});
|
||
|
||
const ProjectSource = Loadable({
|
||
loader: () => import("./Pages/projectSource"),
|
||
loading: Loading,
|
||
});
|
||
const ProjectCateDetail = Loadable({
|
||
loader: () => import("./Pages/project/cateDetail"),
|
||
loading: Loading,
|
||
});
|
||
const ProjectCateList = Loadable({
|
||
loader: () => import("./Pages/project/cateList"),
|
||
loading: Loading,
|
||
});
|
||
const NewsDetail = Loadable({
|
||
loader: () => import("./Pages/newsDetail"),
|
||
loading: Loading,
|
||
});
|
||
const NewsList = Loadable({
|
||
loader: () => import("./Pages/newsList"),
|
||
loading: Loading,
|
||
});
|
||
const NewsCreate = Loadable({
|
||
loader: () => import("./Pages/newsCreate"),
|
||
loading: Loading,
|
||
});
|
||
|
||
const Main = Loadable({
|
||
loader: () => import("./Pages/main"),
|
||
loading: Loading,
|
||
});
|
||
|
||
const Help = Loadable({
|
||
loader: () => import("./Pages/help"),
|
||
loading: Loading,
|
||
});
|
||
|
||
const HomePageByJCC = Loadable({
|
||
loader : () => import("./Pages/JCC/homePage"),
|
||
loading : Loading,
|
||
});
|
||
|
||
const HomePageByUos = Loadable({
|
||
loader : () => import("./Pages/homepage/uos"),
|
||
loading : Loading,
|
||
});
|
||
|
||
const HomePageByNSCC = Loadable({
|
||
loader : () => import("./Pages/homepage/nscc"),
|
||
loading : Loading,
|
||
});
|
||
const DatasetFileList = Loadable({
|
||
loader : () => import("./Pages/dataset/fileList"),
|
||
loading : Loading,
|
||
});
|
||
const DataSetList = Loadable({
|
||
loader : () => import("./Pages/dataset/index"),
|
||
loading : Loading,
|
||
});
|
||
|
||
function Index(props){
|
||
const [ data , setData ] = useState(undefined);
|
||
const [ adminUrl , setAdminUrl ] = useState(undefined);
|
||
const { deptId } = props.match.params;
|
||
const [ id , setId ] = useState(undefined);
|
||
const [ temp , setTemp ] = useState(tempEnum.zone);
|
||
const [ role , setRole ] = useState(undefined);
|
||
const { pathname } = props.history.location;
|
||
const sourcedetail = pathname.indexOf(`/zone/${deptId}/newdetail/`)>-1 && isPhone();
|
||
const projectCateDetail = pathname.indexOf(`/zone/${deptId}/projects/`)>-1;
|
||
const {current_user} = props;
|
||
|
||
|
||
|
||
useEffect(()=>{
|
||
if(deptId && deptId === "KYDS7th"){
|
||
window.location.href = 'https://gitlink.org.cn/competitions/2024';
|
||
}
|
||
if(deptId && deptId!=="apply"){
|
||
getDetail();
|
||
}
|
||
},[deptId])
|
||
|
||
useEffect(() => {
|
||
setTheme()
|
||
}, [temp])
|
||
|
||
function setTheme() {
|
||
document.getElementsByTagName("html")[0].dataset.theme = temp;
|
||
}
|
||
setTheme()
|
||
|
||
function getDetail(){
|
||
getMainInfos(deptId).then(result=>{
|
||
if(result){
|
||
if (result.data.code === 404) {
|
||
props.history.push('/nopage');
|
||
return
|
||
}
|
||
let data = result.data.data || {};
|
||
if (data && data.template) {
|
||
setTemp( data.template )
|
||
}
|
||
setData(data);
|
||
document.title= data && data.mainTitle;
|
||
|
||
if(data && data.id){
|
||
setId(data.id);
|
||
getAdminUrl(data.id);
|
||
getRole(data.id)
|
||
}
|
||
configShareForCustom(data.mainTitle, data.subTitle, data.introductionImage)
|
||
// 存储deptId,所有专区接口header带上
|
||
sessionStorage.setItem('deptId', data.deptId)
|
||
setSeoMeta(`${data.name},`, data.name, data.subTitle, `/zone/${deptId}`)
|
||
}
|
||
}).catch(console.error())
|
||
}
|
||
|
||
function getAdminUrl(id){
|
||
getCheckZoneRole(id).then(response=>{
|
||
if(response && response.data.data){
|
||
setAdminUrl(response.data.data);
|
||
}else{
|
||
setAdminUrl(undefined);
|
||
}
|
||
}).catch(error=>{})
|
||
}
|
||
|
||
function getRole(id){
|
||
if(current_user && current_user.login){
|
||
getCurrentRole(id).then(res=>{
|
||
setRole(res.data.data);
|
||
}).catch(error=>{})
|
||
}
|
||
}
|
||
|
||
return(
|
||
<div className="information_main">
|
||
{ (!projectCateDetail && !sourcedetail && deptId!=="apply") && (id ? <PublicBanner {...props} data={data} temp={ temp } adminUrl={adminUrl} id={id}/> : <div style={{ width: '100%', height: '450px' }}></div>)}
|
||
<Switch>
|
||
<Route
|
||
path="/zone/:deptId/news/self"
|
||
render={(p) => (
|
||
<SourceSelfList {...props} {...p} id={id} temp={ temp } data={data}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/news/add"
|
||
render={(p) => (
|
||
<NewsCreate {...props} {...p} id={id} temp={ temp } data={data} role={role}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/news/:id/edit"
|
||
render={(p) => (
|
||
<NewsCreate {...props} {...p} id={id} temp={ temp } data={data} role={role}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/news/:cateId"
|
||
render={(p) => (
|
||
<Main {...props} {...p} id={id} temp={ temp } role={role} sectionCmsTitle={data && data.sectionCmsTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/newdetail/:id"
|
||
render={(p) => (
|
||
<NewsDetail {...props} {...p} id={id} temp={ temp } data={data}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/source/self"
|
||
render={(p) => (
|
||
<SourceSelfList {...props} {...p} id={id} temp={ temp } data={data}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/source/add"
|
||
render={(p) => (
|
||
<SourceCreate {...props} {...p} id={id} temp={ temp } data={data} role={role}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/source/:sourceid/edit"
|
||
render={(p) => (
|
||
<SourceCreate {...props} {...p} id={id} temp={ temp } role={role}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/source/:sourceid"
|
||
render={(p) => (
|
||
<SourceDetail {...props} {...p} id={id} temp={ temp } data={data}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/dataset/:datasetId"
|
||
render={(p) => (
|
||
<DatasetFileList {...props} {...p} id={id} temp={ temp } role={role} sectionResourceTitle={data && data.sectionResourceTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/lessons"
|
||
render={(p) => (
|
||
<Lessons {...props} {...p} id={id} temp={ temp } data={data}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/dataset"
|
||
render={(p) => (
|
||
<DataSetList {...props} {...p} id={id} temp={ temp } role={role} sectionResourceTitle={data && data.sectionResourceTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/source"
|
||
render={(p) => (
|
||
<Source {...props} {...p} id={id} temp={ temp } role={role} sectionResourceTitle={data && data.sectionResourceTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/VIP"
|
||
render={(p) => (
|
||
<VIP {...props} {...p} id={id} temp={ temp } sectionMemberTitle={data && data.sectionMemberTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/projects/:cateId"
|
||
render={(p) => (
|
||
<ProjectCateDetail {...props} {...p} id={id} temp={ temp } sectionProjectTitle={data && data.sectionProjectTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/NSCC/projects"
|
||
render={(p) => (
|
||
<ProjectCateList {...props} {...p} id={id} temp={ temp } data={data}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/projects"
|
||
render={(p) => (
|
||
<ProjectSource {...props} {...p} id={id} temp={ temp } sectionProjectTitle={data && data.sectionProjectTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/news"
|
||
render={(p) => (
|
||
<Main {...props} {...p} id={id} temp={ temp } role={role} sectionCmsTitle={data && data.sectionCmsTitle}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId/help"
|
||
render={(p) => (
|
||
<Help {...props} {...p} id={id} temp={ temp } data={data} adminUrl={adminUrl}/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/apply"
|
||
render={(p) => (
|
||
<Apply {...props} {...p} id={id} temp={ temp }/>
|
||
)}
|
||
></Route>
|
||
<Route
|
||
path="/zone/:deptId"
|
||
render={(p) => (
|
||
deptId==="CCF-ODC" ? <HeaderPageCCF {...props} {...p} data={data} id={id} temp={ temp } />:
|
||
deptId === "JCC" ? <HomePageByJCC {...props} {...p} data={data} id={id}/>:
|
||
deptId === "uos" ? <HomePageByUos {...props} {...p} data={data} id={id}/>:
|
||
deptId==="xjykyzx" ? <HeaderPageKyzx {...props} {...p} data={data} id={id} temp={ temp } />:
|
||
deptId.toLocaleUpperCase()==="NSCC" ? <HomePageByNSCC {...props} {...p} data={data} id={id} temp={ temp } />:
|
||
temp === tempEnum.zone ? <HeaderPage {...props} {...p} data={data} id={id} temp={ temp }/>:
|
||
<HeaderPageZone1 {...props} {...p} data={data} id={id} temp={ temp }/>
|
||
)}
|
||
></Route>
|
||
</Switch>
|
||
</div>
|
||
)
|
||
}
|
||
export default withRouter((CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(ImageLayerOfCommentHOC({
|
||
imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget",
|
||
parentSelector: ".newContainer",
|
||
})(Index)))))
|
||
); |