const auth = require('../../../utils/auth'); const { formatDateTime } = require('../../../utils/format'); function genderText(v) { if (v === '男' || v === '女') return v; const n = Number(v); if (n === 0) return '男'; if (n === 1) return '女'; if (n === 2) return '未知'; return v != null && v !== '' ? String(v) : '—'; } function safeNumber(v, fallback = 0) { const n = Number(v); return Number.isNaN(n) ? fallback : n; } function normalizeMember(m) { const mm = m && typeof m === 'object' ? m : {}; const id = mm.id != null ? mm.id : mm.Id; const name = mm.name || mm.Name || '—'; const gender = genderText(mm.gender != null ? mm.gender : mm.Gender); const age = mm.age != null ? safeNumber(mm.age, '—') : mm.Age != null ? safeNumber(mm.Age, '—') : '—'; return { id: id != null ? id : `${name}-${gender}-${age}`, name, gender, age }; } function normalizeTeamDetail(raw) { const d = raw && typeof raw === 'object' ? raw : {}; const leader = d.leader && typeof d.leader === 'object' ? d.leader : null; const coach = d.coach && typeof d.coach === 'object' ? d.coach : null; const membersRaw = (Array.isArray(d.members) ? d.members : []).filter(m => { const pt = m && (m.personType != null ? m.personType : m.PersonType); return Number(pt) === 1; }); const createdTime = d.createdTime || d.CreatedTime || d.createTime || d.CreateTime || ''; return { id: d.id != null ? d.id : d.Id, name: d.name || d.Name || '—', memberCount: safeNumber(d.memberCount != null ? d.memberCount : d.MemberCount, membersRaw.length), leaderName: (leader && (leader.name || leader.Name)) || d.leaderName || d.LeaderName || '', coachName: (coach && (coach.name || coach.Name)) || d.coachName || d.CoachName || '', createdTimeStr: createdTime ? formatDateTime(String(createdTime)) : '-', members: membersRaw.map(normalizeMember) }; } Page({ data: { id: null, loading: false, detail: { name: '', memberCount: 0, leaderName: '', coachName: '', createdTimeStr: '', members: [] } }, onLoad(options) { const id = options && options.id ? Number(options.id) : null; this.setData({ id }); if (!id) { wx.showToast({ title: '缺少团队ID', icon: 'none' }); return; } this.loadDetail(id); }, async loadDetail(id) { if (this.data.loading) return; this.setData({ loading: true }); try { const res = await auth.fetchMyTeamDetail(id); const detail = normalizeTeamDetail(res); this.setData({ detail }); } catch (err) { wx.showToast({ title: err?.message || '加载失败', icon: 'none' }); } finally { this.setData({ loading: false }); } }, onBack() { if (getCurrentPages().length > 1) { wx.navigateBack(); } else { wx.navigateTo({ url: '/subpackages/mine/team/team' }); } } });