import { View, Text, Image, ScrollView } from "@tarojs/components"; import dayjs from "dayjs"; import img from "@/config/images"; import { formatNtrpDisplay } from "@/utils/helper"; import styles from "./index.module.scss"; // 参与者 export default function Participants(props) { const { detail = {}, handleJoinGame, handleViewUserInfo } = props; const participants = detail.participants || []; const { participant_count, max_participants, user_action_status = {}, start_time, } = detail; const { can_join, can_pay, can_substitute, is_substituting, waiting_start } = user_action_status; const showApplicationEntry = [can_pay, can_substitute, is_substituting, waiting_start].every( (item) => !item ) && can_join && dayjs(start_time).isAfter(dayjs()); const leftCount = max_participants - participant_count; return ( 参与者 · {leftCount > 0 ? `剩余空位 ${leftCount}` : "已满员"} {participant_count > 0 || showApplicationEntry ? ( {/* application */} {showApplicationEntry && ( { handleJoinGame(); }} > 申请加入 )} {/* participants list */} {participants.map((participant) => { const { is_organizer, user: { avatar_url, nickname, level, ntrp_level, id: participant_user_id, }, } = participant; const role = is_organizer ? "组织者" : "参与者"; // 优先使用 ntrp_level,如果没有则使用 level const ntrpValue = ntrp_level || level; // 格式化显示 NTRP,如果没有值则显示"初学者" const displayNtrp = ntrpValue ? formatNtrpDisplay(ntrpValue) : "初学者"; return ( {nickname || "未知"} {displayNtrp} {role} ); })} ) : ( "" )} ); }