index.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <div class="right-sec">
  3. <div class="right-menu">
  4. <el-dropdown class="avatar-container" trigger="click">
  5. <div class="avatar-wrapper">
  6. <div><strong>{{username}}</strong></div>
  7. <i class="el-icon-caret-bottom" />
  8. </div>
  9. <el-dropdown-menu slot="dropdown" class="user-dropdown" >
  10. <router-link to="/">
  11. <el-dropdown-item> 首页 </el-dropdown-item>
  12. </router-link>
  13. <el-dropdown-item divided>
  14. <span style="display: block" @click="logout()">退出</span>
  15. </el-dropdown-item>
  16. </el-dropdown-menu>
  17. </el-dropdown>
  18. </div>
  19. <div class="right-time date">{{ dateFormat(date) }}</div>
  20. </div>
  21. </template>
  22. <script>
  23. // import { flexible } from "@/utils";
  24. export default {
  25. name: "TimeMenu",
  26. // components: { sbjk, monitor, alarming, handleNumber, alarmStatic,Navbar },
  27. data() {
  28. return {
  29. date: new Date(), //实时时间
  30. username:''
  31. };
  32. },
  33. methods: {
  34. logout(){
  35. localStorage.clear();
  36. this.$store.dispatch('logout').then(() => {
  37. this.$router.push('/login')
  38. }).catch(err => {
  39. this.$message.error(err); //登录失败提示错误
  40. });
  41. },
  42. setZero(a) {
  43. //设置小于10的数字在加0
  44. return a < 10 ? "0" + a : a;
  45. },
  46. dateFormat: function (time) {
  47. var date = new Date(time);
  48. var year = date.getFullYear();
  49. /* 在日期格式中,月份是从0开始的,因此要加0
  50. * 使用三元表达式在小于10的前面加0,以达到格式统一 如 09:11:05
  51. * */
  52. var month =
  53. date.getMonth() + 1 < 10
  54. ? "0" + (date.getMonth() + 1)
  55. : date.getMonth() + 1;
  56. var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
  57. var hours =
  58. date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
  59. var minutes =
  60. date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
  61. var seconds =
  62. date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
  63. // 拼接
  64. return (
  65. year +
  66. "年" +
  67. month +
  68. "月" +
  69. day +
  70. "日 " +
  71. hours +
  72. ":" +
  73. minutes +
  74. ":" +
  75. seconds
  76. );
  77. },
  78. },
  79. mounted() {
  80. var _this = this;
  81. this.timer = setInterval(() => {
  82. _this.date = new Date(); // 修改日期数据
  83. }, 1000);
  84. let userInfo = window.localStorage.getItem('key');
  85. this.username = userInfo
  86. },
  87. destroyed() {
  88. if (this.timer) {
  89. clearInterval(this.timer); // 在Vue实例销毁前,清除当前日期定时器
  90. }
  91. },
  92. };
  93. </script>
  94. <style lang="scss" scoped>
  95. .right-sec{
  96. position:absolute;
  97. right:0;
  98. top:0;
  99. }
  100. .right-time {
  101. float: right;
  102. line-height: 50px;
  103. margin-right: 50px;
  104. font-size:14px
  105. }
  106. .right-menu {
  107. float: right;
  108. height: 100%;
  109. line-height: 50px;
  110. &:focus {
  111. outline: none;
  112. }
  113. .right-menu-item {
  114. display: inline-block;
  115. padding: 0 8px;
  116. height: 100%;
  117. font-size: 18px;
  118. color: #5a5e66;
  119. vertical-align: text-bottom;
  120. &.hover-effect {
  121. cursor: pointer;
  122. transition: background 0.3s;
  123. &:hover {
  124. background: rgba(0, 0, 0, 0.025);
  125. }
  126. }
  127. }
  128. .avatar-container {
  129. margin-right: 30px;
  130. display: block;
  131. .avatar-wrapper {
  132. // margin-top: 5px;
  133. position: relative;
  134. .user-avatar {
  135. cursor: pointer;
  136. width: 40px;
  137. height: 40px;
  138. border-radius: 10px;
  139. }
  140. .el-icon-caret-bottom {
  141. cursor: pointer;
  142. position: absolute;
  143. right: -20px;
  144. top: 20px;
  145. font-size: 12px;
  146. }
  147. }
  148. }
  149. }
  150. </style>
  151. <style lang="scss">
  152. </style>