29 lines
1.5 KiB
JavaScript
29 lines
1.5 KiB
JavaScript
import React from 'react';
|
|
import { List, Button, Avatar } from 'antd';
|
|
import { UserOutlined } from '@ant-design/icons';
|
|
import Style from './web.module.less';
|
|
import EmptyBody from './emptyBody';
|
|
export default function Render(props) {
|
|
const { avatar, isLoggedIn, refreshing, isRoot, nickname, Body, } = props.data;
|
|
const { doLogin, t, gotoUserManage, gotoMyInfo } = props.methods;
|
|
return (<div className={Style.container}>
|
|
<div className={Style.userInfo}>
|
|
{avatar ? (<Avatar className={Style.avatar} src={avatar}/>) : (<Avatar className={Style.avatar} icon={<UserOutlined className={Style.userIcon}/>}/>)}
|
|
<span className={Style.nickname}>{nickname || '未设置'}</span>
|
|
{isLoggedIn ? (<Button type="primary" size="small" disabled={refreshing} loading={refreshing} onClick={() => gotoMyInfo()}>
|
|
{t('common::action.update')}
|
|
</Button>) : (<Button size="small" disabled={refreshing} loading={refreshing} onClick={() => doLogin()}>
|
|
{t('login')}
|
|
</Button>)}
|
|
</div>
|
|
<div style={{ flex: 1 }}>
|
|
{Body ? Body : <EmptyBody />}
|
|
</div>
|
|
<List className={Style.list} split={true}>
|
|
{isRoot && (<List.Item onClick={() => gotoUserManage()}>
|
|
<List.Item.Meta avatar={<UserOutlined />} title="用户管理"/>
|
|
</List.Item>)}
|
|
</List>
|
|
</div>);
|
|
}
|