11<template >
22 <a-layout-header style =" padding : 0px ;" >
3- <div class =" header" >
3+ <div v-if = " mode === 'sidemenu' " class =" header" >
44 <a-icon
55 v-if =" device==='mobile'"
66 class =" trigger"
1212 :type =" collapsed ? 'menu-unfold' : 'menu-fold'"
1313 @click.native =" toggle" />
1414
15- <div class =" user-wrapper" >
16- <span class =" action" >
17- <a-icon type =" question-circle-o" ></a-icon >
18- </span >
19- <header-notice class =" action" />
20- <a-dropdown >
21- <span class =" action ant-dropdown-link user-dropdown-menu" >
22- <a-avatar class =" avatar" size =" small" :src =" avatar()" />
23- <span >{{ nickname() }}</span >
24- </span >
25- <a-menu slot =" overlay" class =" user-dropdown-menu-wrapper" >
26- <a-menu-item key =" 0" >
27- <router-link :to =" { name: 'center' }" >
28- <a-icon type =" user" />
29- <span >个人中心</span >
30- </router-link >
31- </a-menu-item >
32- <a-menu-item key =" 1" >
33- <router-link :to =" { name: 'settings' }" >
34- <a-icon type =" setting" />
35- <span >账户设置</span >
36- </router-link >
37- </a-menu-item >
38- <a-menu-item key =" 2" disabled >
39- <a-icon type =" setting" />
40- <span >测试</span >
41- </a-menu-item >
42- <a-menu-divider />
43- <a-menu-item key =" 3" >
44- <a href =" javascript:;" @click =" handleLogout" >
45- <a-icon type =" logout" />
46- <span >退出登录</span >
47- </a >
48- </a-menu-item >
49- </a-menu >
50- </a-dropdown >
15+ <user-menu ></user-menu >
16+ </div >
17+ <div v-else :class =" ['top-nav-header-index', theme]" >
18+ <div class =" header-index-wide" >
19+ <div class =" header-index-left" >
20+ <logo class =" top-nav-header" />
21+ <s-menu
22+ mode =" horizontal"
23+ :menu =" menus"
24+ :theme =" theme"
25+ ></s-menu >
26+ </div >
27+ <user-menu class =" header-index-right" >
28+
29+ </user-menu >
5130 </div >
5231 </div >
32+
5333 </a-layout-header >
5434</template >
5535
5636<script >
57- import HeaderNotice from ' ./HeaderNotice'
58- import {mapActions , mapGetters } from ' vuex'
37+ import UserMenu from ' ../tools/UserMenu'
38+ import SMenu from ' ../menu/'
39+ import Logo from ' ../tools/Logo'
40+
41+ import { mapState } from ' vuex'
5942
6043 export default {
6144 name: " LayoutHeader" ,
6245 components: {
63- HeaderNotice
46+ UserMenu,
47+ SMenu,
48+ Logo
6449 },
6550 props: {
51+ mode: {
52+ type: String ,
53+ // sidemenu, topmenu
54+ default: ' sidemenu'
55+ },
56+ theme: {
57+ type: String ,
58+ required: false ,
59+ default: ' dark'
60+ },
6661 collapsed: {
6762 type: Boolean ,
6863 required: false ,
7570 }
7671 },
7772 data () {
78- return {}
73+ return {
74+ menus: [],
75+ }
7976 },
8077 created () {
81-
78+ this .menus = this .mainMenu .find ((item ) => item .path === ' /' ).children
79+ },
80+ computed: {
81+ ... mapState ({
82+ mainMenu : state => state .permission .addRouters ,
83+ }),
8284 },
8385 methods: {
84- ... mapActions ([" Logout" ]),
85- ... mapGetters ([" nickname" , " avatar" ]),
86- handleLogout () {
87- const that = this
8886
89- this .$confirm ({
90- title: ' 提示' ,
91- content: ' 真的要注销登录吗 ?' ,
92- onOk () {
93- return that .Logout ({}).then (() => {
94- window .location .reload ()
95- }).catch (err => {
96- that .$message .error ({
97- title: ' 错误' ,
98- description: err .message
99- })
100- })
101- },
102- onCancel () {
103- },
104- });
105- },
10687 toggle () {
10788 this .$emit (' toggle' )
10889 }
10990 }
11091 }
11192 </script >
11293
113- <style scoped>
94+ <style lang="scss" scoped>
11495
11596 </style >
0 commit comments