Merge "feat: Add administrator link in header in user center page"

This commit is contained in:
Zuul 2021-09-14 04:04:42 +00:00 committed by Gerrit Code Review
commit c1b971fbc0
4 changed files with 72 additions and 60 deletions

View File

@ -152,13 +152,8 @@ class AvatarDropdown extends React.Component {
shape="circle" shape="circle"
icon={<UserOutlined />} icon={<UserOutlined />}
className={styles.avatar} className={styles.avatar}
onClick={() => { href="/user/center"
const { rootStore } = this.props;
rootStore.routing.push('/user/center');
}}
/> />
{/* <Avatar size="small" className={styles.avatar} src={currentUser.avatar} alt="avatar" /> */}
{/* <span className={styles.name}>{currentUser.name}</span> */}
</div> </div>
</HeaderDropdown> </HeaderDropdown>
); );

View File

@ -12,32 +12,25 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import React from 'react'; import React, { PureComponent } from 'react';
import { Button, Col, Row } from 'antd'; import { Button, Col, Row } from 'antd';
import { isUserCenterPage } from 'utils';
import Avatar from './AvatarDropdown'; import Avatar from './AvatarDropdown';
import styles from './index.less'; import styles from './index.less';
// eslint-disable-next-line no-unused-vars export class GlobalHeaderRight extends PureComponent {
const gotoConsole = (type, props) => { get isAdminPage() {
const { rootStore } = props; const { isAdminPage = false } = this.props;
rootStore.clearData(); return isAdminPage;
if (type === 0) {
rootStore.routing.push('/base/overview');
} else {
rootStore.routing.push('/base/overview-admin');
} }
};
const GlobalHeaderRight = (props) => { get isUserCenterPage() {
const { const { isUserCenterPage = false } = this.props;
isAdminPage = false, return isUserCenterPage;
rootStore: { hasAdminPageRole = false } = {}, }
location: { pathname },
} = props; renderConsole() {
let linkRender = null; if (this.isAdminPage || this.isUserCenterPage) {
if (isAdminPage || isUserCenterPage(pathname)) { return (
linkRender = (
<Button <Button
type="link" type="link"
href="/base/overview" href="/base/overview"
@ -46,8 +39,16 @@ const GlobalHeaderRight = (props) => {
{t('Console')} {t('Console')}
</Button> </Button>
); );
} else if (hasAdminPageRole) { }
linkRender = ( return null;
}
renderAdministrator() {
const { rootStore: { hasAdminPageRole = false } = {} } = this.props;
if (!hasAdminPageRole || this.isAdminPage) {
return null;
}
return (
<Button <Button
type="link" type="link"
href="/base/overview-admin" href="/base/overview-admin"
@ -58,21 +59,26 @@ const GlobalHeaderRight = (props) => {
); );
} }
renderExtra() {
return null;
}
render() {
return ( return (
<div className={styles.right}> <div className={styles.right}>
<Row <Row justify="space-between" align="middle" gutter={10}>
justify="space-between" <Col>
align="middle" {this.renderConsole()}
gutter={10} {this.renderAdministrator()}
// wrap={false} </Col>
> {this.renderExtra()}
<Col>{linkRender}</Col>
<Col> <Col>
<Avatar menu /> <Avatar menu />
</Col> </Col>
</Row> </Row>
</div> </div>
); );
}; }
}
export default GlobalHeaderRight; export default GlobalHeaderRight;

View File

@ -44,6 +44,11 @@ export class BaseLayout extends Component {
return isAdminPage(pathname); return isAdminPage(pathname);
} }
get isUserCenterPage() {
const { pathname } = this.props.location;
return isUserCenterPage(pathname);
}
get rootStore() { get rootStore() {
return this.props.rootStore; return this.props.rootStore;
} }
@ -65,11 +70,8 @@ export class BaseLayout extends Component {
} }
get originMenu() { get originMenu() {
const {
location: { pathname },
} = this.props;
let ret = []; let ret = [];
if (isUserCenterPage(pathname)) { if (this.isUserCenterPage) {
ret = renderUserMenu(i18n.t); ret = renderUserMenu(i18n.t);
} else if (this.isAdminPage) { } else if (this.isAdminPage) {
ret = renderAdminMenu(i18n.t); ret = renderAdminMenu(i18n.t);
@ -223,7 +225,11 @@ export class BaseLayout extends Component {
} }
renderHeader = () => ( renderHeader = () => (
<GlobalHeader {...this.props} isAdminPage={this.isAdminPage} /> <GlobalHeader
{...this.props}
isAdminPage={this.isAdminPage}
isUserCenterPage={this.isUserCenterPage}
/>
); );
render() { render() {

View File

@ -19,7 +19,7 @@ import globalUserStore from 'stores/keystone/user';
import ProfileIcon from 'asset/image/profile.svg'; import ProfileIcon from 'asset/image/profile.svg';
import styles from './styles.less'; import styles from './styles.less';
class Index extends Component { export class Overview extends Component {
componentDidMount() { componentDidMount() {
this.fetchData(); this.fetchData();
} }
@ -34,7 +34,7 @@ class Index extends Component {
renderInfoItem(item) { renderInfoItem(item) {
return ( return (
<Row className={styles.user_info_detail_item}> <Row className={styles.user_info_detail_item}>
<Col span={6}>{t(item.label)}</Col> <Col span={6}>{item.label}</Col>
<Col span={18}>{item.value}</Col> <Col span={18}>{item.value}</Col>
</Row> </Row>
); );
@ -75,13 +75,18 @@ class Index extends Component {
); );
} }
renderExtra() {
return null;
}
render() { render() {
return ( return (
<Layout.Content className={styles.content}> <Layout.Content className={styles.content}>
<Row className={styles.user_info_card}>{this.renderUserInfo()}</Row> <Row className={styles.user_info_card}>{this.renderUserInfo()}</Row>
{this.renderExtra()}
</Layout.Content> </Layout.Content>
); );
} }
} }
export default inject('rootStore')(observer(Index)); export default inject('rootStore')(observer(Overview));