1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| import { ApiError, request } from '@/api/request';
| import type {
| LoginParams,
| LoginResult,
| TenantLoginData,
| UserInfo,
| } from '@/types/auth';
|
| interface TenantLoginRequest {
| phone: string;
| password: string;
| tenantCode: string;
| }
|
| const toUserInfo = (data: TenantLoginData, params: LoginParams): UserInfo => {
| const phone = data.phone ?? params.phone.trim();
| const loginType = data.loginType?.toLowerCase() ?? '';
|
| return {
| id: data.employeeId ?? 0,
| username: phone,
| nickname: data.employeeName ?? phone,
| role: loginType.includes('admin') ? 'admin' : 'user',
| tenant: data.tenantCode ?? params.tenant.trim(),
| phone,
| };
| };
|
| /** 租户登录。 */
| export const loginApi = async (params: LoginParams): Promise<LoginResult> => {
| const data = await request<TenantLoginRequest, TenantLoginData>(
| {
| url: '/auth/tenant-login',
| method: 'POST',
| data: {
| phone: params.phone.trim(),
| password: params.password,
| tenantCode: params.tenant.trim(),
| },
| },
| {
| // 登录有副作用,不合并;错误由登录页统一提示。
| merge: false,
| showError: false,
| },
| );
|
| if (!data?.token) {
| throw new ApiError('登录响应中未找到 token', { data });
| }
|
| return {
| token: data.token,
| user: toUserInfo(data, params),
| };
| };
|
|