index.vue 1.5 KB

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