Skip to content

Commit 9e01b91

Browse files
committed
add: drawer menu
1 parent 182bd1c commit 9e01b91

File tree

8 files changed

+1682
-907
lines changed

8 files changed

+1682
-907
lines changed
Lines changed: 93 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,94 @@
1-
<template>
2-
<a-layout-header style="padding: 0px;">
3-
<div class="header">
4-
<a-icon class="trigger" :type="collapsed ? 'menu-unfold' : 'menu-fold'" @click.native="toggle"/>
5-
<div class="user-wrapper">
6-
<span class="action">
7-
<a-icon type="question-circle-o"></a-icon>
8-
</span>
9-
<header-notice class="action"/>
10-
<a-dropdown>
11-
<span class="action ant-dropdown-link user-dropdown-menu">
12-
<a-avatar class="avatar" size="small" :src="avatar()"/>
13-
<span>{{ nickname() }}</span>
14-
</span>
15-
<a-menu slot="overlay" class="user-dropdown-menu-wrapper">
16-
<a-menu-item key="0">
17-
<a-icon type="user"/>
18-
<span>个人中心</span>
19-
</a-menu-item>
20-
<a-menu-item key="1">
21-
<router-link :to="{ name: 'settings' }">
22-
<a-icon type="setting"/>
23-
<span>账户设置</span>
24-
</router-link>
25-
</a-menu-item>
26-
<a-menu-item key="2" disabled>
27-
<a-icon type="setting"/>
28-
<span>测试</span>
29-
</a-menu-item>
30-
<a-menu-divider/>
31-
<a-menu-item key="3">
32-
<a href="javascript:;" @click="handleLogout">
33-
<a-icon type="logout"/>
34-
<span>退出登录</span>
35-
</a>
36-
</a-menu-item>
37-
</a-menu>
38-
</a-dropdown>
39-
</div>
40-
</div>
41-
</a-layout-header>
42-
</template>
43-
44-
<script>
45-
import HeaderNotice from './HeaderNotice'
46-
import { mapActions, mapGetters } from 'vuex'
47-
48-
export default {
49-
name: "LayoutHeader",
50-
components: {
51-
HeaderNotice
52-
},
53-
props: {
54-
collapsed: {
55-
type: Boolean,
56-
required: false,
57-
default: false
58-
},
59-
},
60-
data() {
61-
return {
62-
63-
}
64-
},
65-
created() {
66-
67-
},
68-
methods: {
69-
...mapActions(["Logout"]),
70-
...mapGetters(["nickname", "avatar"]),
71-
handleLogout() {
72-
this.Logout({}).then(() => {
73-
window.location.reload()
74-
}).catch(err => {
75-
this.$message.error(err.message)
76-
})
77-
},
78-
toggle() {
79-
this.$emit('toggle')
80-
}
81-
}
82-
}
83-
</script>
84-
85-
<style scoped>
86-
1+
<template>
2+
<a-layout-header style="padding: 0px;">
3+
<div class="header">
4+
<a-icon class="trigger" v-if="device==='mobile'" :type="collapsed ? 'menu-fold' : 'menu-unfold'" @click.native="toggle"></a-icon>
5+
<a-icon class="trigger" v-else :type="collapsed ? 'menu-unfold' : 'menu-fold'" @click.native="toggle"/>
6+
7+
<div class="user-wrapper">
8+
<span class="action">
9+
<a-icon type="question-circle-o"></a-icon>
10+
</span>
11+
<header-notice class="action"/>
12+
<a-dropdown>
13+
<span class="action ant-dropdown-link user-dropdown-menu">
14+
<a-avatar class="avatar" size="small" :src="avatar()"/>
15+
<span>{{ nickname() }}</span>
16+
</span>
17+
<a-menu slot="overlay" class="user-dropdown-menu-wrapper">
18+
<a-menu-item key="0">
19+
<a-icon type="user"/>
20+
<span>个人中心</span>
21+
</a-menu-item>
22+
<a-menu-item key="1">
23+
<router-link :to="{ name: 'settings' }">
24+
<a-icon type="setting"/>
25+
<span>账户设置</span>
26+
</router-link>
27+
</a-menu-item>
28+
<a-menu-item key="2" disabled>
29+
<a-icon type="setting"/>
30+
<span>测试</span>
31+
</a-menu-item>
32+
<a-menu-divider/>
33+
<a-menu-item key="3">
34+
<a href="javascript:;" @click="handleLogout">
35+
<a-icon type="logout"/>
36+
<span>退出登录</span>
37+
</a>
38+
</a-menu-item>
39+
</a-menu>
40+
</a-dropdown>
41+
</div>
42+
</div>
43+
</a-layout-header>
44+
</template>
45+
46+
<script>
47+
import HeaderNotice from './HeaderNotice'
48+
import { mapActions, mapGetters } from 'vuex'
49+
50+
export default {
51+
name: "LayoutHeader",
52+
components: {
53+
HeaderNotice
54+
},
55+
props: {
56+
collapsed: {
57+
type: Boolean,
58+
required: false,
59+
default: false
60+
},
61+
device: {
62+
type: String,
63+
required: false,
64+
default: 'desktop'
65+
}
66+
},
67+
data() {
68+
return {
69+
70+
}
71+
},
72+
created() {
73+
74+
},
75+
methods: {
76+
...mapActions(["Logout"]),
77+
...mapGetters(["nickname", "avatar"]),
78+
handleLogout() {
79+
this.Logout({}).then(() => {
80+
window.location.reload()
81+
}).catch(err => {
82+
this.$message.error(err.message)
83+
})
84+
},
85+
toggle() {
86+
this.$emit('toggle')
87+
}
88+
}
89+
}
90+
</script>
91+
92+
<style scoped>
93+
8794
</style>

0 commit comments

Comments
 (0)