Blame view

store-pc/src/utils/goldTriangleHelper.js 2.24 KB
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'
        })
      }
    }
  }