index.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <script setup lang="ts">
  2. import Choice from './comp/choice.vue'
  3. import Mail from './comp/email/index.vue'
  4. import Code from './comp/email/code.vue'
  5. import Google from './comp/email/google.vue'
  6. import AccountList from './comp/account/list.vue'
  7. import useLogin from './useLogin'
  8. import { useUserStore } from '@/stores/modules/user'
  9. import { useCommonStore } from '@/stores/modules/common'
  10. const commonStore = useCommonStore()
  11. const { accountList, loginType } = storeToRefs(commonStore)
  12. const { emailStep, isEmailGoogle, selectedAccount } = useLogin()
  13. const { isLoginModalOpen, closeLoginModal } = useLoginModal()
  14. // const userStore = useUserStore()
  15. // const { login } = userStore
  16. // const loginForm = ref({
  17. // email: '',
  18. // password: '',
  19. // })
  20. // const error = ref(false)
  21. // const isLoading = ref(false)
  22. const route = useRoute()
  23. watch(() => accountList.value, (newVal: any) => {
  24. console.log('accountList changed:', newVal)
  25. if (newVal.length > 0)
  26. commonStore.setLoginType('account')
  27. else
  28. commonStore.setLoginType('choice')
  29. }, { immediate: true })
  30. watch(() => route.path, () => {
  31. if (isLoginModalOpen.value)
  32. closeLoginModal({ status: false, error: '用户取消登录' })
  33. })
  34. // async function handleLogin() {
  35. // error.value = false
  36. // isLoading.value = true
  37. // try {
  38. // await login(loginForm.value)
  39. // closeLoginModal({ status: true, isFirstLogin: true })
  40. // }
  41. // catch (err) {
  42. // error.value = true
  43. // }
  44. // finally {
  45. // isLoading.value = false
  46. // }
  47. // }
  48. </script>
  49. <template>
  50. <el-dialog
  51. v-model="isLoginModalOpen"
  52. :append-to-body="true"
  53. :close-on-click-modal="false"
  54. :close-on-press-escape="false"
  55. width="880"
  56. >
  57. <img src="@/assets/images/login_close_icon.png" alt="" class="w-32px h-32px bg-#F4F4F4 cursor-pointer p-8px b-rd-50% pos-absolute top-24px right-24px" @click="isLoginModalOpen = false">
  58. <div class="flex">
  59. <div class="pt-110px pb-45px px-45px pos-relative bg-#D7C4FF w-375px">
  60. <img src="@/assets/images/login_icon01.png" alt="" class="w-110px h-110px pos-absolute top-0 left-0">
  61. <div class="custom-title-font text-24px fw-800 text-#333">
  62. Welcome to EJET Spark!
  63. </div>
  64. <img src="@/assets/images/login_img01.png" alt="" class="my-20px w-276px h-225px mx-auto">
  65. <div class="mb-10px custom-title-font text-18px fw-800 text-#333">
  66. EJET Spark Intro
  67. </div>
  68. <div class="text-14px text-#333 lh-22px">
  69. EJET Spark catalog description, spark the trend, ignate sales. EJET Spark catalog description, spark the trend, ignate sales.
  70. </div>
  71. </div>
  72. <div class="flex-1 b-rd-10px bg-#fff px-70px pt-100px">
  73. <AccountList v-if="emailStep === 0 && accountList.length && loginType === 'account'" />
  74. <Choice v-if="emailStep === 0 && loginType === 'choice'" />
  75. <Mail v-if="emailStep === 1 && !selectedAccount" />
  76. <Mail v-if="emailStep === 1 && selectedAccount" />
  77. <Code v-if="emailStep === 2 && !isEmailGoogle " />
  78. <Google v-if="emailStep === 2 && isEmailGoogle === 'google'" />
  79. </div>
  80. </div>
  81. </el-dialog>
  82. </template>
  83. <style lang="less">
  84. .el-dialog {
  85. border-radius: 10px;
  86. padding: 0;
  87. overflow: hidden;
  88. .el-dialog__header{
  89. display: none;
  90. &.show-close{
  91. .el-dialog__headerbtn{
  92. width: 60px;
  93. height: 60px;
  94. .el-dialog__close{
  95. font-size: 30px;
  96. color: #000;
  97. }
  98. }
  99. }
  100. }
  101. }
  102. </style>