BaseHeader.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <div class="base-header bg-#021B1B flex items-center justify-between">
  3. <img src="@/assets/images/zc_logo.png" class="w-238px h-32px" alt="" />
  4. <div class="mx-auto text-#fff text-20px">
  5. Welcome to the EJET PartnerShare Platform
  6. </div>
  7. <div>
  8. <!-- <img src="@/assets/images/user.png" alt="" class="logo" />
  9. <img src="@/assets/images/user.png" alt="" class="logo" /> -->
  10. <a-dropdown v-if="userStore.token" placement="bottom">
  11. <div class="ant-dropdown-link cursor-pointer bg-#fff b-rd-50% p-10px flex items-center" @click.prevent>
  12. <img class="w-20 h-20 rounded-full" v-if="userStore.userInfo.photo" :src="userStore.userInfo.photo" alt="" />
  13. <i-custom-user v-else class="w-20 h-20 c-primary" />
  14. </div>
  15. <span class="mr-10">{{ userStore.userInfo?.username }}</span>
  16. <template #overlay>
  17. <a-menu>
  18. <a-menu-item>
  19. <router-link to="/settings">个人设置</router-link>
  20. </a-menu-item>
  21. <a-menu-item>
  22. <div @click="logout">退出登录</div>
  23. </a-menu-item>
  24. </a-menu>
  25. </template>
  26. </a-dropdown>
  27. <router-link v-else to="login" class="fw-700 text-14px text-#696F79 underline"
  28. v-show="showLogin">登录/注册</router-link>
  29. </div>
  30. </div>
  31. </template>
  32. <script setup lang="ts">
  33. import { DownOutlined } from '@ant-design/icons-vue'
  34. import useUserStore from 'Store/modules/user'
  35. import { Modal } from 'ant-design-vue'
  36. import { isPage } from '@/utils'
  37. const userStore = useUserStore()
  38. const showLogin = !isPage('login') && !isPage('register')
  39. const logout = () => {
  40. Modal.confirm({
  41. title: '提示',
  42. content: '是否确认退出?',
  43. centered: true,
  44. onOk: () => {
  45. userStore.logout()
  46. },
  47. })
  48. }
  49. </script>
  50. <style lang="less">
  51. .base-header {
  52. padding: 20px 56px;
  53. position: relative;
  54. &::after {
  55. content: '';
  56. position: absolute;
  57. left: 0;
  58. right: 0;
  59. bottom: -10px;
  60. /* 阴影距离盒子底部的距离,负数表示在盒子外部 */
  61. height: 10px;
  62. /* 阴影的高度 */
  63. background: linear-gradient(to bottom, rgba(126, 125, 125, 0.2), rgba(0, 0, 0, 0));
  64. z-index: 1;
  65. /* 确保伪元素在盒子之下 */
  66. }
  67. }
  68. </style>