goldTriangleHelper.js 2.24 KB
/** 系统 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'
      })
    }
  }
}