3.10 工程代码同步master
This commit is contained in:
@ -46,19 +46,17 @@ class AvatarDropdown extends React.Component<GlobalHeaderRightProps> {
|
||||
} = this.props;
|
||||
const menuHeaderDropdown = (
|
||||
<Menu className={styles.menu} selectedKeys={[]} onClick={this.onMenuClick}>
|
||||
{menu && (
|
||||
|
||||
<Menu.Item key="center">
|
||||
<UserOutlined />
|
||||
个人中心
|
||||
</Menu.Item>
|
||||
)}
|
||||
{menu && (
|
||||
|
||||
<Menu.Item key="settings">
|
||||
<SettingOutlined />
|
||||
个人设置
|
||||
</Menu.Item>
|
||||
)}
|
||||
{menu && <Menu.Divider />}
|
||||
|
||||
|
||||
<Menu.Item key="logout">
|
||||
<LogoutOutlined />
|
||||
|
@ -1,80 +1,89 @@
|
||||
import { Tooltip, Tag } from 'antd';
|
||||
import { Settings as ProSettings } from '@ant-design/pro-layout';
|
||||
import { QuestionCircleOutlined } from '@ant-design/icons';
|
||||
import React from 'react';
|
||||
import { connect, ConnectProps, SelectLang } from 'umi';
|
||||
import { Avatar, Dropdown, Menu, message } from 'antd';
|
||||
import { DownOutlined, UserOutlined, UserSwitchOutlined, CarryOutOutlined, HomeOutlined,ImportOutlined } from '@ant-design/icons';
|
||||
import React, { useEffect } from 'react';
|
||||
import moment from 'moment'
|
||||
import { connect, history } from 'umi';
|
||||
import { ConnectState } from '@/models/connect';
|
||||
import Avatar from './AvatarDropdown';
|
||||
import HeaderSearch from '../HeaderSearch';
|
||||
import styles from './index.less';
|
||||
import logo from '../../assets/logo.svg';
|
||||
import './index.less';
|
||||
import { getMenu, getLogout } from './services'
|
||||
import { getSessionUserData } from "@/utils/session";
|
||||
|
||||
export interface GlobalHeaderRightProps extends Partial<ConnectProps>, Partial<ProSettings> {
|
||||
theme?: ProSettings['navTheme'] | 'realDark';
|
||||
}
|
||||
|
||||
const ENVTagColor = {
|
||||
dev: 'orange',
|
||||
test: 'green',
|
||||
pre: '#87d068',
|
||||
};
|
||||
|
||||
const GlobalHeaderRight: React.SFC<GlobalHeaderRightProps> = (props) => {
|
||||
const { theme, layout } = props;
|
||||
let className = styles.right;
|
||||
|
||||
if (theme === 'dark' && layout === 'top') {
|
||||
className = `${styles.right} ${styles.dark}`;
|
||||
const GlobalHeaderRight: React.FC<{}> = (props) => {
|
||||
// let className = styles.right;
|
||||
let data = getSessionUserData();
|
||||
const [dataMenu, setDataMenu] = React.useState<any>([]);
|
||||
const handelRole = (item: any)=> {
|
||||
sessionStorage.setItem('roleData', JSON.stringify(item));
|
||||
sessionStorage.setItem('roleAuthority', JSON.stringify([item.roleCode]));
|
||||
let params = {
|
||||
roleIdList:[item.roleId]
|
||||
}
|
||||
history.push('/Dashboard')
|
||||
window.location.reload()
|
||||
getMenu(params).then(res=>{
|
||||
if(res?.code == 1){
|
||||
setDataMenu(res?.data)
|
||||
}else {
|
||||
message.error("数据错误请联系管理员")
|
||||
}
|
||||
})
|
||||
}
|
||||
//专家角色退出登录
|
||||
const toLogin = () => {
|
||||
let date = {
|
||||
mall3_token: sessionStorage.getItem('Authorization')
|
||||
}
|
||||
getLogout({ ...date }).then((res) => {
|
||||
if (res.success) {
|
||||
window.location.href = "/userformal/login"
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const droMenu = (
|
||||
<Menu style={{top:"17px"}}>
|
||||
{data?.authorityList != undefined ?
|
||||
data?.authorityList?.map((item: any,index:any) => (
|
||||
<Menu.Item key={index}>
|
||||
<a target="_blank" rel="noopener noreferrer" onClick={()=>handelRole(item)}>{item.roleName}</a>
|
||||
</Menu.Item>
|
||||
)) : null}
|
||||
{data?.roleIds == "ebtp-expert" ? (
|
||||
<>
|
||||
<Menu.Divider />
|
||||
<Menu.Item key="exit">
|
||||
<a key="1" onClick={() => toLogin()}>退出登录</a>
|
||||
</Menu.Item>
|
||||
</>
|
||||
) : null}
|
||||
</Menu>
|
||||
);
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<HeaderSearch
|
||||
className={`${styles.action} ${styles.search}`}
|
||||
placeholder="站内搜索"
|
||||
defaultValue="umi ui"
|
||||
options={[
|
||||
{ label: <a href="https://umijs.org/zh/guide/umi-ui.html">umi ui</a>, value: 'umi ui' },
|
||||
{
|
||||
label: <a href="next.ant.design">Ant Design</a>,
|
||||
value: 'Ant Design',
|
||||
},
|
||||
{
|
||||
label: <a href="https://protable.ant.design/">Pro Table</a>,
|
||||
value: 'Pro Table',
|
||||
},
|
||||
{
|
||||
label: <a href="https://prolayout.ant.design/">Pro Layout</a>,
|
||||
value: 'Pro Layout',
|
||||
},
|
||||
]}
|
||||
// onSearch={value => {
|
||||
// //console.log('input', value);
|
||||
// }}
|
||||
/>
|
||||
<Tooltip title="使用文档">
|
||||
<a
|
||||
style={{
|
||||
color: 'inherit',
|
||||
}}
|
||||
target="_blank"
|
||||
href="https://pro.ant.design/docs/getting-started"
|
||||
rel="noopener noreferrer"
|
||||
className={styles.action}
|
||||
>
|
||||
<QuestionCircleOutlined />
|
||||
</a>
|
||||
</Tooltip>
|
||||
<Avatar />
|
||||
{REACT_APP_ENV && (
|
||||
<span>
|
||||
<Tag color={ENVTagColor[REACT_APP_ENV]}>{REACT_APP_ENV}</Tag>
|
||||
</span>
|
||||
)}
|
||||
<SelectLang className={styles.action} />
|
||||
<div className="top-menu">
|
||||
<div className="left-logo">
|
||||
<img src={logo} alt=""/>中国联通智慧供应链平台 | 招标采购中心
|
||||
</div>
|
||||
<ul className="right-btns">
|
||||
{/* <li><ImportOutlined /><a onClick={()=>window.open(REACT_APP_MALL_V2_URL)}>交易平台2.0</a></li> */}
|
||||
<li><HomeOutlined /><a onClick={()=>history.push('/Dashboard')}>首页</a></li>
|
||||
<li><CarryOutOutlined />{moment().format("YYYY-MM-DD")}</li>
|
||||
{data?.organizationName == null ? null : (<li><UserSwitchOutlined />{data?.organizationName}</li>)}
|
||||
<li>
|
||||
<Avatar size="small" src="https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png" style={{width: '30px'}}/>
|
||||
<Dropdown overlay={droMenu}>
|
||||
<a className="antd-dropdown-link" style={{color:"#fff"}}>
|
||||
{data?.fullName} <DownOutlined/>
|
||||
</a>
|
||||
</Dropdown>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default connect(({ settings }: ConnectState) => ({
|
||||
theme: settings.navTheme,
|
||||
layout: settings.layout,
|
||||
|
@ -1,81 +1,36 @@
|
||||
@import '~antd/es/style/themes/default.less';
|
||||
|
||||
@pro-header-hover-bg: rgba(0, 0, 0, 0.025);
|
||||
|
||||
.menu {
|
||||
:global(.anticon) {
|
||||
margin-right: 8px;
|
||||
}
|
||||
:global(.ant-dropdown-menu-item) {
|
||||
min-width: 160px;
|
||||
}
|
||||
}
|
||||
|
||||
.right {
|
||||
display: flex;
|
||||
float: right;
|
||||
height: 48px;
|
||||
margin-left: auto;
|
||||
overflow: hidden;
|
||||
.action {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
padding: 0 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s;
|
||||
> span {
|
||||
vertical-align: middle;
|
||||
}
|
||||
&:hover {
|
||||
background: @pro-header-hover-bg;
|
||||
}
|
||||
&:global(.opened) {
|
||||
background: @pro-header-hover-bg;
|
||||
.top-menu {
|
||||
.left-logo {
|
||||
position:absolute;
|
||||
float: left;
|
||||
left: 0;
|
||||
top: 4px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
img {
|
||||
height: 30px;
|
||||
margin-left: 20px;
|
||||
margin-right: 10px;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
}
|
||||
}
|
||||
.search {
|
||||
padding: 0 12px;
|
||||
&:hover {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
.account {
|
||||
.avatar {
|
||||
margin: ~'calc((@{layout-header-height} - 24px) / 2)' 0;
|
||||
margin-right: 8px;
|
||||
color: @primary-color;
|
||||
vertical-align: top;
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dark {
|
||||
.action {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
> span {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
&:hover,
|
||||
&:global(.opened) {
|
||||
background: @primary-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:global(.ant-pro-global-header) {
|
||||
.dark {
|
||||
.action {
|
||||
color: @text-color;
|
||||
> span {
|
||||
color: @text-color;
|
||||
.right-btns {
|
||||
float: right;
|
||||
li {
|
||||
float: left;
|
||||
line-height: 56px;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 0 14px;
|
||||
list-style: none;
|
||||
span {
|
||||
padding-right: 6px;
|
||||
font-size: 16px;
|
||||
}
|
||||
&:hover {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
> span {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
a {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
24
src/components/GlobalHeader/services.ts
Normal file
24
src/components/GlobalHeader/services.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export async function getMenu(params: any) {
|
||||
let requestUrl = '/api/core-service-usercenter-public/v1.0/menu/findMenuList';
|
||||
return request(requestUrl, {
|
||||
method: 'POST',
|
||||
data: params,
|
||||
});
|
||||
}
|
||||
|
||||
export async function fgetUserMsg(params: any) {
|
||||
return request('/api/biz-service-ebtp-extend/v1/userinfo/get', {
|
||||
method: 'GET',
|
||||
headers: {'Authorization': params},
|
||||
data: params,
|
||||
});
|
||||
}
|
||||
|
||||
export async function getLogout(params: any) { // 退出登录,注销
|
||||
return request('/api/auth/logout', {
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user