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

87 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实现独立邀请码组件并集成到登录表单
## 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. 支持明暗主题切换