b5df6609
“wangming”
```
|
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
|
/** 系统 T 区战队(不可在门店端编辑) */
export function isTAreaTeamName(name) {
return !!(name && String(name).trim().endsWith('T区'))
}
export function mapPractitionerFromUser(u) {
return {
id: u.id,
name: u.realName || u.account || u.id
}
}
export function mapDetailToTeam(listRow, detailRes) {
const payload = detailRes?.data || detailRes || {}
const jsj = payload.jsj || payload
const members = payload.members || []
const teamId = listRow?.id || jsj?.id || ''
const teamName = listRow?.jsj || jsj?.jsj || ''
return {
id: teamId,
jsj: teamName,
members: (members || []).map((m, i) => ({
relationId: m.id,
userId: m.userId,
userName: m.userName || '无',
isLeader: Number(m.isLeader) === 1 ? 1 : 0,
sortOrder: m.sortOrder || i + 1
}))
}
}
export function buildMembersPayload(selectedIds, leaderId, getMemberName) {
const lid = leaderId || (selectedIds.length === 1 ? selectedIds[0] : '')
return selectedIds.map((userId, i) => ({
userId,
userName: getMemberName(userId),
isLeader: userId === lid ? 1 : 0,
sortOrder: i + 1
}))
}
/**
* 编辑战队时同步成员:增删、顾问变更
*/
export async function syncTeamMembers(teamId, oldMembers, newMembers, api) {
const oldMap = new Map((oldMembers || []).map(m => [m.userId, m]))
const newMap = new Map((newMembers || []).map(m => [m.userId, m]))
for (const [userId, old] of oldMap) {
const neu = newMap.get(userId)
if (!neu) {
if (old.relationId) {
await api.deleteJsjUserRelation({ id: old.relationId })
}
continue
}
if (Number(old.isLeader) !== Number(neu.isLeader) && old.relationId) {
await api.deleteJsjUserRelation({ id: old.relationId })
await api.addUserToJsj({
jsjId: teamId,
userId: neu.userId,
userName: neu.userName,
isLeader: neu.isLeader,
sortOrder: neu.sortOrder,
status: 'ACTIVE'
})
}
}
for (const [userId, neu] of newMap) {
if (!oldMap.has(userId)) {
await api.addUserToJsj({
jsjId: teamId,
userId: neu.userId,
userName: neu.userName,
isLeader: neu.isLeader,
sortOrder: neu.sortOrder,
status: 'ACTIVE'
})
}
}
}
|