forked from jasder/forgeplus
529 lines
14 KiB
Plaintext
529 lines
14 KiB
Plaintext
import React, {Component} from 'react';
|
||
import logo from './logo.svg';
|
||
import './App.css';
|
||
import {LocaleProvider} from 'antd'
|
||
import zhCN from 'antd/lib/locale-provider/zh_CN';
|
||
import {
|
||
BrowserRouter as Router,
|
||
Route,
|
||
Switch
|
||
} from 'react-router-dom';
|
||
import axios from 'axios';
|
||
import '@icedesign/base/dist/ICEDesignBase.css';
|
||
|
||
import '@icedesign/base/index.scss';
|
||
|
||
import LoginDialog from './modules/login/LoginDialog';
|
||
import Notcompletedysl from './modules/user/Notcompletedysl';
|
||
import Trialapplicationysl from './modules/login/Trialapplicationysl';
|
||
import Trialapplicationreview from './modules/user/Trialapplicationreview';
|
||
import Addcourses from "./modules/courses/coursesPublic/Addcourses";
|
||
import AccountProfile from"./modules/user/AccountProfile";
|
||
|
||
|
||
import Trialapplication from './modules/login/Trialapplication'
|
||
|
||
import NotFoundPage from './NotFoundPage'
|
||
|
||
import Loading from './Loading'
|
||
|
||
import Loadable from 'react-loadable';
|
||
|
||
|
||
import moment from 'moment'
|
||
|
||
import {MuiThemeProvider, createMuiTheme} from 'material-ui/styles';
|
||
|
||
// import './AppConfig'
|
||
|
||
import history from './history';
|
||
|
||
import {SnackbarHOC} from 'educoder'
|
||
import {initAxiosInterceptors} from './AppConfig'
|
||
|
||
|
||
// !!!tpi需要这个来加载css
|
||
import {TPMIndexHOC} from './modules/tpm/TPMIndexHOC';
|
||
|
||
|
||
const theme = createMuiTheme({
|
||
palette: {
|
||
primary: {
|
||
main: '#4CACFF',
|
||
contrastText: 'rgba(255, 255, 255, 0.87)'
|
||
},
|
||
secondary: {main: '#4CACFF'}, // #11cb5f This is just green.A700 as hex.
|
||
},
|
||
});
|
||
//
|
||
// const Trialapplication= Loadable({
|
||
// loader: () =>import('./modules/login/Trialapplication'),
|
||
// loading:Loading,
|
||
// })
|
||
//登入
|
||
const EducoderLogin = Loadable({
|
||
loader: () => import('./modules/login/EducoderLogin'),
|
||
loading: Loading,
|
||
})
|
||
const TestIndex = Loadable({
|
||
loader: () => import('./modules/test'),
|
||
loading: Loading,
|
||
})
|
||
|
||
const IndexWrapperComponent = Loadable({
|
||
loader: () => import('./modules/page/IndexWrapper'),
|
||
loading: Loading,
|
||
})
|
||
|
||
const CommentComponent = Loadable({
|
||
loader: () => import('./modules/comment/CommentContainer'),
|
||
loading: Loading,
|
||
})
|
||
|
||
const TestMaterialDesignComponent = Loadable({
|
||
loader: () => import('./modules/test/md/TestMaterialDesign'),
|
||
loading: Loading,
|
||
})
|
||
const TestCodeMirrorComponent = Loadable({
|
||
loader: () => import('./modules/test/codemirror/TestCodeMirror'),
|
||
loading: Loading,
|
||
})
|
||
|
||
const TestComponent = Loadable({
|
||
loader: () => import('./modules/test/TestRC'),
|
||
loading: Loading,
|
||
})
|
||
const TestUrlQueryComponent = Loadable({
|
||
loader: () => import('./modules/test/urlquery/TestUrlQuery'),
|
||
loading: Loading,
|
||
})
|
||
|
||
const TPMIndexComponent = Loadable({
|
||
loader: () => import('./modules/tpm/TPMIndex'),
|
||
loading: Loading,
|
||
})
|
||
const TPMShixunsIndexComponent = Loadable({
|
||
loader: () => import('./modules/tpm/shixuns/ShixunsIndex'),
|
||
loading: Loading,
|
||
})
|
||
|
||
//实训课程(原实训路径)
|
||
const ShixunPaths = Loadable({
|
||
loader: () => import('./modules/paths/Index'),
|
||
loading: Loading,
|
||
})
|
||
|
||
//在线课堂
|
||
const CoursesIndex = Loadable({
|
||
loader: () => import('./modules/courses/Index'),
|
||
loading: Loading,
|
||
})
|
||
const SearchPage = Loadable({
|
||
loader: () => import('./search/SearchPage'),
|
||
loading: Loading,
|
||
})
|
||
|
||
//教学案例
|
||
const MoopCases = Loadable({
|
||
loader: () => import('./modules/moop_cases/index'),
|
||
loading: Loading,
|
||
})
|
||
|
||
// 课堂讨论
|
||
// const BoardIndex = Loadable({
|
||
// loader: () => import('./modules/courses/boards/BoardIndex'),
|
||
// loading:Loading,
|
||
// })
|
||
|
||
// //课堂普通作业&分组作业
|
||
// const CoursesWorkIndex = Loadable({
|
||
// loader: () => import('./modules/courses/busyWork/Index'),
|
||
// loading:Loading,
|
||
// })
|
||
//
|
||
|
||
// const TPMShixunchildIndexComponent = Loadable({
|
||
// loader: () => import('./modules/tpm/shixunchild/ShixunChildIndex'),
|
||
// loading: Loading,
|
||
// })
|
||
|
||
|
||
// const TPMshixunfork_listIndexComponent = Loadable({
|
||
// loader: () => import('./modules/tpm/shixunchild/Shixunfork_list'),
|
||
// loading: Loading,
|
||
// })
|
||
|
||
|
||
const ForumsIndexComponent = Loadable({
|
||
loader: () => import('./modules/forums/ForumsIndex'),
|
||
loading: Loading,
|
||
})
|
||
|
||
// trustie plus forum
|
||
// const TPForumsIndexComponent = Loadable({
|
||
// loader: () => import('./modules/tp-forums/TPForumsIndex'),
|
||
// loading: Loading,
|
||
// })
|
||
|
||
|
||
// const TestPageComponent = Loadable({
|
||
// loader: () => import('./modules/page/Index'),
|
||
// loading: Loading,
|
||
// })
|
||
|
||
|
||
//新建实训
|
||
const Newshixuns = Loadable({
|
||
loader: () => import('./modules/tpm/newshixuns/Newshixuns'),
|
||
loading: Loading,
|
||
})
|
||
|
||
|
||
//实训首页
|
||
const ShixunsHome = Loadable({
|
||
loader: () => import('./modules/home/shixunsHome'),
|
||
loading: Loading,
|
||
})
|
||
|
||
|
||
const CompatibilityPageLoadable = Loadable({
|
||
loader: () => import('./modules/common/CompatibilityPage'),
|
||
loading: Loading,
|
||
})
|
||
|
||
//403页面
|
||
const Shixunauthority = Loadable({
|
||
loader: () => import('./modules/403/Shixunauthority'),
|
||
loading: Loading,
|
||
})
|
||
|
||
|
||
//404页面
|
||
const Shixunnopage = Loadable({
|
||
loader: () => import('./modules/404/Shixunnopage'),
|
||
loading: Loading,
|
||
})
|
||
|
||
//500页面
|
||
const http500 = Loadable({
|
||
loader: () => import('./modules/500/http500'),
|
||
loading: Loading,
|
||
})
|
||
|
||
// 登录注册
|
||
const LoginRegisterPage = Loadable({
|
||
loader: () => import('./modules/user/LoginRegisterPage'),
|
||
loading: Loading,
|
||
})
|
||
const AccountPage = Loadable({
|
||
loader: () => import('./modules/user/AccountPage'),
|
||
loading: Loading,
|
||
})
|
||
|
||
// 个人主页
|
||
const UsersInfo = Loadable({
|
||
loader: () => import('./modules/user/usersInfo/Infos'),
|
||
loading: Loading,
|
||
})
|
||
|
||
// 兴趣页面
|
||
const Interestpage = Loadable({
|
||
loader: () => import('./modules/login/EducoderInteresse'),
|
||
loading: Loading,
|
||
})
|
||
|
||
//众包创新
|
||
const ProjectPackages=Loadable({
|
||
loader: () => import('./modules/projectPackages/ProjectPackageIndex'),
|
||
loading: Loading,
|
||
})
|
||
|
||
class App extends Component {
|
||
constructor(props) {
|
||
super(props)
|
||
// this.state = {
|
||
// isRenders:false,
|
||
// }
|
||
|
||
}
|
||
|
||
componentDidMount() {
|
||
// force an update if the URL changes
|
||
history.listen(() => {
|
||
this.forceUpdate()
|
||
const $ = window.$
|
||
// https://www.trustie.net/issues/21919 可能会有问题
|
||
$("html").animate({ scrollTop: $('html').scrollTop() - 0 })
|
||
});
|
||
|
||
initAxiosInterceptors(this.props)
|
||
|
||
//
|
||
// axios.interceptors.response.use((response) => {
|
||
// // console.log("response"+response);
|
||
// if(response!=undefined)
|
||
// // console.log("response"+response.data.statu);
|
||
// if (response&&response.data.status === 407) {
|
||
// this.setState({
|
||
// isRenders: true,
|
||
// })
|
||
// }
|
||
// return response;
|
||
// }, (error) => {
|
||
// //TODO 这里如果样式变了会出现css不加载的情况
|
||
// });
|
||
}
|
||
//修改登录方法
|
||
Modifyloginvalue=()=>{
|
||
this.setState({
|
||
isRender:false,
|
||
})
|
||
}
|
||
|
||
render() {
|
||
|
||
|
||
return (
|
||
<LocaleProvider locale={zhCN}>
|
||
|
||
|
||
<MuiThemeProvider theme={theme}>
|
||
<LoginDialog {...this.props} {...this.state} Modifyloginvalue={()=>this.Modifyloginvalue()}></LoginDialog>
|
||
<Notcompletedysl {...this.props} {...this.state}></Notcompletedysl>
|
||
<Trialapplicationysl {...this.props} {...this.state}></Trialapplicationysl>
|
||
<Trialapplicationreview {...this.props} {...this.state}></Trialapplicationreview>
|
||
<Addcourses {...this.props} {...this.state}/>
|
||
<AccountProfile {...this.props} {...this.state}/>
|
||
{/*{*/}
|
||
{/* isRender === true?*/}
|
||
{/* <LoginDialog></LoginDialog> : ""*/}
|
||
{/*}*/}
|
||
|
||
{/*{*/}
|
||
{/* isRenders === true?*/}
|
||
{/*<Trialapplication></Trialapplication>*/}
|
||
{/*:""*/}
|
||
{/*}*/}
|
||
|
||
<Router>
|
||
<Switch>
|
||
{/*<Route path="/login" component={LoginRegisterPage}/>*/}
|
||
|
||
{/*众包创新*/}
|
||
<Route path={"/crowdsourcings"} component={ProjectPackages}/>
|
||
{/*认证*/}
|
||
<Route path="/account" component={AccountPage}/>
|
||
|
||
{/*403*/}
|
||
<Route path="/403" component={Shixunauthority}/>
|
||
|
||
<Route path="/500" component={http500}/>
|
||
|
||
{/*404*/}
|
||
<Route path="/nopage" component={Shixunnopage}/>
|
||
|
||
<Route path="/compatibility" component={CompatibilityPageLoadable}/>
|
||
<Route
|
||
path="/login" component={EducoderLogin}
|
||
/>
|
||
<Route
|
||
path="/register" component={EducoderLogin}
|
||
/>
|
||
<Route path="/users/:username"
|
||
render={
|
||
(props) => (<UsersInfo {...this.props} {...props} {...this.state} />)
|
||
}></Route>
|
||
{/*<Route*/}
|
||
{/* path="/trialapplication" component={Trialapplication}*/}
|
||
{/*/>*/}
|
||
<Route
|
||
path="/changepassword" component={EducoderLogin}
|
||
/>
|
||
<Route
|
||
path="/interesse" component={Interestpage}
|
||
|
||
/>
|
||
|
||
<Route path="/shixuns/new" component={Newshixuns}>
|
||
</Route>
|
||
|
||
<Route path="/tasks/:stageId" component={IndexWrapperComponent}/>
|
||
|
||
<Route path="/shixuns/:shixunId" component={TPMIndexComponent}>
|
||
</Route>
|
||
|
||
{/*列表页*/}
|
||
<Route path="/shixuns" component={TPMShixunsIndexComponent}/>
|
||
|
||
{/* <Route path="/shixunchild" component={TPMShixunchildIndexComponent}>
|
||
</Route>
|
||
<Route path="/fork_list" component={TPMshixunfork_listIndexComponent}>
|
||
</Route> */}
|
||
|
||
{/*<Route path="/forums" component={ForumsIndexComponent}>*/}
|
||
{/*</Route>*/}
|
||
|
||
|
||
{/*实训课程(原实训路径)*/}
|
||
<Route path="/paths" component={ShixunPaths}></Route>
|
||
|
||
<Route path="/search"
|
||
render={
|
||
(props)=>(<SearchPage {...this.props} {...props} {...this.state}></SearchPage>)
|
||
}
|
||
></Route>
|
||
|
||
{/*课堂*/}
|
||
<Route path="/courses" component={CoursesIndex} {...this.props}></Route>
|
||
|
||
{/* 课堂讨论 */}
|
||
{/* <Route path="/board" component = {BoardIndex} {...this.props}></Route> */}
|
||
|
||
{/* <Route path="/tpforums" component={TPForumsIndexComponent}>
|
||
</Route> */}
|
||
|
||
{/* <Route path="/myshixuns/:shixunId/stages/:stageId" component={Index}/> */}
|
||
{/* 兴趣页面*/}
|
||
{/*<Route path="/interest" component={Interestpage}/>*/}
|
||
|
||
<Route path="/comment" component={CommentComponent}/>
|
||
<Route path="/testMaterial" component={TestMaterialDesignComponent}/>
|
||
<Route path="/test" component={TestIndex}/>
|
||
<Route path="/testCodeMirror" component={TestCodeMirrorComponent}/>
|
||
<Route path="/testRCComponent" component={TestComponent}/>
|
||
<Route path="/testUrlQuery" component={TestUrlQueryComponent}/>
|
||
|
||
{/* 教学案例 */}
|
||
<Route path="/moop_cases"render={
|
||
(props) => (<MoopCases {...this.props} {...props} {...this.state} />)
|
||
}/>
|
||
|
||
{/* <Route component={NotFoundPage}/> */}
|
||
{/*列表页*/}
|
||
{/*<Route component={TPMShixunsIndexComponent}/>*/}
|
||
{/*首页*/}
|
||
<Route exact path="/" component={ShixunsHome}/>
|
||
<Route component={Shixunnopage}/>
|
||
|
||
{/*<Route component={ShixunsHome}/>*/}
|
||
|
||
</Switch>
|
||
</Router>
|
||
</MuiThemeProvider>
|
||
</LocaleProvider>
|
||
);
|
||
}
|
||
}
|
||
|
||
// moment国际化,设置为中文
|
||
moment.defineLocale('zh-cn', {
|
||
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
|
||
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
|
||
weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
|
||
weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
|
||
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
|
||
longDateFormat: {
|
||
LT: 'Ah点mm分',
|
||
LTS: 'Ah点m分s秒',
|
||
L: 'YYYY-MM-DD',
|
||
LL: 'YYYY年MMMD日',
|
||
LLL: 'YYYY年MMMD日Ah点mm分',
|
||
LLLL: 'YYYY年MMMD日ddddAh点mm分',
|
||
l: 'YYYY-MM-DD',
|
||
ll: 'YYYY年MMMD日',
|
||
lll: 'YYYY年MMMD日Ah点mm分',
|
||
llll: 'YYYY年MMMD日ddddAh点mm分'
|
||
},
|
||
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
|
||
meridiemHour: function (hour, meridiem) {
|
||
if (hour === 12) {
|
||
hour = 0;
|
||
}
|
||
if (meridiem === '凌晨' || meridiem === '早上' ||
|
||
meridiem === '上午') {
|
||
return hour;
|
||
} else if (meridiem === '下午' || meridiem === '晚上') {
|
||
return hour + 12;
|
||
} else {
|
||
// '中午'
|
||
return hour >= 11 ? hour : hour + 12;
|
||
}
|
||
},
|
||
meridiem: function (hour, minute, isLower) {
|
||
var hm = hour * 100 + minute;
|
||
if (hm < 600) {
|
||
return '凌晨';
|
||
} else if (hm < 900) {
|
||
return '早上';
|
||
} else if (hm < 1130) {
|
||
return '上午';
|
||
} else if (hm < 1230) {
|
||
return '中午';
|
||
} else if (hm < 1800) {
|
||
return '下午';
|
||
} else {
|
||
return '晚上';
|
||
}
|
||
},
|
||
calendar: {
|
||
sameDay: function () {
|
||
return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
|
||
},
|
||
nextDay: function () {
|
||
return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
|
||
},
|
||
lastDay: function () {
|
||
return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
|
||
},
|
||
nextWeek: function () {
|
||
var startOfWeek, prefix;
|
||
startOfWeek = moment().startOf('week');
|
||
prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
|
||
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
|
||
},
|
||
lastWeek: function () {
|
||
var startOfWeek, prefix;
|
||
startOfWeek = moment().startOf('week');
|
||
prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
|
||
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
|
||
},
|
||
sameElse: 'LL'
|
||
},
|
||
ordinalParse: /\d{1,2}(日|月|周)/,
|
||
ordinal: function (number, period) {
|
||
switch (period) {
|
||
case 'd':
|
||
case 'D':
|
||
case 'DDD':
|
||
return number + '日';
|
||
case 'M':
|
||
return number + '月';
|
||
case 'w':
|
||
case 'W':
|
||
return number + '周';
|
||
default:
|
||
return number;
|
||
}
|
||
},
|
||
relativeTime: {
|
||
future: '%s内',
|
||
past: '%s前',
|
||
s: '几秒',
|
||
m: '1分钟',
|
||
mm: '%d分钟',
|
||
h: '1小时',
|
||
hh: '%d小时',
|
||
d: '1天',
|
||
dd: '%d天',
|
||
M: '1个月',
|
||
MM: '%d个月',
|
||
y: '1年',
|
||
yy: '%d年'
|
||
},
|
||
week: {
|
||
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
|
||
dow: 1, // Monday is the first day of the week.
|
||
doy: 4 // The week that contains Jan 4th is the first week of the year.
|
||
}
|
||
});
|
||
export default SnackbarHOC()(App); |