正在显示
10 个修改的文件
包含
183 行增加
和
20 行删除
@@ -21,6 +21,7 @@ | @@ -21,6 +21,7 @@ | ||
21 | "rc-animate": "^2.8.3", | 21 | "rc-animate": "^2.8.3", |
22 | "react": "^16.8.6", | 22 | "react": "^16.8.6", |
23 | "react-dom": "^16.8.6", | 23 | "react-dom": "^16.8.6", |
24 | + "react-iframe": "^1.8.0", | ||
24 | "react-loadable": "^5.5.0", | 25 | "react-loadable": "^5.5.0", |
25 | "react-redux": "^7.1.0", | 26 | "react-redux": "^7.1.0", |
26 | "react-router": "^5.0.1", | 27 | "react-router": "^5.0.1", |
@@ -105,8 +105,8 @@ class SysMenu extends React.Component { | @@ -105,8 +105,8 @@ class SysMenu extends React.Component { | ||
105 | }); | 105 | }); |
106 | } | 106 | } |
107 | render() { | 107 | render() { |
108 | - const { uaa_perms, openKeys, selectedKeys } = this.props; | ||
109 | - const menus = formatMenu(uaa_perms); | 108 | + const { system_menu_perms, openKeys, selectedKeys } = this.props; |
109 | + const menus = formatMenu(system_menu_perms); | ||
110 | return ( | 110 | return ( |
111 | <Menu className={cx('system_wrap')} | 111 | <Menu className={cx('system_wrap')} |
112 | onClick={this.handleClick} | 112 | onClick={this.handleClick} |
@@ -146,14 +146,14 @@ class SysMenu extends React.Component { | @@ -146,14 +146,14 @@ class SysMenu extends React.Component { | ||
146 | const mapState = (state) => { | 146 | const mapState = (state) => { |
147 | const { | 147 | const { |
148 | router = {}, | 148 | router = {}, |
149 | - // system: { system_menu_selected_keys: { openKeys, selectedKeys } } | 149 | + system: { system_menu_selected_keys: { openKeys = [], selectedKeys = [] }, system_menu_perms = [] } |
150 | } = state; | 150 | } = state; |
151 | return { | 151 | return { |
152 | router, | 152 | router, |
153 | uaa_tenant: {}, | 153 | uaa_tenant: {}, |
154 | - uaa_perms: [], | ||
155 | - openKeys: [], | ||
156 | - selectedKeys: [] | 154 | + system_menu_perms, |
155 | + openKeys, | ||
156 | + selectedKeys | ||
157 | }; | 157 | }; |
158 | }; | 158 | }; |
159 | export default connect(mapState)(SysMenu); | 159 | export default connect(mapState)(SysMenu); |
@@ -27,14 +27,6 @@ class Login extends React.Component { | @@ -27,14 +27,6 @@ class Login extends React.Component { | ||
27 | api.postLogin(values).then(data => { | 27 | api.postLogin(values).then(data => { |
28 | console.log(data); | 28 | console.log(data); |
29 | }) | 29 | }) |
30 | - console.log("#########:::::::", values); | ||
31 | - // if (values.grant_type == 'password') { //密码登录 | ||
32 | - // dispatch(login(values)); | ||
33 | - // } else if (values.grant_type == 'smscode') {//验证码登录 | ||
34 | - // dispatch(login(values)); | ||
35 | - // } else if (values.grant_type == 'change_tenant') {//选择tenant | ||
36 | - // dispatch(changeTenant(values)); | ||
37 | - // } | ||
38 | } | 30 | } |
39 | backLogin() { | 31 | backLogin() { |
40 | const { dispatch } = this.props; | 32 | const { dispatch } = this.props; |
1 | +import React from 'react'; | ||
2 | +import Iframe from 'react-iframe' | ||
3 | +import { connect } from 'react-redux'; | ||
4 | +import { Layout } from 'antd'; | ||
5 | +import cx from 'classnames'; | ||
6 | + | ||
7 | +class StatisticsContainer extends React.Component { | ||
8 | + static propTypes = { | ||
9 | + } | ||
10 | + constructor(props) { | ||
11 | + super(props); | ||
12 | + } | ||
13 | + componentDidMount() { | ||
14 | + } | ||
15 | + render() { | ||
16 | + return ( | ||
17 | + <div className={cx('statistics_wrap')} style={{ width: '100%', height: '100%', overflowY: 'hidden' }}> | ||
18 | + <Iframe url="https://www.baidu.com" | ||
19 | + width="100%" | ||
20 | + height="100%" | ||
21 | + id="myId" | ||
22 | + className="myClassname" | ||
23 | + display="initial" | ||
24 | + frameBorder={0} | ||
25 | + position="relative" /> | ||
26 | + </div> | ||
27 | + ); | ||
28 | + } | ||
29 | +} | ||
30 | + | ||
31 | + | ||
32 | + | ||
33 | +const mapState = (state) => { | ||
34 | + const { router: { location = {} } } = state; | ||
35 | + return { | ||
36 | + location | ||
37 | + }; | ||
38 | +}; | ||
39 | +export default connect(mapState)(StatisticsContainer); |
@@ -6,4 +6,119 @@ | @@ -6,4 +6,119 @@ | ||
6 | width: 100vw; | 6 | width: 100vw; |
7 | height: 100vh; | 7 | height: 100vh; |
8 | overflow: hidden; | 8 | overflow: hidden; |
9 | +} | ||
10 | +.layout-header-wrap{ | ||
11 | + height: 52px; | ||
12 | + line-height: 52px; | ||
13 | +} | ||
14 | +.layout-content-wrap{ | ||
15 | + position:absolute; | ||
16 | + left: 0; | ||
17 | + right: 0; | ||
18 | + bottom: 0; | ||
19 | + top: 52px; | ||
20 | + overflow: hidden; | ||
21 | +} | ||
22 | +.layout-sider-wrap{ | ||
23 | + height: 100%; | ||
24 | + position: relative; | ||
25 | + overflow-y: hidden; | ||
26 | + overflow-x: hidden; | ||
27 | + background: #ffffff; | ||
28 | +} | ||
29 | +.layout-sider-wrap:hover{ | ||
30 | + overflow-y: auto; | ||
31 | +} | ||
32 | +.app-routes-wrap{ | ||
33 | + width: 100%; | ||
34 | + height: 100%; | ||
35 | + background-color: transparent; | ||
36 | +} | ||
37 | + | ||
38 | + | ||
39 | +//loading | ||
40 | +.sk-folding-cube { | ||
41 | + margin: 20px auto; | ||
42 | + width: 40px; | ||
43 | + height: 40px; | ||
44 | + position: relative; | ||
45 | + -webkit-transform: rotateZ(45deg); | ||
46 | + transform: rotateZ(45deg); | ||
47 | +} | ||
48 | +.sk-folding-cube .sk-cube { | ||
49 | + float: left; | ||
50 | + width: 50%; | ||
51 | + height: 50%; | ||
52 | + position: relative; | ||
53 | + -webkit-transform: scale(1.1); | ||
54 | + -ms-transform: scale(1.1); | ||
55 | + transform: scale(1.1); | ||
56 | +} | ||
57 | +.sk-folding-cube .sk-cube:before { | ||
58 | + content: ''; | ||
59 | + position: absolute; | ||
60 | + top: 0; | ||
61 | + left: 0; | ||
62 | + width: 100%; | ||
63 | + height: 100%; | ||
64 | + background-color: #333; | ||
65 | + -webkit-animation: sk-foldCubeAngle 2.4s infinite linear both; | ||
66 | + animation: sk-foldCubeAngle 2.4s infinite linear both; | ||
67 | + -webkit-transform-origin: 100% 100%; | ||
68 | + -ms-transform-origin: 100% 100%; | ||
69 | + transform-origin: 100% 100%; | ||
70 | +} | ||
71 | +.sk-folding-cube .sk-cube2 { | ||
72 | + -webkit-transform: scale(1.1) rotateZ(90deg); | ||
73 | + transform: scale(1.1) rotateZ(90deg); | ||
74 | +} | ||
75 | +.sk-folding-cube .sk-cube3 { | ||
76 | + -webkit-transform: scale(1.1) rotateZ(180deg); | ||
77 | + transform: scale(1.1) rotateZ(180deg); | ||
78 | +} | ||
79 | +.sk-folding-cube .sk-cube4 { | ||
80 | + -webkit-transform: scale(1.1) rotateZ(270deg); | ||
81 | + transform: scale(1.1) rotateZ(270deg); | ||
82 | +} | ||
83 | +.sk-folding-cube .sk-cube2:before { | ||
84 | + -webkit-animation-delay: 0.3s; | ||
85 | + animation-delay: 0.3s; | ||
86 | +} | ||
87 | +.sk-folding-cube .sk-cube3:before { | ||
88 | + -webkit-animation-delay: 0.6s; | ||
89 | + animation-delay: 0.6s; | ||
90 | +} | ||
91 | +.sk-folding-cube .sk-cube4:before { | ||
92 | + -webkit-animation-delay: 0.9s; | ||
93 | + animation-delay: 0.9s; | ||
94 | +} | ||
95 | +@-webkit-keyframes sk-foldCubeAngle { | ||
96 | + 0%, 10% { | ||
97 | + -webkit-transform: perspective(140px) rotateX(-180deg); | ||
98 | + transform: perspective(140px) rotateX(-180deg); | ||
99 | + opacity: 0; | ||
100 | + } 25%, 75% { | ||
101 | + -webkit-transform: perspective(140px) rotateX(0deg); | ||
102 | + transform: perspective(140px) rotateX(0deg); | ||
103 | + opacity: 1; | ||
104 | + } 90%, 100% { | ||
105 | + -webkit-transform: perspective(140px) rotateY(180deg); | ||
106 | + transform: perspective(140px) rotateY(180deg); | ||
107 | + opacity: 0; | ||
108 | + } | ||
109 | +} | ||
110 | +@keyframes sk-foldCubeAngle { | ||
111 | + 0%, 10% { | ||
112 | + -webkit-transform: perspective(140px) rotateX(-180deg); | ||
113 | + transform: perspective(140px) rotateX(-180deg); | ||
114 | + opacity: 0; | ||
115 | + } 25%, 75% { | ||
116 | + -webkit-transform: perspective(140px) rotateX(0deg); | ||
117 | + transform: perspective(140px) rotateX(0deg); | ||
118 | + opacity: 1; | ||
119 | + } 90%, 100% { | ||
120 | + -webkit-transform: perspective(140px) rotateY(180deg); | ||
121 | + transform: perspective(140px) rotateY(180deg); | ||
122 | + opacity: 0; | ||
123 | + } | ||
9 | } | 124 | } |
@@ -7,4 +7,5 @@ export const FETCH_X_REQUEST_ID = 'FETCH_X_REQUEST_ID'; | @@ -7,4 +7,5 @@ export const FETCH_X_REQUEST_ID = 'FETCH_X_REQUEST_ID'; | ||
7 | export const FETCH_FORM_NAME = 'FETCH_FORM_NAME'; | 7 | export const FETCH_FORM_NAME = 'FETCH_FORM_NAME'; |
8 | 8 | ||
9 | /*系统操作 */ | 9 | /*系统操作 */ |
10 | -export const SYSTEM_MENU_SELECTED_KEYS = 'SYSTEM_MENU_SELECTED_KEYS'; | ||
10 | +export const SYSTEM_MENU_SELECTED_KEYS = 'SYSTEM_MENU_SELECTED_KEYS';//选中菜单 | ||
11 | +export const SYSTEM_MENU_PERMS = 'SYSTEM_MENU_PERMS';//系统菜单权限 |
@@ -32,9 +32,8 @@ function* handldRouter() { | @@ -32,9 +32,8 @@ function* handldRouter() { | ||
32 | const { payload = {} } = routerAction; | 32 | const { payload = {} } = routerAction; |
33 | const { location = {} } = payload; | 33 | const { location = {} } = payload; |
34 | const { pathname = '' } = location; | 34 | const { pathname = '' } = location; |
35 | - // const { uaa: { uaa_perms = [] } } = state; | ||
36 | - // yield selectSysMenus(uaa_perms); | ||
37 | - yield selectSysMenus([]); | 35 | + const { system: { system_menu_perms = [] } } = state; |
36 | + yield selectSysMenus(system_menu_perms); | ||
38 | } | 37 | } |
39 | } | 38 | } |
40 | 39 |
@@ -3,7 +3,18 @@ import * as types from '../actionTypes'; | @@ -3,7 +3,18 @@ import * as types from '../actionTypes'; | ||
3 | import { typeToLowerCase, reducerFactory } from '../../utils/commonUtils'; | 3 | import { typeToLowerCase, reducerFactory } from '../../utils/commonUtils'; |
4 | 4 | ||
5 | const initialState = { | 5 | const initialState = { |
6 | - [typeToLowerCase(types.SYSTEM_MENU_SELECTED_KEYS)]: { openKeys: [], selectedKeys: [] } | 6 | + [typeToLowerCase(types.SYSTEM_MENU_SELECTED_KEYS)]: { openKeys: [], selectedKeys: [] }, |
7 | + [typeToLowerCase(types.SYSTEM_MENU_PERMS)]: [{ | ||
8 | + module: "home", | ||
9 | + module_name: "首页", | ||
10 | + parent_module: "", | ||
11 | + parent_module_name: "" | ||
12 | + }, { | ||
13 | + module: "statistics", | ||
14 | + module_name: "统计", | ||
15 | + parent_module: "", | ||
16 | + parent_module_name: "" | ||
17 | + }] | ||
7 | }; | 18 | }; |
8 | 19 | ||
9 | export default reduceReducers(initialState, reducerFactory); | 20 | export default reduceReducers(initialState, reducerFactory); |
@@ -6,12 +6,17 @@ import asyncComponent from '../AsyncComponent'; | @@ -6,12 +6,17 @@ import asyncComponent from '../AsyncComponent'; | ||
6 | const HomeContainer = asyncComponent( | 6 | const HomeContainer = asyncComponent( |
7 | () => import(/* webpackChunkName: "home" */'../../containers/home') | 7 | () => import(/* webpackChunkName: "home" */'../../containers/home') |
8 | ); | 8 | ); |
9 | +//统计 | ||
10 | +const StatisticsContainer = asyncComponent( | ||
11 | + () => import(/* webpackChunkName: "home" */'../../containers/home/StatisticsContainer') | ||
12 | +); | ||
9 | 13 | ||
10 | const homeRoute = (match) => { | 14 | const homeRoute = (match) => { |
11 | return ( | 15 | return ( |
12 | <Switch> | 16 | <Switch> |
13 | {/* 首页 */} | 17 | {/* 首页 */} |
14 | <Route exact={true} path={`${match.path}/home`} component={HomeContainer} /> | 18 | <Route exact={true} path={`${match.path}/home`} component={HomeContainer} /> |
19 | + <Route exact={true} path={`${match.path}/statistics`} component={StatisticsContainer} /> | ||
15 | </Switch> | 20 | </Switch> |
16 | ); | 21 | ); |
17 | }; | 22 | }; |
@@ -50,7 +50,7 @@ class LayoutRoute extends React.Component { | @@ -50,7 +50,7 @@ class LayoutRoute extends React.Component { | ||
50 | headcccc | 50 | headcccc |
51 | <a href="/signOut">退出</a> | 51 | <a href="/signOut">退出</a> |
52 | </Header> | 52 | </Header> |
53 | - <Layout className={cx("layout-content-wrap")}> | 53 | + <Layout className={cx("layout-content-wrap")} > |
54 | <Sider className="layout-sider-wrap" collapsedWidth={0} collapsible={false} width={180}> | 54 | <Sider className="layout-sider-wrap" collapsedWidth={0} collapsible={false} width={180}> |
55 | <div> | 55 | <div> |
56 | <SysMenu></SysMenu> | 56 | <SysMenu></SysMenu> |
请
注册
或
登录
后发表评论