Skip to content

Commit 2a9c5c5

Browse files
committed
VolElementMenuChild.vue 、VolElementMenu.vue 、Index.vue 、common.js
1 parent 809b853 commit 2a9c5c5

File tree

6 files changed

+476
-106
lines changed

6 files changed

+476
-106
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<template>
2+
<div class="vol-el-menu">
3+
<el-menu close="vol-el-menu--vertical"
4+
:unique-opened="true"
5+
@select="select"
6+
:collapse="isCollapse"
7+
@open="handleOpen"
8+
@close="handleClose">
9+
<template v-for="(item) in treeList">
10+
<el-submenu :key="item.id"
11+
:index="''+item.id"
12+
v-if="item.children.length">
13+
<template slot="title">
14+
<Icon :type="item.icon||'ios-aperture'" />
15+
<span slot="title"> {{ item.name }}</span>
16+
</template>
17+
<vol-element-menu-child :list="item.children"></vol-element-menu-child>
18+
19+
</el-submenu>
20+
<template v-else>
21+
<el-menu-item class="menu-item-lv1"
22+
:key="item.id"
23+
:index="''+item.id">
24+
<Icon :type="item.icon||'ios-aperture'" />
25+
<span slot="title"> {{ item.name }}</span>
26+
</el-menu-item>
27+
</template>
28+
</template>
29+
30+
</el-menu>
31+
32+
</div>
33+
</template>
34+
35+
<script>
36+
import VolElementMenuChild from './VolElementMenuChild'
37+
export default {
38+
components: {
39+
"vol-element-menu-child": VolElementMenuChild
40+
},
41+
props: {
42+
isCollapse: {
43+
type: Boolean,
44+
default: false
45+
},
46+
onSelect: {
47+
type: Function,
48+
default: x => {
49+
console.log(x);
50+
}
51+
},
52+
list: {
53+
type: Array,
54+
default: []
55+
}
56+
},
57+
data () {
58+
return {
59+
treeList: []
60+
}
61+
},
62+
created () {
63+
this.treeList = this.base.convertTree(this.list, () => { })
64+
},
65+
methods: {
66+
select (index, indexPath) {
67+
let _item = this.list.find(x => { return x.id == index });
68+
this.onSelect(index, _item);
69+
this.$router.push({ path: _item.path })
70+
},
71+
handleOpen () {
72+
73+
},
74+
handleClose () { }
75+
}
76+
}
77+
</script>
78+
<style scoped>
79+
.vol-el-menu {
80+
box-sizing: content-box;
81+
width: 100%;
82+
}
83+
.vol-el-menu >>> .el-menu-item-group__title {
84+
padding: 0 !important;
85+
}
86+
.vol-el-menu >>> .horizontal-collapse-transition {
87+
transition: 0s width ease-in-out, 0s padding-left ease-in-out,
88+
0s padding-right ease-in-out;
89+
}
90+
</style>
91+
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<template>
2+
<div class="vol-el-menu-item">
3+
<template v-for="(item, index) of list">
4+
<el-menu-item :key="index"
5+
:index="''+item.id"
6+
v-if="!item.children.length">
7+
<!-- <Icon :type="item.icon" /> -->
8+
<span slot="title"> {{ item.name }}</span>
9+
</el-menu-item>
10+
<el-submenu :key="index"
11+
:index="''+item.id"
12+
v-if="item.children.length">
13+
<template slot="title">
14+
<!-- <Icon :type="item.icon||'ios-aperture'" /> -->
15+
<span> {{ item.name }}</span>
16+
</template>
17+
<vol-element-menu-child :list="item.children" />
18+
</el-submenu>
19+
</template>
20+
<!-- <vol-element-menu-child :list="item.children" /> -->
21+
</div>
22+
</template>
23+
24+
<script>
25+
export default {
26+
name: 'vol-element-menu-child',
27+
props: {
28+
list: Array
29+
},
30+
}
31+
</script>
32+
<style scoped>
33+
.vol-el-menu-item >>> .el-menu-item {
34+
height: 42px !important;
35+
line-height: 42px !important;
36+
}
37+
</style>
38+
39+
40+

0 commit comments

Comments
 (0)