UNPKG

press-next

Version:

Vue3 组件库,支持 Composition API

176 lines (155 loc) 3.76 kB
import { BATTLE_STATE_MAP, REMATCH_STATE_MAP, // SCHEDULE_CUSTOM_STATUS_MAP, SCHEDULE_STATUS_MAP, } from './config'; // import { timeStampFormat } from 't-comm/es/time/time'; enum MiddleCodeEnum { end = 'end', ing = 'ing', entering = 'entering', notStart = 'notStart', } export function mapBattleStatus(status: any) { if (status <= BATTLE_STATE_MAP.WAIT_CREATE_ROOM) { return MiddleCodeEnum.entering; } if (status > BATTLE_STATE_MAP.WAIT_CREATE_ROOM && status <= BATTLE_STATE_MAP.IN_BATTLE) { return MiddleCodeEnum.ing; } if (status >= BATTLE_STATE_MAP.ENDED_READING_DATA && status <= BATTLE_STATE_MAP.ENDED) { return MiddleCodeEnum.end; } return MiddleCodeEnum.notStart; } function getBattleStatus({ battleState = 0, battleList = [], curBo = 0, }: { battleState?: number, battleList?: Array<any>, curBo?: number, }) { if (battleState === 0 || ((battleList?.length === curBo) && battleList?.[battleList?.length - 1]?.battle_state === BATTLE_STATE_MAP.ENDED) || battleList?.length <= 0 ) { return MiddleCodeEnum.notStart; } return mapBattleStatus(battleState); } /** * timeDesc: 赛程树用,结束时间 * statusDesc: 赛程树用,描述 * playingDesc: 赛程树和列表视图用,用于比赛中+图标 * listViewStatusDesc: 列表视图用,用于比赛中+图标 * battleDesc: 操作面板用 */ function getStatusDescInner({ code, // time, isManualStart = false, }: { code: MiddleCodeEnum; time?: number; isManualStart: boolean; }) { if (code === MiddleCodeEnum.end) { // const timeDesc = timeStampFormat(time, 'M/d hh:mm'); return { timeDesc: '', statusDesc: '已结束', playingDesc: '', listViewStatusDesc: '已结束', battleDesc: '已结束', }; } if (code === MiddleCodeEnum.ing) { return { timeDesc: '', statusDesc: '', playingDesc: '比赛中', listViewStatusDesc: '', battleDesc: '比赛中', }; } if (code === MiddleCodeEnum.entering) { return { timeDesc: '', statusDesc: '上场中', playingDesc: '', listViewStatusDesc: '上场中', battleDesc: '上场中', }; } if (code === MiddleCodeEnum.notStart) { const desc = isManualStart ? '待管理员开赛' : '未开始'; return { timeDesc: '', statusDesc: desc, playingDesc: '', listViewStatusDesc: desc, battleDesc: '未开始', }; } return { timeDesc: '', statusDesc: '', playingDesc: '', listViewStatusDesc: '', battleDesc: '', }; } export function getGpBattleState({ state = 0, battleState = 0, curBo = 0, battleList = [], isManualStart = false, time = 0, }) { const code = getMiddleCode({ state, battleState, curBo, battleList, }); return getStatusDescInner({ code, time, isManualStart, }); } function getMiddleCode({ state = 0, battleState = 0, curBo = 0, battleList = [], }) { if ([SCHEDULE_STATUS_MAP.ENDED].includes(state as any)) { return MiddleCodeEnum.end; } if (!state) { return MiddleCodeEnum.notStart; } if (battleState && !battleList?.length) { // 对应 list-view 数据,没有 battle_list,只有 battle_state return mapBattleStatus(battleState); } if (battleList?.length) { const rNode: Record<string, any> = battleList.find((item: any) => { if (item.bonum === curBo && +item.rematch_state !== REMATCH_STATE_MAP.REMATCH) { return true; } }) || {}; return rNode ? getBattleStatus({ battleState: rNode.battle_state, battleList, curBo, }) : MiddleCodeEnum.notStart; } return MiddleCodeEnum.notStart; }