feat: Add administrator link in header in user center page
1. Add administrator link in header in user center page 2. Refactor overview component in user center 3. Refactor HeaderRightContent component 4. Add isUserCenterPage prop in containers Change-Id: I03357e70d4fbe860740c3663f35aef63457835bb
This commit is contained in:
parent
5d69f66eac
commit
a647053b40
@ -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>
|
||||||
);
|
);
|
||||||
|
@ -12,42 +12,43 @@
|
|||||||
// 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"
|
className={styles['single-link']}
|
||||||
className={styles['single-link']}
|
>
|
||||||
>
|
{t('Console')}
|
||||||
{t('Console')}
|
</Button>
|
||||||
</Button>
|
);
|
||||||
);
|
}
|
||||||
} else if (hasAdminPageRole) {
|
return null;
|
||||||
linkRender = (
|
}
|
||||||
|
|
||||||
|
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) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
renderExtra() {
|
||||||
<div className={styles.right}>
|
return null;
|
||||||
<Row
|
}
|
||||||
justify="space-between"
|
|
||||||
align="middle"
|
render() {
|
||||||
gutter={10}
|
return (
|
||||||
// wrap={false}
|
<div className={styles.right}>
|
||||||
>
|
<Row justify="space-between" align="middle" gutter={10}>
|
||||||
<Col>{linkRender}</Col>
|
<Col>
|
||||||
<Col>
|
{this.renderConsole()}
|
||||||
<Avatar menu />
|
{this.renderAdministrator()}
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
{this.renderExtra()}
|
||||||
</div>
|
<Col>
|
||||||
);
|
<Avatar menu />
|
||||||
};
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export default GlobalHeaderRight;
|
export default GlobalHeaderRight;
|
||||||
|
@ -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() {
|
||||||
|
@ -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));
|
||||||
|
Loading…
Reference in New Issue
Block a user