deotalandAi/.trae/documents/实现登录表单邀请码功能.md

2.9 KiB
Raw Blame History

实现独立邀请码组件并集成到登录表单

1. 创建独立的邀请码组件

1.1 创建 InviteCodeInput.vue 组件

  • 组件路径:src/components/auth/InviteCodeInput.vue
  • 实现邀请码输入框包含label、input和错误提示
  • 使用与现有表单相同的样式和结构
  • 添加邀请码的必填验证逻辑
  • 支持实时验证和错误提示
  • 支持加载状态

1.2 组件功能设计

  • 支持v-model双向绑定
  • 支持自定义placeholder和label
  • 支持错误信息显示
  • 支持禁用状态
  • 支持聚焦和失焦事件

2. 更新 LoginForm.vue 组件

2.1 引入并使用 InviteCodeInput 组件

  • 在LoginForm.vue中引入InviteCodeInput组件
  • 在登录按钮下方添加一个div容器使用divider类名进行隔离
  • 在div容器中使用InviteCodeInput组件
  • 传递必要的props和事件

2.2 更新表单数据和验证

  • 在form对象中添加inviteCode字段
  • 在rules中添加inviteCode的必填验证
  • 添加inviteCodeError状态变量
  • 更新表单有效性判断包含inviteCode验证

3. 更新 Login.vue 页面

3.1 添加邀请码状态管理

  • 在Login.vue中添加inviteCode状态变量
  • 添加inviteCodeError状态变量
  • 添加validateInviteCode函数

3.2 更新Google登录按钮逻辑

  • 将inviteCode状态传递给GoogleOAuthButton组件
  • 更新GoogleOAuthButton的disabled属性只有inviteCode有效时才启用
  • 确保Google登录流程能够获取到邀请码信息

4. 实现样式隔离

4.1 使用divider进行样式隔离

  • 在LoginForm组件和InviteCodeInput组件之间添加divider
  • 确保视觉上的清晰分隔
  • 保持与现有分割线一致的样式

5. 实现Google登录与邀请码的关联

5.1 共享邀请码状态

  • 确保LoginForm和Google登录按钮使用同一个邀请码状态
  • 实现跨组件的状态同步
  • 确保Google登录时能够传递邀请码信息到后端

6. 国际化支持

6.1 添加邀请码相关的i18n翻译

  • 在i18n配置文件中添加邀请码相关的翻译文本
  • 确保中英文都有对应的翻译

7. 响应式设计

7.1 确保邀请码组件在各种屏幕尺寸下正常显示

  • 适配移动端、平板端和桌面端
  • 确保在不同主题下正常显示

实现步骤

  1. 创建独立的InviteCodeInput.vue组件
  2. 更新LoginForm.vue引入并使用InviteCodeInput组件
  3. 更新Login.vue添加邀请码状态管理和Google登录按钮的禁用逻辑
  4. 实现样式隔离和响应式设计
  5. 测试所有功能确保邀请码功能正常工作且Google登录按钮只有在填写邀请码后才能使用

预期效果

  1. 登录表单下方新增邀请码输入组件用divider隔离
  2. 邀请码为必填项,有实时验证和错误提示
  3. Google登录按钮初始禁用填写邀请码后启用
  4. 邀请码组件样式与现有表单保持一致
  5. 支持响应式设计和国际化
  6. 支持明暗主题切换