# 2026-07-24 工作记录 ## 从 guilixu-admin 复制登录模块到 mp-vue mp-vue 是 Vue3 + Ant Design Vue + ele-admin-pro 模板项目,其登录模块是 guilixu-admin 改造前的旧版。本次把 guilixu-admin 已验证的登录增强功能完整移植过来。 ### 新增/修改文件 - `src/views/passport/forget/index.vue`(新建):忘记密码页,邮箱/手机两种找回,前3次免图形验证码,密码强度校验,调用 resetPassword。 - `src/api/passport/login/model/index.ts`:新增 `TenantOption`、`LoginOutcome`;`LoginResult` 增加 `tenants?`;`LoginParam` 增加 `smsCode?`。 - `src/api/passport/login/index.ts`:新增 `saveLoginState`、`loginBySelectTenant`、`sendSmsCaptchaByAdmin`、`sendEmailCaptcha`;`loginBySuperAdminSms` 改为返回 `LoginOutcome`(多租户 selectTenant / 单租户 ok)。 - `src/utils/request.ts`:请求拦截器支持 `X-Tenant-Skip`(适配 axios 0.27 的 `config.headers.common` 风格),登录前找回场景跳过租户头注入避免串租户。 - `src/api/layout/index.ts` + `model/index.ts`:新增 `resetPassword`(POST /resetPassword,带 X-Tenant-Skip 头)与 `ResetPasswordParam`。 - `src/views/passport/login/index.vue`:发送验证码前3次免图形验证(handleSendCode);onLoginBySms 处理 LoginOutcome 多租户选择;新增选择租户弹窗;账号登录增加"忘记密码"链接跳 /forget。 - `src/router/routes.ts`:启用 /forget 路由。 - `src/i18n/lang/zh_CN/login.ts` / `en/login.ts`:新增 forgetPage 命名空间。 ### 验证 - `vue-tsc`:本次改动文件无类型错误(项目本身存在大量与本次无关的 JSX 解析历史错误)。 - `vite build --outDir dist-verify-mp`:编译打包成功,forget 页 chunk 已生成,无 error/fail。临时产物已移至 /tmp。 ### 注意点 - mp-vue 用 axios 0.27.2,request 拦截器头写法与 guilixu-admin(axios 1.x)不同(用 `config.headers.common[...]`),X-Tenant-Skip 判断同时兼容 `config.headers['X-Tenant-Skip']` 与 `config.headers.common['X-Tenant-Skip']`。 - 后端接口 /sendEmailCaptcha、/sendSmsCaptchaByAdmin、/resetPassword、/loginBySelectTenant 需 guilixu-java 已实现(与 website-admin 同源 server.websoft.top,通常已具备)。