修改布局细节问题
This commit is contained in:
@@ -69,7 +69,7 @@
|
||||
methods: {
|
||||
onSelect(obj) {
|
||||
this.$emit('menuSelect', obj)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -26,7 +26,7 @@ export default {
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
openKeys: [],
|
||||
selectedKeys: [],
|
||||
@@ -40,11 +40,11 @@ export default {
|
||||
return keys
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
mounted() {
|
||||
this.updateMenu()
|
||||
},
|
||||
watch: {
|
||||
collapsed (val) {
|
||||
collapsed(val) {
|
||||
if (val) {
|
||||
this.cachedOpenKeys = this.openKeys.concat()
|
||||
this.openKeys = []
|
||||
@@ -52,14 +52,13 @@ export default {
|
||||
this.openKeys = this.cachedOpenKeys
|
||||
}
|
||||
},
|
||||
$route: function () {
|
||||
$route: function() {
|
||||
this.updateMenu()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// select menu item
|
||||
onOpenChange (openKeys) {
|
||||
|
||||
onOpenChange(openKeys) {
|
||||
// 在水平模式下时执行,并且不再执行后续
|
||||
if (this.mode === 'horizontal') {
|
||||
this.openKeys = openKeys
|
||||
@@ -73,7 +72,7 @@ export default {
|
||||
this.openKeys = latestOpenKey ? [latestOpenKey] : []
|
||||
}
|
||||
},
|
||||
updateMenu () {
|
||||
updateMenu() {
|
||||
const routes = this.$route.matched.concat()
|
||||
const { hidden } = this.$route.meta
|
||||
if (routes.length >= 3 && hidden) {
|
||||
@@ -89,24 +88,24 @@ export default {
|
||||
})
|
||||
}
|
||||
//update-begin-author:taoyan date:20190510 for:online表单菜单点击展开的一级目录不对
|
||||
if(!this.selectedKeys || this.selectedKeys[0].indexOf(":")<0){
|
||||
if (!this.selectedKeys || this.selectedKeys[0].indexOf(':') < 0) {
|
||||
this.collapsed ? (this.cachedOpenKeys = openKeys) : (this.openKeys = openKeys)
|
||||
}
|
||||
//update-end-author:taoyan date:20190510 for:online表单菜单点击展开的一级目录不对
|
||||
},
|
||||
|
||||
// render
|
||||
renderItem (menu) {
|
||||
renderItem(menu) {
|
||||
if (!menu.hidden) {
|
||||
return menu.children && !menu.alwaysShow ? this.renderSubMenu(menu) : this.renderMenuItem(menu)
|
||||
}
|
||||
return null
|
||||
},
|
||||
renderMenuItem (menu) {
|
||||
renderMenuItem(menu) {
|
||||
const target = menu.meta.target || null
|
||||
const tag = target && 'a' || 'router-link'
|
||||
let props = { to: { name: menu.name } }
|
||||
if(menu.route && menu.route === '0'){
|
||||
if (menu.route && menu.route === '0') {
|
||||
props = { to: { path: menu.path } }
|
||||
}
|
||||
|
||||
@@ -122,42 +121,75 @@ export default {
|
||||
}
|
||||
|
||||
return (
|
||||
<Item {...{ key: menu.path }}>
|
||||
<tag {...{ props, attrs }}>
|
||||
{this.renderIcon(menu.meta.icon)}
|
||||
<span>{menu.meta.title}</span>
|
||||
</tag>
|
||||
</Item>
|
||||
)
|
||||
< Item
|
||||
{...
|
||||
{
|
||||
key: menu.path
|
||||
}
|
||||
}
|
||||
>
|
||||
<
|
||||
tag
|
||||
{...
|
||||
{
|
||||
props, attrs
|
||||
}
|
||||
}
|
||||
>
|
||||
{
|
||||
this.renderIcon(menu.meta.icon)
|
||||
}
|
||||
<
|
||||
span > { menu.meta.title } < /span>
|
||||
< /tag>
|
||||
< /Item>
|
||||
)
|
||||
},
|
||||
renderSubMenu (menu) {
|
||||
renderSubMenu(menu) {
|
||||
const itemArr = []
|
||||
if (!menu.alwaysShow) {
|
||||
menu.children.forEach(item => itemArr.push(this.renderItem(item)))
|
||||
}
|
||||
return (
|
||||
<SubMenu {...{ key: menu.path }}>
|
||||
<span slot="title">
|
||||
{this.renderIcon(menu.meta.icon)}
|
||||
<span>{menu.meta.title}</span>
|
||||
</span>
|
||||
{itemArr}
|
||||
</SubMenu>
|
||||
)
|
||||
< SubMenu
|
||||
{...
|
||||
{
|
||||
key: menu.path
|
||||
}
|
||||
}
|
||||
>
|
||||
<
|
||||
span
|
||||
slot = 'title' >
|
||||
{ this.renderIcon(menu.meta.icon) }
|
||||
< span > { menu.meta.title } < /span>
|
||||
< /span>
|
||||
{
|
||||
itemArr
|
||||
}
|
||||
<
|
||||
/SubMenu>
|
||||
)
|
||||
},
|
||||
renderIcon (icon) {
|
||||
renderIcon(icon) {
|
||||
if (icon === 'none' || icon === undefined) {
|
||||
return null
|
||||
}
|
||||
const props = {}
|
||||
typeof (icon) === 'object' ? props.component = icon : props.type = icon
|
||||
return (
|
||||
<Icon {... { props } }/>
|
||||
)
|
||||
< Icon
|
||||
{...
|
||||
{
|
||||
props
|
||||
}
|
||||
}
|
||||
/>
|
||||
)
|
||||
}
|
||||
},
|
||||
|
||||
render () {
|
||||
render() {
|
||||
const { mode, theme, menu } = this
|
||||
const props = {
|
||||
mode: mode,
|
||||
@@ -180,9 +212,21 @@ export default {
|
||||
})
|
||||
// {...{ props, on: on }}
|
||||
return (
|
||||
<Menu vModel={this.selectedKeys} {...{ props, on: on }}>
|
||||
{menuTree}
|
||||
</Menu>
|
||||
)
|
||||
< Menu
|
||||
vModel = { this.selectedKeys }
|
||||
{...
|
||||
{
|
||||
props, on
|
||||
:
|
||||
on
|
||||
}
|
||||
}
|
||||
>
|
||||
{
|
||||
menuTree
|
||||
}
|
||||
<
|
||||
/Menu>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user