2026-04-10 16:10:33 +08:00

92 lines
2.7 KiB
JavaScript

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 : [];
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' });
}
}
});