index.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!-- @format -->
  2. <script setup lang="ts">
  3. import Choice from './comp/choice.vue'
  4. import Mail from './comp/email/index.vue'
  5. import Code from './comp/email/code.vue'
  6. import Google from './comp/email/google.vue'
  7. import AccountList from './comp/account/list.vue'
  8. import Info from './comp/info/index.vue'
  9. import Finish from './comp/info/finish.vue'
  10. import SubmitRequest from './comp/info/submitRequest.vue'
  11. import Request from './comp/info/request.vue'
  12. import useLoginAndDownload from './useLoginAndDownload'
  13. import { useUserStore } from '@/stores/modules/user'
  14. import { useCommonStore } from '@/stores/modules/common'
  15. import { Condition } from '@/enums/const-enums'
  16. const commonStore = useCommonStore()
  17. const { downloadCatalog, loginedAccountList, loginType } = storeToRefs(commonStore)
  18. const { emailStep, isEmailGoogle, setEmailStep } = useLoginAndDownload()
  19. const userStore = useUserStore()
  20. const { isLogin, isCompletedInfo } = storeToRefs(userStore)
  21. const { isLoginAndDownloadOpen } = useLoginAndDownLoadModal()
  22. watch(() => loginedAccountList.value, (newVal: any) => {
  23. if (newVal.length > 0)
  24. commonStore.setLoginType('account')
  25. else
  26. commonStore.setLoginType('choice')
  27. }, { immediate: true })
  28. watchEffect(() => {
  29. console.log('watchEffect-------1000', isLogin.value, isCompletedInfo.value)
  30. if (isLogin.value) {
  31. if (isCompletedInfo.value) {
  32. if (downloadCatalog.value.downloadCondition === Condition.DOWNLOAD)
  33. setEmailStep(4)
  34. else
  35. setEmailStep(3)
  36. }
  37. else { setEmailStep(3) }
  38. }
  39. })
  40. onUnmounted(() => {
  41. console.log('组件卸载了', isCompletedInfo.value)
  42. // setEmailStep(3)
  43. })
  44. </script>
  45. <template>
  46. <el-dialog
  47. v-model="isLoginAndDownloadOpen"
  48. :append-to-body="true"
  49. :close-on-click-modal="false"
  50. :close-on-press-escape="false"
  51. width="880"
  52. >
  53. <img
  54. src="@/assets/images/login_close_icon.png"
  55. alt=""
  56. class="w-32px h-32px bg-#F4F4F4 cursor-pointer p-8px b-rd-50% pos-absolute top-24px right-24px"
  57. @click="isLoginAndDownloadOpen = false"
  58. >
  59. <div class="flex min-h-550px">
  60. <div class="pt-110px pb-52px px-45px flex flex-col justify-between pos-relative w-375px bg-cover bg-no-repeat" :style="{ backgroundImage: `url(${downloadCatalog.coverImg})` }">
  61. <svgo-spark-logo
  62. class="!w-100px !h-24px text-#fff"
  63. />
  64. <div>
  65. <div class="custom-title-font text-24px fw-800 text-#fff mb-24px">
  66. Download The Catalog
  67. </div>
  68. <div class="mb-10px custom-title-font text-18px fw-800 text-#fff">
  69. {{ downloadCatalog.title }}
  70. </div>
  71. <div class="text-14px text-#fff lh-22px mb-36px">
  72. {{ downloadCatalog.subhead }}
  73. </div>
  74. <div
  75. v-if="downloadCatalog.blogSlug && (emailStep === 0 || emailStep === 4)"
  76. class="w-110px h-32px lh-32px text-center b-rd-6px text-14px text-#9B6CFF fw-bold b-solid b-1px b-#9B6CFF cursor-pointer hover:bg-#9B6CFF hover:text-#fff"
  77. >
  78. <NuxtLink :to="`/blog/${downloadCatalog.blogSlug}`">
  79. Learn More
  80. </NuxtLink>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="flex-1 b-rd-10px bg-#fff px-70px pt-100px">
  85. <div v-if="!isLogin">
  86. <!-- 登陆部分 -->
  87. <AccountList v-if="emailStep === 0 && loginedAccountList.length && loginType === 'account'" />
  88. <Choice v-if="emailStep === 0 && loginType === 'choice'" />
  89. <Mail v-if="emailStep === 1" />
  90. <Code v-if="emailStep === 2 && !isEmailGoogle" />
  91. <Google v-if="emailStep === 2 && isEmailGoogle" />
  92. </div>
  93. <!-- 填写信息 -->
  94. <Info v-if="emailStep === 3 && !isCompletedInfo" />
  95. <SubmitRequest v-if="emailStep === 3 && !!isCompletedInfo && downloadCatalog.downloadCondition === Condition.REQUEST" />
  96. <Finish v-if="emailStep === 4 && downloadCatalog.downloadCondition === Condition.DOWNLOAD" />
  97. <Request v-if="emailStep === 4 && downloadCatalog.downloadCondition === Condition.REQUEST" />
  98. </div>
  99. </div>
  100. </el-dialog>
  101. </template>
  102. <style lang="less">
  103. .el-dialog {
  104. border-radius: 10px;
  105. padding: 0;
  106. overflow: hidden;
  107. .el-dialog__header {
  108. display: none;
  109. &.show-close {
  110. .el-dialog__headerbtn {
  111. width: 60px;
  112. height: 60px;
  113. .el-dialog__close {
  114. font-size: 30px;
  115. color: #000;
  116. }
  117. }
  118. }
  119. }
  120. }
  121. </style>