正在显示
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> |
请
注册
或
登录
后发表评论