team-member.ts
2.99 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import type {
TeamMemberCreateInput,
TeamMemberDto,
TeamMemberGetListQuery,
TeamMemberUpdateInput,
} from './account-types';
import type { FlPagedResult } from './types';
import { requestClient } from '#/api/request';
const PATH = '/team-member';
function toPhoneNumber(v: string | number | null | undefined): number | null {
if (v === null || v === undefined || v === '') {
return null;
}
const s = String(v).trim();
if (!s) {
return null;
}
return Number(s.replace(/\D/g, '')) || 0;
}
function scopeIdsForApi(ids: string[] | undefined): string[] | undefined {
const list = [
...new Set((ids ?? []).map((x) => String(x).trim()).filter(Boolean)),
];
return list.length ? list : undefined;
}
function buildCreatePayload(input: TeamMemberCreateInput) {
const phoneVal =
input.phone != null && input.phone !== ''
? toPhoneNumber(String(input.phone))
: null;
const partnerId = (input.partnerId ?? '').trim() || undefined;
const regionIds = scopeIdsForApi(input.regionIds);
return {
fullName: input.fullName,
userName: input.userName,
password: input.password,
email: input.email ?? null,
phone: phoneVal,
roleId: input.roleId,
partnerId,
partnerIds: partnerId ? [partnerId] : undefined,
regionIds,
groupIds: regionIds,
locationIds: input.locationIds,
locations: input.locationIds,
state: input.state,
};
}
function buildUpdatePayload(input: TeamMemberUpdateInput) {
const phoneVal =
input.phone != null && input.phone !== ''
? toPhoneNumber(String(input.phone))
: null;
const partnerId = (input.partnerId ?? '').trim() || undefined;
const regionIds = scopeIdsForApi(input.regionIds);
const payload: Record<string, unknown> = {
fullName: input.fullName,
userName: input.userName,
email: input.email ?? null,
phone: phoneVal,
roleId: input.roleId,
partnerId,
partnerIds: partnerId ? [partnerId] : undefined,
regionIds,
groupIds: regionIds,
locationIds: input.locationIds,
locations: input.locationIds,
state: input.state,
};
if (input.password) {
payload.password = input.password;
}
return payload;
}
export function teamMemberList(params?: TeamMemberGetListQuery) {
return requestClient.get<FlPagedResult<TeamMemberDto>>(PATH, {
params,
errorMessageMode: 'message',
});
}
export function teamMemberInfo(id: string) {
return requestClient.get<TeamMemberDto>(
`${PATH}/${encodeURIComponent(id)}`,
{ errorMessageMode: 'message' },
);
}
export function teamMemberAdd(data: TeamMemberCreateInput) {
return requestClient.postWithMsg<TeamMemberDto>(
PATH,
buildCreatePayload(data),
);
}
export function teamMemberUpdate(id: string, data: TeamMemberUpdateInput) {
return requestClient.putWithMsg<TeamMemberDto>(
`${PATH}/${encodeURIComponent(id)}`,
buildUpdatePayload(data),
);
}
export function teamMemberRemove(id: string) {
return requestClient.deleteWithMsg<void>(
`${PATH}/${encodeURIComponent(id)}`,
);
}