Blame view

泰额版/Food Labeling Management Code/Yi.Vben5.Vue3/apps/web-antd/src/api/food-labeling/team-member.ts 2.99 KB
91821909   杨鑫   最新
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)}`,
    );
  }