index.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <div class="loginPopup">
  3. <el-dialog v-model="dialogVisible" align-center width="430" :before-close="beforeClose" custom-class="login !rounded-[var(--rounded-big)]" :show-close="false">
  4. <div class="relative">
  5. <span class="iconfont icon-tubiaoV6-3 absolute top-[-33px] right-[-33px] text-[#fff] !text-[24px] cursor-pointer" @click="handleClose"></span>
  6. <login v-if="type === 'login' && dialogVisible" @typeChange="typeChange"/>
  7. <register v-if="type === 'register' && dialogVisible" @typeChange="typeChange" />
  8. </div>
  9. </el-dialog>
  10. </div>
  11. </template>
  12. <script lang="ts" setup>
  13. import { ref,computed,watch } from 'vue'
  14. import login from './login.vue'
  15. import register from './register.vue'
  16. import useMemberStore from '@/stores/member'
  17. const memberStore = useMemberStore()
  18. //弹框状态
  19. const dialogVisible = computed(()=>{
  20. return memberStore.loginPopup
  21. })
  22. //弹框关闭
  23. const beforeClose = (next)=>{
  24. memberStore.logClose()
  25. type.value = 'login'
  26. next()
  27. }
  28. const handleClose = ()=>{
  29. memberStore.logClose()
  30. type.value = 'login'
  31. }
  32. //判断当前是登录还是注册
  33. let type = ref('login')
  34. const typeChange = (val:any)=>{
  35. type.value = val
  36. }
  37. </script>
  38. <style lang="scss" scoped>
  39. :deep(.el-form-item) {
  40. .el-input__wrapper {
  41. box-shadow: unset !important;
  42. border-radius: 0;
  43. &.is-focus {
  44. border: none;
  45. }
  46. }
  47. &.is-error {
  48. .el-input__wrapper {
  49. border: none;
  50. }
  51. }
  52. }
  53. :deep(.el-form-item__error) {
  54. padding-top: 5px;
  55. }
  56. .text-color {
  57. color: var(--el-color-primary);
  58. }
  59. :deep(.el-dialog__header){
  60. padding: 0 !important;
  61. }
  62. :deep(.el-dialog__body){
  63. padding: 0 !important;
  64. }
  65. :deep(.login .el-dialog__headerbtn){
  66. z-index: 99;
  67. }
  68. </style>