diff --git a/.workbuddy/memory/2026-07-18.md b/.workbuddy/memory/2026-07-18.md new file mode 100644 index 0000000..3943ba6 --- /dev/null +++ b/.workbuddy/memory/2026-07-18.md @@ -0,0 +1,40 @@ +# 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 等),本次改动无新增错误 diff --git a/src/api/passport/login/index.ts b/src/api/passport/login/index.ts index 6e4a498..3b80301 100644 --- a/src/api/passport/login/index.ts +++ b/src/api/passport/login/index.ts @@ -31,6 +31,48 @@ export async function login(data: LoginParam) { return Promise.reject(new Error(res.data.message)); } +/** + * 邮箱登录 + */ +export async function loginByEmail(data: LoginParam) { + const res = await request.post>( + 'https://server.websoft.top/api/loginByEmail', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + if (res.data.data?.user) { + const user = res.data.data?.user; + localStorage.setItem('TenantId', String(user.tenantId)); + localStorage.setItem('UserId', String(user.userId)); + } + + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 用户ID登录 + */ +export async function loginByUserId(data: LoginParam) { + const res = await request.post>( + 'https://server.websoft.top/api/loginByUserId', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + if (res.data.data?.user) { + const user = res.data.data?.user; + localStorage.setItem('TenantId', String(user.tenantId)); + localStorage.setItem('UserId', String(user.userId)); + } + + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 获取验证码 */ @@ -62,6 +104,27 @@ export async function loginBySms(data: LoginParam) { return Promise.reject(new Error(res.data.message)); } +/** + * 超管手机号短信登录 + */ +export async function loginBySuperAdminSms(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/loginBySuperAdminSms', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + if (res.data.data?.user) { + const user = res.data.data?.user; + localStorage.setItem('TenantId', String(user.tenantId)); + localStorage.setItem('UserId', String(user.userId)); + } + + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 发送短信验证码 */ diff --git a/src/api/passport/login/model/index.ts b/src/api/passport/login/model/index.ts index 1f1c822..b87c7c4 100644 --- a/src/api/passport/login/model/index.ts +++ b/src/api/passport/login/model/index.ts @@ -5,6 +5,10 @@ import type { User } from '@/api/system/user/model'; export interface LoginParam { // 账号 username?: string; + // 邮箱 + email?: string; + // 用户ID + userId?: string | number; // 密码 password?: string; // 租户id diff --git a/src/views/passport/login/index.vue b/src/views/passport/login/index.vue index b43a5cd..6760bd7 100644 --- a/src/views/passport/login/index.vue +++ b/src/views/passport/login/index.vue @@ -77,12 +77,12 @@ - +