TopNavigation.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <div>
  3. <div>
  4. <nav class="navbar navbar-default navBack">
  5. <div class="container-fluid">
  6. <!-- Brand and toggle get grouped for better mobile display -->
  7. <div class="navbar-header">
  8. <button
  9. type="button"
  10. class="navbar-toggle collapsed"
  11. data-toggle="collapse"
  12. data-target="#bs-example-navbar-collapse-1"
  13. aria-expanded="false"
  14. >
  15. <span class="sr-only">Toggle navigation</span>
  16. <span class="icon-bar" />
  17. <span class="icon-bar" />
  18. <span class="icon-bar" />
  19. </button>
  20. <a
  21. class="navbar-brand"
  22. @click="showMenu"
  23. >
  24. <i v-if="visible == false" class="glyphicon glyphicon-chevron-right" />
  25. <i v-if="visible" class="glyphicon glyphicon-chevron-left" />
  26. </a>
  27. </div>
  28. <!-- Collect the nav links, forms, and other content for toggling -->
  29. <div
  30. id="bs-example-navbar-collapse-1"
  31. class="collapse navbar-collapse"
  32. >
  33. <TopNavUserInfo :login-info="loginInfo" />
  34. <TopNavClientSelect :login-info="loginInfo" />
  35. <TopNavMessage :login-info="loginInfo" />
  36. <TopNavVideoCallCenter />
  37. <TopNavDownload />
  38. <LoginNotice />
  39. </div>
  40. <!-- /.navbar-collapse -->
  41. </div>
  42. <!-- /.container-fluid -->
  43. <div class="clearfix" />
  44. </nav>
  45. </div>
  46. </div>
  47. </template>
  48. <script>
  49. import Common from '../common/Common.js';
  50. import AuthImage from '../widget/AuthImage.vue';
  51. import TopNavClientSelect from './top-nav-client-select.vue';
  52. import TopNavUserInfo from './top-nav-user-info.vue';
  53. import TopNavMessage from './top-nav-message.vue';
  54. import TopNavVideoCallCenter from './top-nav-video-call-center.vue';
  55. import TopNavDownload from './top-nav-download.vue';
  56. import LoginNotice from './LoginNotice.vue';
  57. export default {
  58. components: {
  59. AuthImage,
  60. TopNavClientSelect,
  61. TopNavUserInfo,
  62. TopNavMessage,
  63. TopNavVideoCallCenter,
  64. TopNavDownload,
  65. LoginNotice,
  66. },
  67. emits: ['menuVisibleChanged'],
  68. data: function () {
  69. this.Common = Common;
  70. return {
  71. loginInfo: '',
  72. webSocket: undefined,
  73. clientCanAccessList: [],
  74. visible:true,
  75. };
  76. },
  77. watch: {},
  78. mounted: function () {
  79. this.getLocalStorage();
  80. if (this.isMobile()) {
  81. this.visible = false;
  82. this.$emit('menuVisibleChanged');
  83. }
  84. },
  85. methods: {
  86. // 获取localStorage
  87. getLocalStorage: function () {
  88. var json = localStorage.getItem('#LoginInfo');
  89. this.loginInfo = JSON.parse(json);
  90. if (this.loginInfo && this.loginInfo.userImageUrl) {
  91. this.$store.commit('updateImageSrc', this.loginInfo.userImageUrl);
  92. }
  93. },
  94. showMenu:function(){
  95. this.visible = !this.visible;
  96. this.$emit('menuVisibleChanged');
  97. },
  98. isMobile() {
  99. let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
  100. return flag;
  101. },
  102. },
  103. };
  104. </script>
  105. <style scoped>
  106. @media (max-width: 768px) {
  107. .navBack{
  108. z-index: 9999999;
  109. }
  110. }
  111. </style>