committed by
陈帅
4 changed files with 0 additions and 579 deletions
@ -1,152 +0,0 @@ |
|||
// // TODO: authority
|
|||
// const menuData = [
|
|||
// {
|
|||
// name: 'dashboard',
|
|||
// icon: 'dashboard',
|
|||
// path: 'dashboard',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'analysis',
|
|||
// path: 'analysis',
|
|||
// },
|
|||
// {
|
|||
// name: 'monitor',
|
|||
// path: 'monitor',
|
|||
// },
|
|||
// {
|
|||
// name: 'workplace',
|
|||
// path: 'workplace',
|
|||
// // hideInBreadcrumb: true,
|
|||
// // hideInMenu: true,
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// name: 'form',
|
|||
// icon: 'form',
|
|||
// path: 'form',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'basicform',
|
|||
// path: 'basic-form',
|
|||
// },
|
|||
// {
|
|||
// name: 'stepform',
|
|||
// path: 'step-form',
|
|||
// },
|
|||
// {
|
|||
// // authority: 'admin',
|
|||
// name: 'advancedform',
|
|||
// authority: 'admin',
|
|||
// path: 'advanced-form',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// name: 'list',
|
|||
// icon: 'table',
|
|||
// path: 'list',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'searchlist',
|
|||
// path: 'table-list',
|
|||
// },
|
|||
// {
|
|||
// name: 'basiclist',
|
|||
// path: 'basic-list',
|
|||
// },
|
|||
// {
|
|||
// name: 'cardlist',
|
|||
// path: 'card-list',
|
|||
// },
|
|||
// {
|
|||
// name: 'searchlist',
|
|||
// path: 'search',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'articles',
|
|||
// path: 'articles',
|
|||
// },
|
|||
// {
|
|||
// name: 'projects',
|
|||
// path: 'projects',
|
|||
// },
|
|||
// {
|
|||
// name: 'applications',
|
|||
// path: 'applications',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// name: 'profile',
|
|||
// icon: 'profile',
|
|||
// path: 'profile',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'basic',
|
|||
// path: 'basic',
|
|||
// },
|
|||
// {
|
|||
// name: 'advanced',
|
|||
// path: 'advanced',
|
|||
// // authority: 'admin',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// name: 'result',
|
|||
// icon: 'check-circle-o',
|
|||
// path: 'result',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'success',
|
|||
// path: 'success',
|
|||
// },
|
|||
// {
|
|||
// name: 'fail',
|
|||
// path: 'fail',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// name: 'exception',
|
|||
// icon: 'warning',
|
|||
// path: 'exception',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'not-permission',
|
|||
// path: '403',
|
|||
// },
|
|||
// {
|
|||
// name: 'not-find',
|
|||
// path: '404',
|
|||
// },
|
|||
// {
|
|||
// name: 'server-error',
|
|||
// path: '500',
|
|||
// },
|
|||
// {
|
|||
// name: 'trigger',
|
|||
// path: 'trigger',
|
|||
// hideInMenu: true,
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// {
|
|||
// name: 'account',
|
|||
// icon: 'user',
|
|||
// path: 'account',
|
|||
// children: [
|
|||
// {
|
|||
// name: 'center',
|
|||
// path: 'center',
|
|||
// },
|
|||
// {
|
|||
// name: 'settings',
|
|||
// path: 'settings',
|
|||
// },
|
|||
// ],
|
|||
// },
|
|||
// ];
|
|||
@ -1,343 +0,0 @@ |
|||
// TODO:remove
|
|||
// import { createElement } from 'react';
|
|||
// import dynamic from 'dva/dynamic';
|
|||
// import pathToRegexp from 'path-to-regexp';
|
|||
// import { getMenuData } from './menu';
|
|||
|
|||
// let routerDataCache;
|
|||
|
|||
// const modelNotExisted = (app, model) =>
|
|||
// // eslint-disable-next-line
|
|||
// !app._models.some(({ namespace }) => {
|
|||
// return namespace === model.substring(model.lastIndexOf('/') + 1);
|
|||
// });
|
|||
|
|||
// // wrapper of dynamic
|
|||
// const dynamicWrapper = (app, models, component) => {
|
|||
// // () => require('module')
|
|||
// // transformed by babel-plugin-dynamic-import-node-sync
|
|||
// if (component.toString().indexOf('.then(') < 0) {
|
|||
// models.forEach(model => {
|
|||
// if (modelNotExisted(app, model)) {
|
|||
// // eslint-disable-next-line
|
|||
// app.model(require(`../models/${model}`).default);
|
|||
// }
|
|||
// });
|
|||
// return props => {
|
|||
// if (!routerDataCache) {
|
|||
// routerDataCache = getRouterData(app);
|
|||
// }
|
|||
// return createElement(component().default, {
|
|||
// ...props,
|
|||
// routerData: routerDataCache,
|
|||
// });
|
|||
// };
|
|||
// }
|
|||
// // () => import('module')
|
|||
// return dynamic({
|
|||
// app,
|
|||
// models: () =>
|
|||
// models.filter(model => modelNotExisted(app, model)).map(m => import(`../models/${m}.js`)),
|
|||
// // add routerData prop
|
|||
// component: () => {
|
|||
// if (!routerDataCache) {
|
|||
// routerDataCache = getRouterData(app);
|
|||
// }
|
|||
// return component().then(raw => {
|
|||
// const Component = raw.default || raw;
|
|||
// return props =>
|
|||
// createElement(Component, {
|
|||
// ...props,
|
|||
// routerData: routerDataCache,
|
|||
// });
|
|||
// });
|
|||
// },
|
|||
// });
|
|||
// };
|
|||
|
|||
// function getFlatMenuData(menus) {
|
|||
// let keys = {};
|
|||
// menus.forEach(item => {
|
|||
// if (item.children) {
|
|||
// keys[item.path] = { ...item };
|
|||
// keys = { ...keys, ...getFlatMenuData(item.children) };
|
|||
// } else {
|
|||
// keys[item.path] = { ...item };
|
|||
// }
|
|||
// });
|
|||
// return keys;
|
|||
// }
|
|||
|
|||
// export const getRouterData = app => {
|
|||
// const routerConfig = {
|
|||
// '/': {
|
|||
// component: dynamicWrapper(app, ['user', 'login', 'setting'], () =>
|
|||
// import('../layouts/LoadingPage')
|
|||
// ),
|
|||
// },
|
|||
// '/dashboard/analysis': {
|
|||
// component: dynamicWrapper(app, ['chart'], () => import('../pages/Dashboard/Analysis')),
|
|||
// },
|
|||
// '/dashboard/monitor': {
|
|||
// component: dynamicWrapper(app, ['monitor'], () => import('../pages/Dashboard/Monitor')),
|
|||
// },
|
|||
// '/dashboard/workplace': {
|
|||
// component: dynamicWrapper(app, ['user', 'project', 'activities', 'chart'], () =>
|
|||
// import('../pages/Dashboard/Workplace')
|
|||
// ),
|
|||
// // hideInBreadcrumb: true,
|
|||
// // name: '工作台',
|
|||
// // authority: 'admin',
|
|||
// },
|
|||
// '/form/basic-form': {
|
|||
// component: dynamicWrapper(app, ['form'], () => import('../pages/Forms/BasicForm')),
|
|||
// },
|
|||
// '/form/step-form': {
|
|||
// component: dynamicWrapper(app, ['form'], () => import('../pages/Forms/StepForm')),
|
|||
// },
|
|||
// '/form/step-form/info': {
|
|||
// name: '分步表单(填写转账信息)',
|
|||
// component: dynamicWrapper(app, ['form'], () => import('../pages/Forms/StepForm/Step1')),
|
|||
// },
|
|||
// '/form/step-form/confirm': {
|
|||
// name: '分步表单(确认转账信息)',
|
|||
// component: dynamicWrapper(app, ['form'], () => import('../pages/Forms/StepForm/Step2')),
|
|||
// },
|
|||
// '/form/step-form/result': {
|
|||
// name: '分步表单(完成)',
|
|||
// component: dynamicWrapper(app, ['form'], () => import('../pages/Forms/StepForm/Step3')),
|
|||
// },
|
|||
// '/form/advanced-form': {
|
|||
// component: dynamicWrapper(app, ['form'], () => import('../pages/Forms/AdvancedForm')),
|
|||
// },
|
|||
// '/list/table-list': {
|
|||
// component: dynamicWrapper(app, ['rule'], () => import('../pages/List/TableList')),
|
|||
// },
|
|||
// '/list/basic-list': {
|
|||
// component: dynamicWrapper(app, ['list'], () => import('../pages/List/BasicList')),
|
|||
// },
|
|||
// '/list/card-list': {
|
|||
// component: dynamicWrapper(app, ['list'], () => import('../pages/List/CardList')),
|
|||
// },
|
|||
// '/list/search': {
|
|||
// component: dynamicWrapper(app, ['list'], () => import('../pages/List/List')),
|
|||
// },
|
|||
// '/list/search/projects': {
|
|||
// component: dynamicWrapper(app, ['list'], () => import('../pages/List/Projects')),
|
|||
// },
|
|||
// '/list/search/applications': {
|
|||
// component: dynamicWrapper(app, ['list'], () => import('../pages/List/Applications')),
|
|||
// },
|
|||
// '/list/search/articles': {
|
|||
// component: dynamicWrapper(app, ['list'], () => import('../pages/List/Articles')),
|
|||
// },
|
|||
// '/profile/basic': {
|
|||
// component: dynamicWrapper(app, ['profile'], () => import('../pages/Profile/BasicProfile')),
|
|||
// },
|
|||
// '/profile/advanced': {
|
|||
// component: dynamicWrapper(app, ['profile'], () => import('../pages/Profile/AdvancedProfile')),
|
|||
// },
|
|||
// '/result/success': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Result/Success')),
|
|||
// },
|
|||
// '/result/fail': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Result/Error')),
|
|||
// },
|
|||
// '/exception/403': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Exception/403')),
|
|||
// },
|
|||
// '/exception/404': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Exception/404')),
|
|||
// },
|
|||
// '/exception/500': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Exception/500')),
|
|||
// },
|
|||
// '/exception/trigger': {
|
|||
// component: dynamicWrapper(app, ['error'], () =>
|
|||
// import('../pages/Exception/triggerException')
|
|||
// ),
|
|||
// },
|
|||
// '/user': {
|
|||
// component: dynamicWrapper(app, [], () => import('../layouts/UserLayout')),
|
|||
// },
|
|||
// '/user/login': {
|
|||
// component: dynamicWrapper(app, ['login'], () => import('../pages/User/Login')),
|
|||
// },
|
|||
// '/user/register': {
|
|||
// component: dynamicWrapper(app, ['register'], () => import('../pages/User/Register')),
|
|||
// },
|
|||
// '/user/register-result': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/User/RegisterResult')),
|
|||
// },
|
|||
// '/account/center': {
|
|||
// component: dynamicWrapper(app, ['list', 'user', 'project'], () =>
|
|||
// import('../pages/Account/Center/Center')
|
|||
// ),
|
|||
// },
|
|||
// '/account/center/articles': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Account/Center/Articles')),
|
|||
// },
|
|||
// '/account/center/applications': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Account/Center/Applications')),
|
|||
// },
|
|||
// '/account/center/projects': {
|
|||
// component: dynamicWrapper(app, [], () => import('../pages/Account/Center/Projects')),
|
|||
// },
|
|||
// '/account/settings': {
|
|||
// component: dynamicWrapper(app, ['geographic'], () =>
|
|||
// import('../pages/Account/Settings/Info')
|
|||
// ),
|
|||
// },
|
|||
// '/account/settings/base': {
|
|||
// component: dynamicWrapper(app, ['geographic'], () =>
|
|||
// import('../pages/Account/Settings/BaseView')
|
|||
// ),
|
|||
// },
|
|||
// '/account/settings/security': {
|
|||
// component: dynamicWrapper(app, ['geographic'], () =>
|
|||
// import('../pages/Account/Settings/SecurityView')
|
|||
// ),
|
|||
// },
|
|||
// '/account/settings/binding': {
|
|||
// component: dynamicWrapper(app, ['geographic'], () =>
|
|||
// import('../pages/Account/Settings/BindingView')
|
|||
// ),
|
|||
// },
|
|||
// '/account/settings/notification': {
|
|||
// component: dynamicWrapper(app, ['geographic'], () =>
|
|||
// import('../pages/Account/Settings/NotificationView')
|
|||
// ),
|
|||
// },
|
|||
// // '/user/:id': {
|
|||
// // component: dynamicWrapper(app, [], () => import('../pages/User/SomeComponent')),
|
|||
// // },
|
|||
// };
|
|||
// // Get name from ./menu.js or just set it in the router data.
|
|||
// const menuData = getFlatMenuData(getMenuData());
|
|||
|
|||
// // Route configuration data
|
|||
// // eg. {name,authority ...routerConfig }
|
|||
// const routerData = {};
|
|||
// // The route matches the menu
|
|||
// Object.keys(routerConfig).forEach(path => {
|
|||
// // Regular match item name
|
|||
// // eg. router /user/:id === /user/chen
|
|||
// const pathRegexp = pathToRegexp(path);
|
|||
// const menuKey = Object.keys(menuData).find(key => pathRegexp.test(`${key}`));
|
|||
// let menuItem = {};
|
|||
// // If menuKey is not empty
|
|||
// if (menuKey) {
|
|||
// menuItem = menuData[menuKey];
|
|||
// }
|
|||
// let router = routerConfig[path];
|
|||
// // If you need to configure complex parameter routing,
|
|||
// // https://github.com/ant-design/ant-design-pro-site/blob/master/docs/router-and-nav.md#%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E8%B7%AF%E7%94%B1%E8%8F%9C%E5%8D%95
|
|||
// // eg . /list/:type/user/info/:id
|
|||
// router = {
|
|||
// ...router,
|
|||
// name: router.name || menuItem.name,
|
|||
// authority: router.authority || menuItem.authority,
|
|||
// hideInBreadcrumb: router.hideInBreadcrumb || menuItem.hideInBreadcrumb,
|
|||
// };
|
|||
// routerData[path] = router;
|
|||
// });
|
|||
// return routerData;
|
|||
// };
|
|||
|
|||
import pathToRegexp from 'path-to-regexp'; |
|||
import { getMenuData } from './menu'; |
|||
|
|||
function getFlatMenuData(menus) { |
|||
let keys = {}; |
|||
menus.forEach(item => { |
|||
if (item.children) { |
|||
keys[item.path] = { ...item }; |
|||
keys = { ...keys, ...getFlatMenuData(item.children) }; |
|||
} else { |
|||
keys[item.path] = { ...item }; |
|||
} |
|||
}); |
|||
return keys; |
|||
} |
|||
|
|||
export const getRouterData = () => { |
|||
const routerConfig = { |
|||
'/': { |
|||
name: 'Ant-Design-Pro', |
|||
}, |
|||
'/Dashboard/Analysis': { |
|||
name: '分析页', |
|||
}, |
|||
'/Dashboard/Monitor': {}, |
|||
'/Dashboard/Workplace': { |
|||
// component: dynamicWrapper(app, ['project', 'activities', 'chart'], () => import('../routes/Dashboard/Workplace')),
|
|||
// hideInBreadcrumb: true,
|
|||
// name: '工作台',
|
|||
// authority: 'admin',
|
|||
}, |
|||
'/Forms/BasicForm': {}, |
|||
'/Forms/StepForm': {}, |
|||
'/Forms/StepForm/Step1': { |
|||
name: '分步表单(填写转账信息)', |
|||
}, |
|||
'/Forms/StepForm/Step2': { |
|||
name: '分步表单(确认转账信息)', |
|||
}, |
|||
'/Forms/StepForm/Step3': { |
|||
name: '分步表单(完成)', |
|||
}, |
|||
'/Forms/AdvancedForm': {}, |
|||
'/List/TableList': {}, |
|||
'/List/BasicList': {}, |
|||
'/List/CardList': {}, |
|||
'/List': {}, |
|||
'/List/Search/Projects': {}, |
|||
'/List/Search/Applications': {}, |
|||
'/List/Search/Articles': {}, |
|||
'/Profile/BasicProfile': {}, |
|||
'/Profile/AdvancedProfile': {}, |
|||
'/Result/success': {}, |
|||
'/Result/Error': {}, |
|||
'/Exception/403': {}, |
|||
'/Exception/404': {}, |
|||
'/Exception/500': {}, |
|||
'/Exception/triggerException': {}, |
|||
'/User': {}, |
|||
'/User/Login': {}, |
|||
'/User/Register': {}, |
|||
'/User/RegisterResult': {}, |
|||
// '/user/:id': {
|
|||
// component: dynamicWrapper(app, [], () => console.log('../routes/User/SomeComponent')),
|
|||
// },
|
|||
}; |
|||
// Get name from ./menu.js or just set it in the router data.
|
|||
const menuData = getFlatMenuData(getMenuData()); |
|||
|
|||
// Route configuration data
|
|||
// eg. {name,authority ...routerConfig }
|
|||
const routerData = {}; |
|||
// The route matches the menu
|
|||
Object.keys(routerConfig).forEach(path => { |
|||
// Regular match item name
|
|||
// eg. router /user/:id === /user/chen
|
|||
const pathRegexp = pathToRegexp(path); |
|||
const menuKey = Object.keys(menuData).find(key => pathRegexp.test(`${key}`)); |
|||
let menuItem = {}; |
|||
// If menuKey is not empty
|
|||
if (menuKey) { |
|||
menuItem = menuData[menuKey]; |
|||
} |
|||
let router = routerConfig[path]; |
|||
// If you need to configure complex parameter routing,
|
|||
// https://github.com/ant-design/ant-design-pro-site/blob/master/docs/router-and-nav.md#%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E8%B7%AF%E7%94%B1%E8%8F%9C%E5%8D%95
|
|||
// eg . /list/:type/user/info/:id
|
|||
router = { |
|||
...router, |
|||
name: router.name || menuItem.name, |
|||
authority: router.authority || menuItem.authority, |
|||
}; |
|||
routerData[path] = router; |
|||
}); |
|||
|
|||
return routerData; |
|||
}; |
|||
@ -1,53 +0,0 @@ |
|||
import React from 'react'; |
|||
import { addLocaleData, IntlProvider } from 'umi/locale'; |
|||
import { LocaleProvider } from 'antd'; |
|||
import enLocale from './en-US'; |
|||
import cnLocale from './zh-CN'; |
|||
|
|||
const Context = React.createContext(); |
|||
|
|||
function getLang() { |
|||
if (window.localStorage && localStorage.getItem('locale')) { |
|||
return localStorage.getItem('locale'); |
|||
} |
|||
return (navigator.language || navigator.browserLanguage).toLowerCase() === 'en-us' |
|||
? 'en-US' |
|||
: 'zh-CN'; |
|||
} |
|||
|
|||
export class LocalComponent extends React.PureComponent { |
|||
state = { |
|||
locale: getLang(), |
|||
}; |
|||
|
|||
changeLocal = () => { |
|||
this.setState({ |
|||
locale: getLang(), |
|||
}); |
|||
}; |
|||
|
|||
render() { |
|||
const { children } = this.props; |
|||
const { locale } = this.state; |
|||
return ( |
|||
<Context.Provider |
|||
value={{ |
|||
appLocale: locale === 'zh-CN' ? cnLocale : enLocale, |
|||
changeLocal: this.changeLocal, |
|||
}} |
|||
> |
|||
<Context.Consumer> |
|||
{({ appLocale }) => { |
|||
addLocaleData(appLocale.data); |
|||
return ( |
|||
<IntlProvider locale={appLocale.locale} messages={appLocale.messages}> |
|||
<LocaleProvider locale={appLocale.antd}>{children}</LocaleProvider> |
|||
</IntlProvider> |
|||
); |
|||
}} |
|||
</Context.Consumer> |
|||
</Context.Provider> |
|||
); |
|||
} |
|||
} |
|||
export default Context; |
|||
@ -1,31 +0,0 @@ |
|||
import React from 'react'; |
|||
import { routerRedux, Route, Switch } from 'dva/router'; |
|||
import { getRouterData } from './common/router'; |
|||
import Authorized from './utils/Authorized'; |
|||
import { getQueryPath } from './utils/utils'; |
|||
|
|||
const { ConnectedRouter } = routerRedux; |
|||
const { AuthorizedRoute } = Authorized; |
|||
|
|||
function RouterConfig({ history, app }) { |
|||
const routerData = getRouterData(app); |
|||
const UserLayout = routerData['/user'].component; |
|||
const BasicLayout = routerData['/'].component; |
|||
return ( |
|||
<ConnectedRouter history={history}> |
|||
<Switch> |
|||
<Route path="/user" component={UserLayout} /> |
|||
<AuthorizedRoute |
|||
path="/" |
|||
render={props => <BasicLayout {...props} />} |
|||
authority={['admin', 'user']} |
|||
redirectPath={getQueryPath('/user/login', { |
|||
redirect: window.location.href, |
|||
})} |
|||
/> |
|||
</Switch> |
|||
</ConnectedRouter> |
|||
); |
|||
} |
|||
|
|||
export default RouterConfig; |
|||
Loading…
Reference in new issue