xinli/xinlidsj/登录弹窗实现说明.md
2026-02-25 18:16:20 +08:00

2.8 KiB
Raw Blame History

登录弹窗实现说明

功能概述

实现了用户访问系统时,如果未登录则自动弹出登录弹窗,要求用户登录后才能使用系统功能。

实现方式

1. 创建登录弹窗组件

文件: xinlidsj/components/LoginModal.vue

功能特点:

  • 美观的弹窗UI设计
  • 支持账号密码登录
  • 登录状态加载提示
  • 登录成功后自动关闭弹窗并刷新页面
  • 可配置是否允许关闭(closable属性)
  • 自动记住上次登录的账号

使用方法:

<LoginModal 
  :show="showLoginModal" 
  :closable="false" 
  @success="onLoginSuccess" 
  @close="showLoginModal = false" 
/>

Props:

  • show: Boolean - 是否显示弹窗
  • closable: Boolean - 是否允许关闭弹窗默认false强制登录

Events:

  • success: 登录成功时触发
  • close: 关闭弹窗时触发

2. 首页集成登录弹窗

文件: xinlidsj/pages/index/index.vue

修改内容:

  1. 引入 LoginModal 组件
  2. 添加 showLoginModal 数据属性
  3. onLoadonShow 生命周期中检查登录状态
  4. 未登录时显示登录弹窗
  5. 登录成功后初始化应用数据

核心逻辑:

onLoad() {
  // 检查登录状态
  const token = getToken()
  if (!token) {
    this.showLoginModal = true  // 显示登录弹窗
    return
  }
  this.initApp()  // 已登录,初始化应用
}

3. 登录成功处理

登录成功后的流程:

  1. 保存token到本地存储
  2. 触发 success 事件
  3. 父组件调用 onLoginSuccess() 方法
  4. 初始化应用数据(加载视频、消息、数据等)
  5. 自动关闭登录弹窗
  6. 刷新当前页面

用户体验

未登录状态

  • 访问首页时自动弹出登录弹窗
  • 弹窗遮罩层阻止用户操作页面内容
  • 不允许关闭弹窗(closable=false),必须登录
  • 点击遮罩层会提示"请先登录后才能使用"

登录过程

  • 输入账号密码
  • 点击登录按钮或按回车键提交
  • 显示"登录中..."加载状态
  • 登录失败显示错误提示
  • 登录成功显示成功提示并自动关闭弹窗

已登录状态

  • 直接进入系统,不显示登录弹窗
  • 正常使用所有功能

样式特点

  • 现代化的弹窗设计
  • 半透明黑色遮罩层
  • 圆角卡片式弹窗
  • 输入框聚焦时高亮效果
  • 响应式布局,适配不同屏幕尺寸

扩展性

如果需要在其他页面也使用登录弹窗,只需:

  1. 引入 LoginModal 组件
  2. 添加 showLoginModal 数据属性
  3. 在页面加载时检查登录状态
  4. 根据需要设置 closable 属性

注意事项

  1. 登录弹窗使用 z-index: 9999 确保在最上层显示
  2. 弹窗不可关闭时,点击遮罩层会有友好提示
  3. 登录成功后会自动刷新当前页面数据
  4. 密码输入框使用 password 类型,确保安全性