UserAccountMenu.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <script setup lang="ts">
  2. import appStore from "@/stores"
  3. import apis from "@a"
  4. import router from "@r"
  5. import WorkOrderMenu from "@/layouts/main/header/navbar/WorkOrderMenu.vue"
  6. const user = appStore.authStore.user
  7. const dynamic = computed(() => {
  8. return appStore.tenantStore.isDynamic()
  9. })
  10. function clearCache() {
  11. appStore.dictStore.cleanDict().then(() => {
  12. message.msgSuccess("清除成功")
  13. })
  14. }
  15. function refreshConfig() {
  16. apis.system.configApi.refreshCache().then(() => {
  17. message.msgSuccess("刷新成功")
  18. })
  19. }
  20. function signOut() {
  21. appStore.authStore.logout(false).then(() => {
  22. router.push("/login")
  23. })
  24. }
  25. </script>
  26. <template>
  27. <div class="app-navbar-item ms-1 ms-md-3">
  28. <div
  29. class="cursor-pointer symbol symbol-30px symbol-md-40px"
  30. data-vb-menu-trigger="{default: 'click', lg: 'hover'}"
  31. data-vb-menu-attach="parent"
  32. data-vb-menu-placement="bottom-end">
  33. <VbSymbol
  34. url="/resource/oss"
  35. :src="user.avatar"
  36. :text="user.userName"
  37. :size="40"
  38. alt="user" />
  39. </div>
  40. <div
  41. class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary py-4 fs-6 w-275px"
  42. data-vb-menu="true">
  43. <div class="menu-item px-3">
  44. <div class="menu-content d-flex align-items-center px-3">
  45. <div class="symbol symbol-50px me-5">
  46. <VbSymbol url="/resource/oss" :src="user.avatar" :text="user.userName" alt="user" />
  47. </div>
  48. <div class="d-flex flex-column">
  49. <div class="fw-bold d-flex align-items-center fs-5">
  50. {{ user.nickName }}
  51. <span
  52. v-if="user.orgName"
  53. class="badge badge-light-success fw-bold fs-8 px-2 py-1 ms-2">
  54. {{ user.orgName }}
  55. </span>
  56. </div>
  57. <a href="#" class="text-muted text-hover-primary fs-7">{{ user.email }}</a>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="separator my-2"></div>
  62. <div class="menu-item" v-if="!dynamic">
  63. <router-link to="/profile" class="menu-link px-5">
  64. <span class="menu-icon">
  65. <VbIcon icon-name="user" icon-type="duotone" class="me-2 fs-3"></VbIcon>
  66. </span>
  67. <span class="menu-title">个人中心</span>
  68. </router-link>
  69. </div>
  70. <!-- <VbWorkflow /> -->
  71. <div class="menu-item">
  72. <router-link to="/my/notice" class="menu-link">
  73. <span class="menu-icon">
  74. <VbIcon icon-name="messages" icon-type="duotone" class="me-2 fs-3"></VbIcon>
  75. </span>
  76. <span class="menu-title">我的通知</span>
  77. </router-link>
  78. </div>
  79. <div class="separator my-2"></div>
  80. <WorkOrderMenu />
  81. <div class="separator my-2"></div>
  82. <div class="menu-item">
  83. <span @click="clearCache" class="menu-link px-5">
  84. <span class="menu-icon">
  85. <VbIcon icon-name="eraser" icon-type="duotone" class="me-2 fs-3"></VbIcon>
  86. </span>
  87. <span class="menu-title">清除缓存</span>
  88. </span>
  89. </div>
  90. <div class="menu-item">
  91. <span @click="refreshConfig" class="menu-link px-5">
  92. <span class="menu-icon">
  93. <VbIcon icon-name="arrows-circle" icon-type="duotone" class="me-2 fs-3"></VbIcon>
  94. </span>
  95. <span class="menu-title">刷新配置</span>
  96. </span>
  97. </div>
  98. <div class="separator my-2"></div>
  99. <div class="menu-item">
  100. <span @click="signOut()" class="menu-link px-5">
  101. <span class="menu-icon">
  102. <VbIcon icon-name="power" icon-type="duotone" class="me-2 fs-3"></VbIcon>
  103. </span>
  104. <span class="menu-title">退出登录</span>
  105. </span>
  106. </div>
  107. </div>
  108. </div>
  109. </template>