React模拟后台项目(六)components文件配置

15 篇文章 1 订阅

一、错误处理 components/err/404.js

import React, { Component } from 'react'

 class Err404 extends Component {
    render() {
        return (
            <div>
                this is Err404 index
            </div>
        )
    }
}

export default Err404

二、顶部和侧边栏 components/frame/index.js

// 导入库
import React, {Component} from 'react';
import {
    BrowserRouter as Router,
    Link,
    // withRouter  
} from "react-router-dom";
import screenfull from 'screenfull'

// 导入UI
import {
    Button,
    message,
} from 'antd'

// 导入样式
import Logo from '../../static/img/logo.png'
import {
    LayoutDiv
} from './style'

// 导入组件
import { Layout, Menu, Breadcrumb } from 'antd';
import { HomeOutlined, UserOutlined, ShoppingOutlined, FileTextOutlined, NotificationOutlined } from '@ant-design/icons';

const { SubMenu } = Menu;
const { Header, Content, Sider } = Layout;

class LayoutFrom extends Component {
    // 退出
    logOut(){
        // 清除信息
        sessionStorage.clear()
        localStorage.clear()
        // this.props.history.push('#/login') // 不可使用此方式
        message.success('退出成功')
        setTimeout(() => {
            window.location.href='/login'
        }, 1000)    
    }
    // 全屏
    fullScreen = () => {
        screenfull.toggle()
    }
    render(){
        return (
            <LayoutDiv>
                <Layout>
                <Header className="header">
                <div className="logo" />
                <img src={Logo} alt="Logo" height="64"></img>
                <div style={{width: 350, float: 'right'}}>
                    {/* 全屏 */}
                    <Button
                        // type="link"
                        shape="circle" 
                        // icon="fullscreen" 
                        onClick = {this.fullScreen}
                    >全屏
                    </Button>
                    <span style={{color:'red'}}>欢迎:{JSON.parse(localStorage.getItem('userinfo')).username}</span>

                    {/* 退出登录 临时 */}
                    {/* <Link to='/login'>退出登录</Link> */}
                    <Link to='/login'>
                        <Button 
                        type="primary" 
                        danger
                        onClick={this.logOut.bind(this)}
                        >
                            退出登陆
                        </Button>
                    </Link> 
                    </div>
                </Header>
                <Router>
                <Layout>                
                <Sider width={200} className="site-layout-background">
                    <Menu
                    mode="inline"
                    defaultSelectedKeys={['1']}
                    defaultOpenKeys={['sub1']}
                    style={{ height: '100%', borderRight: 0 }}
                    >
                    <SubMenu
                        key="sub1"
                        title={
                        <span>                           
                            <Link to="/admin">
                                <HomeOutlined />首页
                            </Link>                         
                        </span>
                        }
                    >
                    </SubMenu>
                    <SubMenu
                        key="sub2"
                        title={
                        <span>
                            <UserOutlined />
                            用户管理
                        </span>
                        }
                    >
                        <Menu.Item key="1"><Link to="/admin/users">用户列表</Link></Menu.Item>
                        <Menu.Item key="2"><Link to="/admin/users/create">添加用户</Link></Menu.Item>
                    </SubMenu>
                    <SubMenu
                        key="sub3"
                        title={
                        <span>
                            <ShoppingOutlined />
                            商品管理
                        </span>
                        }
                    >
                        <Menu.Item key="3"><Link to="/admin/goods">商品列表</Link></Menu.Item>
                        <Menu.Item key="4"><Link to="/admin/goods/create">添加商品</Link></Menu.Item>
                    </SubMenu>
                    <SubMenu
                        key="sub4"
                        title={
                        <span>
                            <FileTextOutlined />
                            订单管理
                        </span>
                        }
                    >
                         <Menu.Item key="5"><Link to="/admin/orders">订单列表</Link></Menu.Item>
                        <Menu.Item key="6"><Link to="/admin/orders/create">添加订单</Link></Menu.Item>                     
                    </SubMenu>
                    <SubMenu
                        key="sub5"
                        title={
                        <span>
                            <NotificationOutlined />
                            权限设置
                        </span>
                        }
                    >
                        <Menu.Item key="7"><Link to="/admin/roles">角色列表</Link></Menu.Item>
                        <Menu.Item key="8"><Link to="/admin/powers">权限列表</Link></Menu.Item>
                    </SubMenu>
                    </Menu>
                </Sider>
                

                <Layout style={{ padding: '0 24px 24px' }}>
                    <Breadcrumb style={{ margin: '16px 0' }}>
                    <Breadcrumb.Item>Home</Breadcrumb.Item>
                    <Breadcrumb.Item>List</Breadcrumb.Item>
                    <Breadcrumb.Item>App</Breadcrumb.Item>                  
                    </Breadcrumb>
                    
                    <Content
                    className="site-layout-background"
                    style={{
                        padding: 24,
                        margin: 0,
                        minHeight: 280,
                    }}
                    >
                    {this.props.children}
                    </Content>                                   
                </Layout>                             
                </Layout>
                </Router>
            </Layout>
            </LayoutDiv>
        )
    }
}

export default LayoutFrom

三、顶部和侧边栏样式文件 components/frame/style.js

import styled from 'styled-components'

export const LayoutDiv = styled.div`
    width: 100%;
    height: 100%;
    .ant-layout{
        height: 100%;
        .ant-layout-header{
            padding: 0;
        }
    }
`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值