## 实施计划 ### 1. 分析当前代码结构 - **PhoneLogin.vue**:手机号登录页面主组件,包含登录卡片和子组件调用 - **PhoneLoginForm.vue**:登录表单组件,包含登录方式切换和表单字段 - **login.js**:包含登录相关的API调用方法,如`sendPhoneCode`和`phoneLoginCode` ### 2. 修改PhoneLoginForm.vue组件 #### 模板部分修改 - **更新登录模式切换**:将现有的三种模式(密码登录、注册、重置密码)改为仅保留登录相关的模式 - **添加密码/验证码登录切换**:在登录模式下,添加一个新的切换开关,允许用户在密码登录和验证码登录之间切换 - **调整表单字段显示**:根据选择的登录方式显示相应的表单字段 #### 脚本部分修改 - **添加登录方式状态**:添加`loginMethod` ref,用于跟踪用户选择的是密码登录还是验证码登录 - **设置默认登录方式**:将默认登录方式设置为验证码登录 - **更新表单验证逻辑**:根据选择的登录方式调整验证规则 - **更新发送验证码逻辑**:发送登录验证码时传递`purpose: 'login'` - **更新表单提交逻辑**:验证码登录时调用`phoneLoginCode`函数 ### 3. 修改PhoneLogin.vue组件 - **更新handleLogin方法**:确保根据登录方式调用正确的登录函数 ### 4. 实施细节 #### PhoneLoginForm.vue修改点 - **第155行**:将默认`loginMode`改为'code' - **第38-70行**:添加密码/验证码登录切换按钮 - **第256-285行**:更新`handleSendCode`方法,确保发送验证码时传递正确的purpose - **第288-316行**:更新`handleSubmit`方法,处理验证码登录逻辑 #### PhoneLogin.vue修改点 - **第79-81行**:更新`handleLogin`方法,根据登录方式调用正确的登录函数 ### 5. 预期行为 - 用户默认看到验证码登录界面 - 用户可以在密码登录和验证码登录之间切换 - 发送登录验证码时,传递`purpose: 'login'` - 验证码登录调用`phoneLoginCode`函数 - 密码登录保持原有功能不变 ### 6. 需要修改的文件 - `d:\work\Aiproject\DeotalandAi\apps\frontend\src\components\auth\PhoneLoginForm.vue` - `d:\work\Aiproject\DeotalandAi\apps\frontend\src\views\Login\PhoneLogin.vue`