You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
7.7 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <template>
  2. <nav class="site-navbar" :class="'site-navbar--' + navbarLayoutType">
  3. <div class="site-navbar__header">
  4. <h1 class="site-navbar__brand" @click="$router.push({ name: 'home' })">
  5. <el-menu
  6. class="site-navbar__menu"
  7. mode="horizontal">
  8. <el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold">
  9. <icon-svg name="zhedie"></icon-svg>
  10. </el-menu-item>
  11. </el-menu>
  12. <a class="site-navbar__brand-lg" href="javascript:;" >{{$t('commonSystemName')}}</a>
  13. <a class="site-navbar__brand-mini" href="javascript:;">{{$t('commonAbbreviation')}}</a>
  14. </h1>
  15. </div>
  16. <div class="site-navbar__body clearfix">
  17. <!-- <el-menu-->
  18. <!-- class="site-navbar__menu"-->
  19. <!-- mode="horizontal">-->
  20. <!-- <el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold">-->
  21. <!-- <icon-svg name="zhedie"></icon-svg>-->
  22. <!-- </el-menu-item>-->
  23. <!-- </el-menu>-->
  24. <el-menu
  25. class="site-navbar__menu site-navbar__menu--right"
  26. mode="horizontal">
  27. <el-submenu index="2">
  28. <template slot="title">设置</template>
  29. <el-submenu index="2-1" >
  30. <template slot="title">语言设置</template>
  31. <el-menu-item index="2-1-1" @click.native="switch_the_language('cn')">{{$t('lange.cn')}}</el-menu-item>
  32. <el-menu-item index="2-1-2" @click.native="switch_the_language('en')">{{$t('lange.en')}}</el-menu-item>
  33. <el-menu-item index="2-1-3" @click.native="switch_the_language('jp')">{{$t('lange.jp')}}</el-menu-item>
  34. <el-menu-item index="2-1-4" @click.native="switch_the_language('kr')">{{$t('lange.kr')}}</el-menu-item>
  35. </el-submenu>
  36. <el-submenu index="2-2">
  37. <template slot="title">用户设置</template>
  38. <el-menu-item index="2-2-1" @click.native="updatePasswordHandle()">修改密码</el-menu-item>
  39. <el-menu-item index="2-2-2" @click.native="updateLanguageHandle()">修改默认语言</el-menu-item>
  40. </el-submenu>
  41. <el-menu-item index="2-3" @click="$router.push({ name: 'theme' })">主题设置</el-menu-item>
  42. </el-submenu>
  43. <el-menu-item class="site-navbar__avatar" index="3">
  44. <el-dropdown :show-timeout="0" placement="bottom">
  45. <span class="el-dropdown-link">
  46. <img src="~@/assets/img/avatar.png" :alt="userName">{{ userName }}
  47. </span>
  48. <el-dropdown-menu slot="dropdown">
  49. <el-dropdown-item @click.native="logoutHandle()">退出</el-dropdown-item>
  50. </el-dropdown-menu>
  51. </el-dropdown>
  52. </el-menu-item>
  53. </el-menu>
  54. <!-- <el-menu-->
  55. <!-- class="site-navbar__menu site-navbar__menu&#45;&#45;right"-->
  56. <!-- mode="horizontal">-->
  57. <!-- <el-menu-item index="1">-->
  58. <!-- <el-dropdown :show-timeout="0" placement="bottom">-->
  59. <!-- <span class="el-dropdown-link">-->
  60. <!-- &lt;!&ndash; 注2在按钮中加入单击事件事件指向语言切换函数 &ndash;&gt;-->
  61. <!-- {{$t('language.name')}}-->
  62. <!-- </span>-->
  63. <!-- <el-dropdown-menu slot="dropdown">-->
  64. <!-- <el-dropdown-item @click.native="switch_the_language('cn')">{{$t('lange.cn')}}</el-dropdown-item>-->
  65. <!-- <el-dropdown-item @click.native="switch_the_language('en')">{{$t('lange.en')}}</el-dropdown-item>-->
  66. <!-- <el-dropdown-item @click.native="switch_the_language('jp')">{{$t('lange.jp')}}</el-dropdown-item>-->
  67. <!-- <el-dropdown-item @click.native="switch_the_language('kr')">{{$t('lange.kr')}}</el-dropdown-item>-->
  68. <!-- </el-dropdown-menu>-->
  69. <!-- </el-dropdown>-->
  70. <!-- </el-menu-item>-->
  71. <!-- <el-menu-item index="1" @click="$router.push({ name: 'theme' })">-->
  72. <!-- <template slot="title">-->
  73. <!-- <el-badge value="new">-->
  74. <!-- <icon-svg name="shezhi" class="el-icon-setting"></icon-svg>-->
  75. <!-- </el-badge>-->
  76. <!-- </template>-->
  77. <!-- </el-menu-item>-->
  78. <!-- <el-menu-item class="site-navbar__avatar" index="3">-->
  79. <!-- <el-dropdown :show-timeout="0" placement="bottom">-->
  80. <!-- <span class="el-dropdown-link">-->
  81. <!-- <img src="~@/assets/img/avatar.png" :alt="userName">{{ userName }}-->
  82. <!-- </span>-->
  83. <!-- <el-dropdown-menu slot="dropdown">-->
  84. <!-- <el-dropdown-item @click.native="updatePasswordHandle()">修改密码</el-dropdown-item>-->
  85. <!-- <el-dropdown-item @click.native="updateLanguageHandle()">修改默认语言</el-dropdown-item>-->
  86. <!-- <el-dropdown-item @click.native="logoutHandle()">退出</el-dropdown-item>-->
  87. <!-- </el-dropdown-menu>-->
  88. <!-- </el-dropdown>-->
  89. <!-- </el-menu-item>-->
  90. <!-- </el-menu>-->
  91. </div>
  92. <!-- 弹窗, 修改密码 -->
  93. <update-password v-if="updatePassowrdVisible" ref="updatePassowrd"></update-password>
  94. <update-language v-if="updateLanguageVisible" ref="updateLanguage"></update-language>
  95. </nav>
  96. </template>
  97. <script>
  98. import UpdatePassword from './main-navbar-update-password'
  99. import UpdateLanguage from './main-navbar-update-language'
  100. import {clearLoginInfo} from '@/utils'
  101. export default {
  102. data() {
  103. return {
  104. updatePassowrdVisible: false,
  105. updateLanguageVisible: false,
  106. message: this.$t('language.name')
  107. }
  108. },
  109. components: {
  110. UpdatePassword,
  111. UpdateLanguage
  112. },
  113. computed: {
  114. navbarLayoutType: {
  115. get() {
  116. return this.$store.state.common.navbarLayoutType
  117. }
  118. },
  119. sidebarFold: {
  120. get() {
  121. return this.$store.state.common.sidebarFold
  122. },
  123. set(val) {
  124. this.$store.commit('common/updateSidebarFold', val)
  125. }
  126. },
  127. mainTabs: {
  128. get() {
  129. return this.$store.state.common.mainTabs
  130. },
  131. set(val) {
  132. this.$store.commit('common/updateMainTabs', val)
  133. }
  134. },
  135. userName: {
  136. get() {
  137. return this.$store.state.user.name
  138. }
  139. }
  140. },
  141. methods: {
  142. // 注3:增加语言切换函数
  143. switch_the_language(val) {
  144. localStorage.setItem('locale', val)
  145. location.reload()
  146. },
  147. // 修改密码
  148. updatePasswordHandle() {
  149. this.updatePassowrdVisible = true
  150. this.$nextTick(() => {
  151. this.$refs.updatePassowrd.init()
  152. })
  153. },
  154. // 修改用户默认语言
  155. updateLanguageHandle(){
  156. this.updateLanguageVisible = true
  157. this.$nextTick(() =>{
  158. this.$refs.updateLanguage.init()
  159. })
  160. },
  161. // 退出
  162. logoutHandle() {
  163. this.$confirm(`确定进行[退出]操作?`, '提示', {
  164. confirmButtonText: '确定',
  165. cancelButtonText: '取消',
  166. type: 'warning'
  167. }).then(() => {
  168. this.$http({
  169. url: this.$http.adornUrl('/sys/logout'),
  170. method: 'post',
  171. data: this.$http.adornData()
  172. }).then(({data}) => {
  173. if (data && data.code === 0) {
  174. clearLoginInfo()
  175. this.$router.push({name: 'login'})
  176. }
  177. })
  178. }).catch(() => {
  179. })
  180. }
  181. }
  182. }
  183. </script>
  184. <style lang="scss">
  185. .icon-svg {
  186. width: 2em;
  187. }
  188. .el-menu--collapse .el-menu .el-submenu, .el-menu--popup, .el-menu-item{
  189. min-width: 50px!important;
  190. }
  191. .site-navbar__brand-lg, .site-navbar__brand-mini {
  192. margin: 0 5px;
  193. color: #fff;
  194. margin-left: -45px;
  195. }
  196. </style>