forgeplus-react/src/forge/Information/index.jsx

114 lines
3.0 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 PublicBanner from "./Component/publicBanner";
import { getMainInfos , getCheckZoneRole } from './api';
import './index.scss';
const VIP = Loadable({
loader: () => import("./Pages/zoneVIP"),
loading: Loading,
});
const HeaderPage = Loadable({
loader: () => import("./Pages/headerPage"),
loading: Loading,
});
const ProjectSource = Loadable({
loader: () => import("./Pages/projectSource"),
loading: Loading,
});
const NewsDetail = Loadable({
loader: () => import("./Pages/newsDetail"),
loading: Loading,
});
const Main = Loadable({
loader: () => import("./Pages/main"),
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);
useEffect(()=>{
if(deptId){
getDetail();
}
},[deptId])
function getDetail(){
getMainInfos({deptId}).then(result=>{
if(result){
let data = result.data.data;
setData(data);
document.title= data&& data.name;
setId(data.id);
if(data.id){
getAdminUrl(data.id);
}
}
}).catch(console.error())
}
function getAdminUrl(id){
getCheckZoneRole({id}).then(response=>{
if(response && response.data.code === 200){
setAdminUrl(response.data.data);
}else{
setAdminUrl(undefined);
}
}).catch(error=>{})
}
return(
<div className="information_main">
<PublicBanner {...props} data={data} adminUrl={adminUrl}/>
<Switch>
<Route
path="/zone/:deptId/news/:cateId"
render={(p) => (
<Main {...props} {...p} id={id}/>
)}
></Route>
<Route
path="/zone/:deptId/newdetail/:id"
render={(p) => (
<NewsDetail {...props} {...p} id={id}/>
)}
></Route>
<Route
path="/zone/:deptId/VIP"
render={(p) => (
<VIP {...props} {...p} id={id}/>
)}
></Route>
<Route
path="/zone/:deptId/projects"
render={(p) => (
<ProjectSource {...props} {...p} id={id}/>
)}
></Route>
<Route
path="/zone/:deptId/news"
render={(p) => (
<Main {...props} {...p} id={id}/>
)}
></Route>
<Route
path="/zone/:deptId"
render={(p) => (
<HeaderPage {...props} {...p} data={data} id={id}/>
)}
></Route>
</Switch>
</div>
)
}
export default withRouter((CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Index))))
);