navbar.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <!--
  2. 头部区域
  3. @Author: tangDM
  4. @Date: 2019-03-12
  5. -->
  6. <template>
  7. <div class="l-main-header" style="position: relative">
  8. <div class="l-main-header__left">
  9. <div class="l-main-header__box">
  10. <img
  11. style="width: 40px; height: 40px"
  12. class="l-main-header__logo"
  13. src="@/assets/images/layout/logo.png"
  14. />
  15. </div>
  16. <p class="l-main-header__title">警务云统一授权管理中心</p>
  17. </div>
  18. <div class="l-main-header__center"></div>
  19. <div class="l-main-header__right">
  20. <div class="l-search" @click.stop="handleClickSearch">
  21. <span class="el-icon-search"></span>
  22. <input
  23. v-model="searchValue"
  24. type="text"
  25. v-bind:class="{ 'is-active-search-show': activeShow, 'is-active-search-hide': activeHide }"
  26. />
  27. </div>
  28. <div style="display: inline-block; vertical-align: top">
  29. <!--<el-tooltip :content="$t('navbar.screenfull')" effect="dark" placement="bottom">-->
  30. <!--<screenfull class="l-screen-full" />-->
  31. <!--</el-tooltip>-->
  32. <!-- 换肤组件 -->
  33. <dui-skins :options="skinOption" :currentSkin="'theme-default'" isCookie></dui-skins>
  34. <!-- 用户操作区域 -->
  35. <div class="l-avatar-box">
  36. <i class="icon icon-user2"></i>
  37. <span class="l-avatar-box__user">{{ name }}</span>
  38. <i class="icon icon-close" title="退出登录" @click="logout"></i>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. </template>
  44. <script>
  45. import { mapGetters } from "vuex";
  46. import Breadcrumb from "@/components/layout/breadcrumb";
  47. import Screenfull from "@/components/layout/screenfull";
  48. import LangSelect from "@/components/layout/lang-select";
  49. import DuiSkins from "@/components/layout/skins/index";
  50. export default {
  51. data() {
  52. return {
  53. searchValue: "",
  54. skinOption: [
  55. {
  56. name: "浅色系",
  57. fileName: "theme-default",
  58. background: "#2991d9"
  59. },
  60. {
  61. name: "暗色系",
  62. fileName: "theme-black",
  63. background: "#222222"
  64. }
  65. ],
  66. activeShow: false,
  67. activeHide: false
  68. };
  69. },
  70. components: {
  71. Breadcrumb,
  72. Screenfull,
  73. LangSelect,
  74. DuiSkins
  75. },
  76. computed: {
  77. ...mapGetters(["sidebar", "name", "avatar", "device"])
  78. },
  79. methods: {
  80. toggleSideBar() {
  81. this.$store.dispatch("toggleSideBar");
  82. },
  83. logout() {
  84. this.$confirm("是否确定退出系统").then(() => {
  85. if (process.env.NEED_LOGIN) {
  86. this.$confirm("是否确定退出系统").then(() => {
  87. window.loginUtil.logout(this);
  88. });
  89. } else {
  90. window.location.href = `https://login.iam.com/apphub/logout`;
  91. }
  92. });
  93. },
  94. handleClickSearch() {
  95. this.activeShow = true;
  96. this.activeHide = false;
  97. }
  98. },
  99. mounted() {
  100. this.bodyListener = () => {
  101. this.activeShow = false;
  102. this.activeHide = true;
  103. };
  104. document.body.addEventListener("click", this.bodyListener, false);
  105. },
  106. beforeDestroy() {
  107. //销毁body事件
  108. document.body.removeEventListener("click", this.bodyListener);
  109. }
  110. };
  111. </script>