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.

215 lines
7.8 KiB

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