useLogin.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. import type { FormInstance, FormRules } from 'element-plus'
  2. import { registerApi } from '@/api/model/user'
  3. import { useUserStore } from '@/stores/modules/user'
  4. const { isLoginModalOpen, closeLoginModal } = useLoginModal()
  5. // const userStore = useUserStore()
  6. // const { login } = userStore
  7. const loginForm = ref<any>({
  8. mail: '',
  9. code: '',
  10. })
  11. const emailStep = ref<number>(0)
  12. const seconds = ref<number>(0)
  13. const selectedAccount = ref<string>('')
  14. const errorCodeTxt = ref<string>('')
  15. const isEmailGoogle = ref<string>('')
  16. export default function useRegister() {
  17. const nextStep = () => {
  18. emailStep.value++
  19. }
  20. const backStep = () => {
  21. if (emailStep.value > 0)
  22. emailStep.value--
  23. }
  24. // const register = async () => {
  25. // try {
  26. // const form = {
  27. // ...params.value,
  28. // purchaseCategory: params.value.purchaseCategory.join(','),
  29. // }
  30. // await registerApi(form)
  31. // nextStep()
  32. // }
  33. // catch (error) {
  34. // console.log(error)
  35. // }
  36. // }
  37. /**
  38. * 二选一选择邮箱--下一步
  39. */
  40. const onSelectEmail = () => {
  41. selectedAccount.value = ''
  42. loginForm.value.mail = ''
  43. nextStep()
  44. }
  45. /**
  46. * 选择曾经登陆过的账号--下一步
  47. */
  48. const onSelectAccount = (item: any) => {
  49. selectedAccount.value = item.email
  50. loginForm.value.mail = item.email
  51. emailStep.value = 1
  52. }
  53. /**
  54. * dao: 倒计时60秒
  55. */
  56. const countSeconds = () => {
  57. seconds.value = 60
  58. const timer = setInterval(() => {
  59. seconds.value--
  60. if (seconds.value === 0)
  61. clearInterval(timer)
  62. }, 1000)
  63. }
  64. /**
  65. * 邮箱--发送验证码
  66. */
  67. const getMailCode = async () => {
  68. try {
  69. if (seconds.value > 0)
  70. return
  71. // 获取验证码
  72. // const res = await registerApi(loginForm.value.mail)
  73. countSeconds()
  74. }
  75. catch (error) {
  76. console.error('Error sending email code:', error)
  77. }
  78. }
  79. /**
  80. * 邮箱--验证是否存在--是否与已存在google的邮箱--下一步
  81. * @returns
  82. */
  83. async function sendEmail(formEl: FormInstance | undefined) {
  84. if (!formEl)
  85. return
  86. await formEl.validate(async (valid, fields) => {
  87. if (valid) {
  88. // 验证已存在google的邮箱
  89. isEmailGoogle.value = 'google' // 模拟google邮箱验证
  90. nextStep()
  91. }
  92. else { console.log('error submit!', fields) }
  93. })
  94. }
  95. /**
  96. * 邮箱--验证码--完成注册
  97. * @returns
  98. */
  99. async function finishCode(formEl: FormInstance | undefined) {
  100. errorCodeTxt.value = ''
  101. if (!formEl)
  102. return
  103. await formEl.validate(async (valid, fields) => {
  104. if (valid)
  105. await handleLogin()
  106. else console.log('error submit!', fields)
  107. })
  108. }
  109. /**
  110. * 登录--提交
  111. */
  112. async function handleLogin() {
  113. try {
  114. // await login(loginForm.value)
  115. // closeLoginModal({ status: true, isFirstLogin: true })
  116. isLoginModalOpen.value = false
  117. }
  118. catch (err) {
  119. errorCodeTxt.value = 'The code is wrong or invalid.'
  120. }
  121. }
  122. return { emailStep, loginForm, selectedAccount, onSelectAccount, errorCodeTxt, seconds, isEmailGoogle, sendEmail, nextStep, onSelectEmail, finishCode, backStep, getMailCode }
  123. }