weaver_trunk_cli/pc4mobx/amain/index.js

124 lines
2.8 KiB
JavaScript

import React from 'react';
import ReactDOM from 'react-dom';
import {
Router,
Route,
useRouterHistory
} from 'react-router';
import {
createHashHistory
} from 'History';
import {
Provider
} from 'mobx-react';
import {
RouterStore,
syncHistoryWithStore
} from 'mobx-react-router';
const browserHistory = useRouterHistory(createHashHistory)({
queryKey: '_key',
basename: '/',
});
const routingStore = new RouterStore();
const history = syncHistoryWithStore(browserHistory, routingStore);
window.weaHistory = history;
// 主题
import {
Login,
Theme,
store as portalThemeStore
} from 'weaPortalTheme';
// 主题多语言
import {
WeaLocaleProvider
} from 'ecCom';
const getLocaleLabel = WeaLocaleProvider.getLocaleLabel.bind(this, 'theme');
const libs = [
'weaPortal', // 门户
'weaAlbum', // 相册
'weaBlog', // 微博
'weaCowork', // 协作
'weaCpt', // 资产
'weaCrm', // 客户
'weaCrmReport', // 客户报表
'weaCube', // 建模
'weaDemo', // demo示例
'weaDevelop', // 二次开发
'weaDoc', // 文档
'weaEmail', // 邮件
'weaESearch', // 微搜
'weaFna', // 财务
'weaFnaSpecial', // 财务
'weaFnaMulit', // 财务 全面预算
'weaHrm', // 人力
'weaInte', // 集成
'weaMeeting', // 会议
'weaOdoc', // 公文
'weaPrj', // 项目
'weaSmallApp', // 小模块
'weaWorkflow', // 流程
'weaWorkplan', // 日程
'weaWorkrelate', // 执行力
'weaPortrait', // 组织画像
'weaCar', //车辆前后端
'weaContract_zs', //合同
'weaCustomSetting', // 个性化设置
'weaHrmAttendance', //新考勤模块
'weaHrmTax', //新个税
'weaHrmScAirportAddressBook', //四川航空通讯录
'weaEdcApp',//数据中心前端
'weaEdcAppV2',
'weaCompared',// '对比'
'weaOrganization', //组织
];
const getModules = (names = []) => {
let store = {};
const route = [];
names.forEach(name => {
const module = window[name];
if (module && module.store && module.Route) {
store = { ...store,
...module.store
};
route.push(module.Route);
}
});
return {
store,
route,
};
};
const stores = {
routing: routingStore,
...portalThemeStore,
...getModules(libs).store,
};
const Report = props => <div style={{ height: '100%' }}>{props.children}</div>;
class Root extends React.Component {
render() {
return (
<Provider {...stores}>
<Router history={history}>
<Route path='/' component={Login} />
<Route path='main' onEnter={getLocaleLabel} component={Theme}>
<Route path='report' component={Report}>
{getModules(libs).route}
</Route>
{getModules(libs).route}
</Route>
</Router>
</Provider>
);
}
}
ReactDOM.render(<Root />, document.getElementById('container'));