cwg-logout.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <view class="cursor-pointer" :data-tooltip="t('mine.logout')">
  3. <view class="pc-btn" @click="handleLogout">
  4. <view>{{t('vu.Btn.Logout')}}</view>
  5. </view>
  6. </view>
  7. <cwg-global-popup/>
  8. </template>
  9. <script setup lang="ts">
  10. import { useI18n } from 'vue-i18n'
  11. import { userApi } from '@/api/user'
  12. import useUserStore from '@/stores/use-user-store'
  13. import useRouter from "@/hooks/useRouter"
  14. import { usePopup } from '@/hooks/usePopup'
  15. const router = useRouter()
  16. const userStore = useUserStore()
  17. const { confirm } = usePopup()
  18. const { t } = useI18n()
  19. async function handleLogout() {
  20. const res = await confirm({
  21. title: t('Msg.SystemPrompt'),
  22. content: t('mine.p'),
  23. showCancel: t('mine.b2'),
  24. confirmText: t('mine.b1'),
  25. })
  26. if (!res) return
  27. try {
  28. await userApi.logout()
  29. } catch (e) { }
  30. userStore.clearUserInfo()
  31. uni.setStorageSync('logoutToSystem', 1)
  32. // uni.$emit('updateSystemList')
  33. router.push('/pages/login/index')
  34. }
  35. </script>
  36. <style scoped lang="scss">
  37. @import "@/uni.scss";
  38. .pc-btn {
  39. width: auto;
  40. height: px2rpx(28);
  41. border-radius: px2rpx(4);
  42. padding: 0 px2rpx(10);
  43. border: 1px solid #EE1C25;
  44. background: #FFF5F5;
  45. display: flex;
  46. align-items: center;
  47. font-size: px2rpx(14);
  48. margin-left: px2rpx(20);
  49. &:hover {
  50. color: #ffffff;
  51. background: #EE1C25;
  52. border-color: #EE1C25;
  53. }
  54. }
  55. :deep(.cwg-dropdown-menu-container .menu .menu-item) {
  56. min-height: px2rpx(36);
  57. }
  58. :deep(.cwg-dropdown) {
  59. overflow: visible !important;
  60. }
  61. </style>