UNPKG

press-plus

Version:
129 lines (106 loc) 4.07 kB
import { SPECIAL_TEAM_STATE_MAP, SCH_STATE_MAP, SPECIAL_TEAM_ID_MAP } from '../config'; function getFromBracketDesc(preNode: Record<string, any> = {}, roundInfo: Record<string, any>) { if (preNode === null) { return '轮空'; } // console.log('preNode', preNode); const { round_type: roundType, bracket_id: bracketId } = preNode; const { round_type: nowRoundType } = roundInfo; const isWinner = roundType === 'winner'; const postfixDesc = nowRoundType === 'loser' && isWinner ? '败者' : '胜者'; return `${isWinner ? 'U' : 'L'}${bracketId}${postfixDesc}`; } /** * 1. 若 team_id = "999" 表示 “弃权” 2. both_team_set < 3,team_id="" 表示“待定” 3. both_team_set = 3 team_id = "" 表示 “轮空” 4. both_team_set = 4 也表示双方待定 */ // 获取队伍信息 export function getTeamInfo( nodeItem: Record<string, any> = {}, pos: string, isPreview: number, roundInfo: Record<string, any>, teamMap: Record<string, any>, ) { // nodeItem.sch_score.teama_id = '0' // nodeItem.sch_score.teamb_id = '0' const schScore = nodeItem.sch_score || {}; const bothTeamSet = nodeItem?.sch_dantao?.both_team_set || 0; const teamid = schScore[`team${pos}_id`]; const teamInfo = { ...(teamMap[teamid] || {}), }; let preTreeNode = []; try { preTreeNode = JSON.parse(nodeItem?.sch_rule?.pre_tree_node); } catch (e) { // } if (preTreeNode?.length) { const index = pos === 'a' ? 0 : 1; const fromBracketDesc = getFromBracketDesc(preTreeNode[index], roundInfo); teamInfo.fromBracketDesc = fromBracketDesc; } // 根据teamid和bothTeamSet,联合判断状态是轮空还是待定 if (!teamid) { if (bothTeamSet == 4 || bothTeamSet < 3) { teamInfo.teamname = SPECIAL_TEAM_STATE_MAP.DAI_DING.name; teamInfo.teamavatar = SPECIAL_TEAM_STATE_MAP.DAI_DING.avatar; nodeItem.state = SPECIAL_TEAM_STATE_MAP.DAI_DING.state; nodeItem.specState = SPECIAL_TEAM_STATE_MAP.DAI_DING.specState; } else { teamInfo.teamname = SPECIAL_TEAM_STATE_MAP.LUN_KONG.name; teamInfo.teamavatar = SPECIAL_TEAM_STATE_MAP.LUN_KONG.avatar; nodeItem.state = SPECIAL_TEAM_STATE_MAP.LUN_KONG.state; nodeItem.specState = SPECIAL_TEAM_STATE_MAP.LUN_KONG.specState; } } else if (teamid == 999) { teamInfo.teamname = SPECIAL_TEAM_STATE_MAP.QUIT_RIGHT.name; teamInfo.specState = SPECIAL_TEAM_STATE_MAP.QUIT_RIGHT.specState; teamInfo.teamavatar = SPECIAL_TEAM_STATE_MAP.QUIT_RIGHT.avatar; } else { teamInfo.score = schScore[`team${pos}_score`] || 0; } // 裁判强制设置结果的,只有AdminResult有值,winner没有值 if (nodeItem.admin_result && nodeItem.admin_result === teamid) { teamInfo.isWinner = 1; } else if (!nodeItem.admin_result && nodeItem.winner && nodeItem.winner === teamid) { teamInfo.isWinner = 1; } if ((nodeItem.admin_result == 999 || (!nodeItem.admin_result && nodeItem.winner == 999)) && teamInfo.teamname != SPECIAL_TEAM_STATE_MAP.QUIT_RIGHT.name // 不要显示两个弃字 ) { teamInfo.specState = SPECIAL_TEAM_STATE_MAP.QUIT_RIGHT.specState; } // 处理赛程状态 nodeItem.status = SCH_STATE_MAP[(nodeItem.state || 0) as keyof typeof SCH_STATE_MAP]; // 预赛程逻辑 if (isPreview) { if (teamid === undefined) { schScore[`team${pos}_id`] = SPECIAL_TEAM_ID_MAP.PREVIEW_EMPTY; teamInfo.teamid = SPECIAL_TEAM_ID_MAP.PREVIEW_EMPTY; } else { schScore[`team${pos}_id`] = SPECIAL_TEAM_ID_MAP.PREVIEW; teamInfo.teamid = SPECIAL_TEAM_ID_MAP.PREVIEW; } } return teamInfo; } /** * 拉平队伍 * @param {Array} teamList */ export function flattenTeamInfo(teamList: Array<any> = []) { return teamList.reduce((acc, item) => { acc[item.teamid] = item; return acc; }, {}); } export const iFindTeam = ( schInfo: Record<string, any>, myTeamId: string, ) => schInfo?.battleList?.[0]?.teamList?.[0]?.teamid == myTeamId || schInfo?.battleList?.[0]?.teamList?.[1]?.teamid == myTeamId;