Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
pro-blocks
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
duanledexianxianxian
pro-blocks
Commits
eb10d864
Commit
eb10d864
authored
Aug 14, 2018
by
sorrycc
Committed by
陈帅
Aug 17, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove unused files
parent
13dc0de0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
309 deletions
+0
-309
src/layouts/BasicLayout.js
src/layouts/BasicLayout.js
+0
-309
No files found.
src/layouts/BasicLayout.js
deleted
100644 → 0
View file @
13dc0de0
import
React
,
{
Fragment
}
from
'
react
'
;
import
PropTypes
from
'
prop-types
'
;
import
{
Layout
,
Icon
,
message
}
from
'
antd
'
;
import
DocumentTitle
from
'
react-document-title
'
;
import
{
connect
}
from
'
dva
'
;
import
{
Route
,
Redirect
,
Switch
,
routerRedux
}
from
'
dva/router
'
;
import
{
ContainerQuery
}
from
'
react-container-query
'
;
import
classNames
from
'
classnames
'
;
import
pathToRegexp
from
'
path-to-regexp
'
;
import
{
enquireScreen
,
unenquireScreen
}
from
'
enquire-js
'
;
import
GlobalHeader
from
'
../components/GlobalHeader
'
;
import
GlobalFooter
from
'
../components/GlobalFooter
'
;
import
SiderMenu
from
'
../components/SiderMenu
'
;
import
NotFound
from
'
../routes/Exception/404
'
;
import
{
getRoutes
}
from
'
../utils/utils
'
;
import
Authorized
from
'
../utils/Authorized
'
;
import
{
getMenuData
}
from
'
../common/menu
'
;
import
logo
from
'
../assets/logo.svg
'
;
const
{
Content
,
Header
,
Footer
}
=
Layout
;
const
{
AuthorizedRoute
,
check
}
=
Authorized
;
/**
* 根据菜单取得重定向地址.
*/
const
redirectData
=
[];
const
getRedirect
=
item
=>
{
if
(
item
&&
item
.
children
)
{
if
(
item
.
children
[
0
]
&&
item
.
children
[
0
].
path
)
{
redirectData
.
push
({
from
:
`
${
item
.
path
}
`
,
to
:
`
${
item
.
children
[
0
].
path
}
`
,
});
item
.
children
.
forEach
(
children
=>
{
getRedirect
(
children
);
});
}
}
};
getMenuData
().
forEach
(
getRedirect
);
/**
* 获取面包屑映射
* @param {Object} menuData 菜单配置
* @param {Object} routerData 路由配置
*/
const
getBreadcrumbNameMap
=
(
menuData
,
routerData
)
=>
{
const
result
=
{};
const
childResult
=
{};
for
(
const
i
of
menuData
)
{
if
(
!
routerData
[
i
.
path
])
{
result
[
i
.
path
]
=
i
;
}
if
(
i
.
children
)
{
Object
.
assign
(
childResult
,
getBreadcrumbNameMap
(
i
.
children
,
routerData
));
}
}
return
Object
.
assign
({},
routerData
,
result
,
childResult
);
};
const
query
=
{
'
screen-xs
'
:
{
maxWidth
:
575
,
},
'
screen-sm
'
:
{
minWidth
:
576
,
maxWidth
:
767
,
},
'
screen-md
'
:
{
minWidth
:
768
,
maxWidth
:
991
,
},
'
screen-lg
'
:
{
minWidth
:
992
,
maxWidth
:
1199
,
},
'
screen-xl
'
:
{
minWidth
:
1200
,
maxWidth
:
1599
,
},
'
screen-xxl
'
:
{
minWidth
:
1600
,
},
};
let
isMobile
;
enquireScreen
(
b
=>
{
isMobile
=
b
;
});
@
connect
(({
user
,
global
=
{},
loading
})
=>
({
currentUser
:
user
.
currentUser
,
collapsed
:
global
.
collapsed
,
fetchingNotices
:
loading
.
effects
[
'
global/fetchNotices
'
],
notices
:
global
.
notices
,
}))
export
default
class
BasicLayout
extends
React
.
PureComponent
{
static
childContextTypes
=
{
location
:
PropTypes
.
object
,
breadcrumbNameMap
:
PropTypes
.
object
,
};
state
=
{
isMobile
,
};
getChildContext
()
{
const
{
location
,
routerData
}
=
this
.
props
;
return
{
location
,
breadcrumbNameMap
:
getBreadcrumbNameMap
(
getMenuData
(),
routerData
),
};
}
componentDidMount
()
{
this
.
enquireHandler
=
enquireScreen
(
mobile
=>
{
this
.
setState
({
isMobile
:
mobile
,
});
});
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
user/fetchCurrent
'
,
});
}
componentWillUnmount
()
{
unenquireScreen
(
this
.
enquireHandler
);
}
getPageTitle
()
{
const
{
routerData
,
location
}
=
this
.
props
;
const
{
pathname
}
=
location
;
let
title
=
'
Ant Design Pro
'
;
let
currRouterData
=
null
;
// match params path
Object
.
keys
(
routerData
).
forEach
(
key
=>
{
if
(
pathToRegexp
(
key
).
test
(
pathname
))
{
currRouterData
=
routerData
[
key
];
}
});
if
(
currRouterData
&&
currRouterData
.
name
)
{
title
=
`
${
currRouterData
.
name
}
- Ant Design Pro`
;
}
return
title
;
}
getBaseRedirect
=
()
=>
{
// According to the url parameter to redirect
// 这里是重定向的,重定向到 url 的 redirect 参数所示地址
const
urlParams
=
new
URL
(
window
.
location
.
href
);
const
redirect
=
urlParams
.
searchParams
.
get
(
'
redirect
'
);
// Remove the parameters in the url
if
(
redirect
)
{
urlParams
.
searchParams
.
delete
(
'
redirect
'
);
window
.
history
.
replaceState
(
null
,
'
redirect
'
,
urlParams
.
href
);
}
else
{
const
{
routerData
}
=
this
.
props
;
// get the first authorized route path in routerData
const
authorizedPath
=
Object
.
keys
(
routerData
).
find
(
item
=>
check
(
routerData
[
item
].
authority
,
item
)
&&
item
!==
'
/
'
);
return
authorizedPath
;
}
return
redirect
;
};
handleMenuCollapse
=
collapsed
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
global/changeLayoutCollapsed
'
,
payload
:
collapsed
,
});
};
handleNoticeClear
=
type
=>
{
message
.
success
(
`清空了
${
type
}
`
);
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
global/clearNotices
'
,
payload
:
type
,
});
};
handleMenuClick
=
({
key
})
=>
{
const
{
dispatch
}
=
this
.
props
;
if
(
key
===
'
triggerError
'
)
{
dispatch
(
routerRedux
.
push
(
'
/exception/trigger
'
));
return
;
}
if
(
key
===
'
logout
'
)
{
dispatch
({
type
:
'
login/logout
'
,
});
}
};
handleNoticeVisibleChange
=
visible
=>
{
const
{
dispatch
}
=
this
.
props
;
if
(
visible
)
{
dispatch
({
type
:
'
global/fetchNotices
'
,
});
}
};
render
()
{
const
{
currentUser
,
collapsed
,
fetchingNotices
,
notices
,
routerData
,
match
,
location
,
}
=
this
.
props
;
const
{
isMobile
:
mb
}
=
this
.
state
;
const
baseRedirect
=
this
.
getBaseRedirect
();
const
layout
=
(
<
Layout
>
<
SiderMenu
logo
=
{
logo
}
// 不带Authorized参数的情况下如果没有权限,会强制跳到403界面
// If you do not have the Authorized parameter
// you will be forced to jump to the 403 interface without permission
Authorized
=
{
Authorized
}
menuData
=
{
getMenuData
()}
collapsed
=
{
collapsed
}
location
=
{
location
}
isMobile
=
{
mb
}
onCollapse
=
{
this
.
handleMenuCollapse
}
/
>
<
Layout
>
<
Header
style
=
{{
padding
:
0
}}
>
<
GlobalHeader
logo
=
{
logo
}
currentUser
=
{
currentUser
}
fetchingNotices
=
{
fetchingNotices
}
notices
=
{
notices
}
collapsed
=
{
collapsed
}
isMobile
=
{
mb
}
onNoticeClear
=
{
this
.
handleNoticeClear
}
onCollapse
=
{
this
.
handleMenuCollapse
}
onMenuClick
=
{
this
.
handleMenuClick
}
onNoticeVisibleChange
=
{
this
.
handleNoticeVisibleChange
}
/
>
<
/Header
>
<
Content
style
=
{{
margin
:
'
24px 24px 0
'
,
height
:
'
100%
'
}}
>
<
Switch
>
{
redirectData
.
map
(
item
=>
(
<
Redirect
key
=
{
item
.
from
}
exact
from
=
{
item
.
from
}
to
=
{
item
.
to
}
/
>
))}
{
getRoutes
(
match
.
path
,
routerData
).
map
(
item
=>
(
<
AuthorizedRoute
key
=
{
item
.
key
}
path
=
{
item
.
path
}
component
=
{
item
.
component
}
exact
=
{
item
.
exact
}
authority
=
{
item
.
authority
}
redirectPath
=
"
/exception/403
"
/>
))}
<
Redirect
exact
from
=
"
/
"
to
=
{
baseRedirect
}
/
>
<
Route
render
=
{
NotFound
}
/
>
<
/Switch
>
<
/Content
>
<
Footer
style
=
{{
padding
:
0
}}
>
<
GlobalFooter
links
=
{[
{
key
:
'
Pro 首页
'
,
title
:
'
Pro 首页
'
,
href
:
'
http://pro.ant.design
'
,
blankTarget
:
true
,
},
{
key
:
'
github
'
,
title
:
<
Icon
type
=
"
github
"
/>
,
href
:
'
https://github.com/ant-design/ant-design-pro
'
,
blankTarget
:
true
,
},
{
key
:
'
Ant Design
'
,
title
:
'
Ant Design
'
,
href
:
'
http://ant.design
'
,
blankTarget
:
true
,
},
]}
copyright
=
{
<
Fragment
>
Copyright
<
Icon
type
=
"
copyright
"
/>
2018
蚂蚁金服体验技术部出品
<
/Fragment
>
}
/
>
<
/Footer
>
<
/Layout
>
<
/Layout
>
);
return
(
<
DocumentTitle
title
=
{
this
.
getPageTitle
()}
>
<
ContainerQuery
query
=
{
query
}
>
{
params
=>
<
div
className
=
{
classNames
(
params
)}
>
{
layout
}
<
/div>
}
<
/ContainerQuery
>
<
/DocumentTitle
>
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment