石墨仪设备 前端仓库
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.

202 lines
5.3 KiB

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
  1. <template>
  2. <div class="header">
  3. <div class="header_logo">
  4. <img :src="logo" class="logo"/>
  5. <div>长春黄金研究院有限公司</div>
  6. </div>
  7. <div class="header_time">
  8. {{ currentTime }}
  9. </div>
  10. <div class="header_user">
  11. <img :src="AvatarSvg" width="20px" height="20px"/>
  12. <div class="user_name" @click="onShowMenu">Admin</div>
  13. <div class="user_opt" v-show="showUserMenu">
  14. <div class="updatePwd" @click="onUpdatePwd">
  15. <img :src="PwdSvg" style="width: 1.25rem; height: 1.25rem;" />
  16. 修改密码
  17. </div>
  18. <div class="login_out" @click="onLoginout">
  19. <img :src="OutSvg" style="width: 1.25rem; height: 1.25rem;"/>
  20. 退出登录</div>
  21. </div>
  22. </div>
  23. <OverlayModal :visible="updatePwdVisible">
  24. <UpdatePwd @cancel="onCancelUpdate"></UpdatePwd>
  25. </OverlayModal>
  26. </div>
  27. </template>
  28. <script lang="ts" setup>
  29. import logo from '@/assets/logo.svg'
  30. import AvatarSvg from '@/assets/avatar.svg'
  31. import OutSvg from '@/assets/out.svg'
  32. import PwdSvg from '@/assets/pwd.svg'
  33. import { ref, onMounted } from 'vue'
  34. import OverlayModal from '@/components/OverlayModal.vue'
  35. import UpdatePwd from '../components/UpdatePwd.vue'
  36. import {eventBus} from '@/eventBus'
  37. import { useRouter } from 'vue-router'
  38. import { getFormattedDateTime } from '@/utils'
  39. const router = useRouter()
  40. const menuId = ref(0)
  41. const time = getFormattedDateTime()
  42. const showUserMenu = ref(false)
  43. const currentTime = ref(time)
  44. onMounted(()=>{
  45. //测试页面返回时,需要调整菜单
  46. // eventBus.on('menuId', (value:number)=>{
  47. // menuId.value = value
  48. // })
  49. })
  50. const updatePwdVisible = ref(false)
  51. const onUpdatePwd = () => {
  52. updatePwdVisible.value = true;
  53. }
  54. const onLoginout = () => {
  55. router.push('/login')
  56. }
  57. const onShowMenu = () => {
  58. showUserMenu.value = !showUserMenu.value;
  59. }
  60. const onCancelUpdate = () => {
  61. updatePwdVisible.value = false;
  62. }
  63. </script>
  64. <style lang="scss" scoped>
  65. @use "@/assets/style/mixin.scss" as *;
  66. .header{
  67. display: flex;
  68. align-items: center;
  69. background: #F6F6F6;
  70. padding: 0 20px;
  71. height: var(--headerHeight);
  72. .header_logo{
  73. display: flex;
  74. font-size: 1.125rem;
  75. align-items: center;
  76. width: 21.875rem;
  77. color: #8799AB;
  78. gap: 5px;
  79. padding-left: 1.5625rem;
  80. .logo{
  81. height:2.75rem;
  82. width:2.625rem;
  83. }
  84. }
  85. .header_time{
  86. width: 11.875rem;
  87. height: 2.5rem;
  88. font-size: .875rem;
  89. display: flex;
  90. align-items: center;
  91. margin-left: 54%;
  92. background: white;
  93. justify-content: center;
  94. border-radius: 10px;
  95. }
  96. .header_ins{
  97. display: flex;
  98. align-items: center;
  99. border-radius: 5px;
  100. width: 13.875rem;
  101. height: 2.5rem;
  102. background: #FFFFFF;
  103. }
  104. .header_container{
  105. margin-left: 3.125rem;
  106. display: flex;
  107. align-items: center;
  108. border-radius: 5px;
  109. width: 15.625rem;
  110. height: 2.5rem;
  111. background: #FFFFFF;
  112. .waste_status{
  113. padding:5px 5px;
  114. width: 75%;
  115. }
  116. .waste_detail{
  117. display: flex;
  118. justify-content: flex-end;
  119. width: 40%;
  120. }
  121. }
  122. .header_user{
  123. display: flex;
  124. align-items: center;
  125. justify-content: flex-end;
  126. gap: 5px;
  127. margin-left: .9375rem;
  128. }
  129. .user_name{
  130. font-size: 1rem;
  131. color: #393F46;
  132. }
  133. .user_opt{
  134. width: 10rem;
  135. height: 6.25rem;
  136. position:absolute;
  137. top:3rem;
  138. background: #ffffff;
  139. .updatePwd{
  140. color: #323233;
  141. font-size: 1.125rem;
  142. display: flex;
  143. justify-content: center;
  144. margin-top: 1.5rem;
  145. gap: 15px;
  146. }
  147. .login_out{
  148. color: #323233;
  149. font-size: 1.125rem;
  150. display: flex;
  151. justify-content: center;
  152. margin-top: .5rem;
  153. gap: 15px;
  154. }
  155. }
  156. }
  157. .circle {
  158. width: .9375rem;
  159. height: .9375rem;
  160. background-color: green;
  161. border-radius: 50%;
  162. margin-left: .3125rem;
  163. }
  164. :deep(.van-dropdown-menu__bar){
  165. background-color: #1871F8;
  166. border-radius: 5px;
  167. height: .1rem;
  168. width: 2.875rem;
  169. .van-ellipsis{
  170. color:white;
  171. }
  172. }
  173. :deep(.van-dropdown-item__content){
  174. width: 4.75rem;
  175. margin-left: 5.375rem;
  176. }
  177. .text_size{
  178. font-size:1rem;
  179. padding-right: 5px;
  180. }
  181. </style>