# 2026-07-18 工作日志

## 手机号登录改用 loginBySuperAdminSms 接口

### 改动文件
1. `src/api/passport/login/index.ts`
   - 新增 `loginBySuperAdminSms()` 方法，调用 `/loginBySuperAdminSms` 接口
   - 保留原有 `loginBySms()` 方法（其他页面如 register/dealer 仍在使用）
   - 新方法逻辑与 `loginBySms` 一致：成功后 setToken + 存 TenantId/UserId

2. `src/views/passport/login/index.vue`
   - import 替换：`loginBySms` → `loginBySuperAdminSms`
   - `onLoginBySms()` 函数中调用替换：`loginBySms(form)` → `loginBySuperAdminSms(form)`
   - 多租户选择逻辑（`listAdminsByPhoneAll`）保持不变

### 注意
- 仅改了管理后台登录页，注册页面（register/dealer）仍用 `loginBySms`

## 账号登录合并邮箱/用户ID登录

### 需求
账号登录输入框同时支持「邮箱」和「用户ID」：邮箱 → `https://server.websoft.top/api/loginByEmail`，纯数字 → `https://server.websoft.top/api/loginByUserId`。

### 改动文件
1. `src/api/passport/login/model/index.ts`
   - `LoginParam` 新增 `email?: string` 和 `userId?: string | number`

2. `src/api/passport/login/index.ts`
   - 新增 `loginByEmail()` / `loginByUserId()`，逻辑同 `login()`（setToken + 存 TenantId/UserId）

3. `src/views/passport/login/index.vue`
   - 表单字段 `userId` → `account`（新增 `LoginForm = User & { account?: string }` 类型）
   - 输入框 placeholder 改为「邮箱 / 用户ID」，form-item name 改为 `account`
   - 校验规则 `userId` → `account`
   - `submit()` 用正则判断邮箱(`/^[^\s@]+@[^\s@]+\.[^\s@]+$/`) / 纯数字(`/^\d+$/`)，路由到对应接口；格式不符提示「请输入正确的邮箱或用户ID」
   - 移除未使用的 `login` 导入

### 注意
- 外部接口用绝对 URL（`https://server.websoft.top/api/...`），未走 SERVER_API_URL 代理
- `vue-tsc` 全量检查仍有大量历史错误（ByteMdEditor、shopActivity 等），本次改动无新增错误

## 登录页右上角切换图标互换

### 需求
`src/views/passport/login/index.vue` 右上角扫码/手机切换按钮，图标原本与「目标模式」相反，需互换。

### 改动
- 第 65-66 行：`v-if="loginType === 'scan'"` 显示 `QrcodeOutlined` → 改为 `MobileOutlined`；`v-else` 显示 `MobileOutlined` → 改为 `QrcodeOutlined`
- 即：扫码模式下显示手机图标（切回账号/手机），账号/手机模式显示二维码图标（切到扫码）
