findIdComplete.vue 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <main class="user--main">
  3. <div class="join--container">
  4. <div class="title--wrap">
  5. <h1>아이디 찾기 완료</h1>
  6. <p class="mt--9">회원님의 아이디는 아래와 같습니다.</p>
  7. </div>
  8. <div v-if="result" class="login--wrap mt--25">
  9. <div class="find--result--wrap">
  10. <span class="result--label">아이디</span>
  11. <span class="result--bubble">{{ signupTypeLabel }}</span>
  12. <span class="result--txt">{{ result.username_masked }}</span>
  13. <span class="result--date">가입일: {{ formattedDate }}</span>
  14. </div>
  15. <div class="float--btn--wrap">
  16. <!-- 소셜 가입자만 해당 소셜 로그인 버튼 노출 -->
  17. <div v-if="result.signup_type !== 'local'" class="social--login--wrap">
  18. <ul class="social--login--list">
  19. <li v-if="result.signup_type === 'kakao'"><NuxtLink to="#" class="kakao">카카오톡</NuxtLink></li>
  20. <li v-if="result.signup_type === 'naver'"><NuxtLink to="#" class="naver">네이버</NuxtLink></li>
  21. <li v-if="result.signup_type === 'apple'"><NuxtLink to="#" class="apple">애플</NuxtLink></li>
  22. </ul>
  23. </div>
  24. <NuxtLink to="/login">로그인하기</NuxtLink>
  25. <NuxtLink
  26. v-if="result.signup_type === 'local'"
  27. :to="{ path: '/login/find', query: { tab: 'pw' } }"
  28. class="border--btn"
  29. >비밀번호 재설정하기</NuxtLink>
  30. </div>
  31. </div>
  32. <div v-else class="login--wrap mt--25">
  33. <p class="desc--p">조회 결과가 없습니다. 다시 시도해 주세요.</p>
  34. <div class="float--btn--wrap">
  35. <NuxtLink to="/login/find">다시 찾기</NuxtLink>
  36. </div>
  37. </div>
  38. </div>
  39. </main>
  40. </template>
  41. <script setup>
  42. import { ref, computed, onMounted, onBeforeUnmount } from 'vue'
  43. const result = ref(null)
  44. const signupTypeLabel = computed(() => {
  45. const t = result.value?.signup_type
  46. if (t === 'kakao') return '카카오'
  47. if (t === 'naver') return '네이버'
  48. if (t === 'apple') return '애플'
  49. return '일반'
  50. })
  51. const formattedDate = computed(() => {
  52. const c = result.value?.created_at
  53. if (!c) return '-'
  54. const d = new Date(String(c).replace(' ', 'T'))
  55. if (isNaN(d.getTime())) return c
  56. const y = d.getFullYear()
  57. const m = String(d.getMonth() + 1).padStart(2, '0')
  58. const day = String(d.getDate()).padStart(2, '0')
  59. return `${y}.${m}.${day}`
  60. })
  61. onMounted(() => {
  62. const raw = sessionStorage.getItem('find_id_result')
  63. if (raw) {
  64. try { result.value = JSON.parse(raw) } catch { result.value = null }
  65. }
  66. })
  67. onBeforeUnmount(() => {
  68. sessionStorage.removeItem('find_id_result')
  69. })
  70. </script>