fix: 修复报名详情页面文案和统计逻辑

- 修正错误文案: 单位型号人数 → 报名人数, 剩下显时(公共) → 预计时长(分钟)
- 重新设计参赛人数统计表格: 单位/单人项目/集体项目/男/女/合计
- 修复统计逻辑按项目类型和性别正确统计

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
DevOps
2026-01-06 11:47:56 +08:00
parent 586ad7e66e
commit 98c831eff0

View File

@@ -101,12 +101,10 @@
<div v-if="scope.row.hint" class="row-hint">{{ scope.row.hint }}</div> <div v-if="scope.row.hint" class="row-hint">{{ scope.row.hint }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="category" label="类别" width="80"></el-table-column> <el-table-column prop="singleCount" label="单人项目" width="100" align="center"></el-table-column>
<el-table-column prop="individual" label="2队" width="60" align="center"></el-table-column> <el-table-column prop="teamCount" label="集体项目" width="100" align="center"></el-table-column>
<el-table-column prop="dual" label="2组" width="60" align="center"></el-table-column> <el-table-column prop="male" label="" width="60" align="center"></el-table-column>
<el-table-column prop="team1101" label="1101" width="60" align="center"></el-table-column> <el-table-column prop="female" label="" width="60" align="center"></el-table-column>
<el-table-column prop="workers" label="工作人员" width="90" align="center"></el-table-column>
<el-table-column prop="female" label="女性组别" width="90" align="center"></el-table-column>
<el-table-column prop="total" label="合计" width="60" align="center"> <el-table-column prop="total" label="合计" width="60" align="center">
<template #default="scope"> <template #default="scope">
<span class="total-num">+{{ scope.row.total }}</span> <span class="total-num">+{{ scope.row.total }}</span>
@@ -127,8 +125,8 @@
</el-table-column> </el-table-column>
<el-table-column prop="participantCategory" label="参人/单位" width="100"></el-table-column> <el-table-column prop="participantCategory" label="参人/单位" width="100"></el-table-column>
<el-table-column prop="teamCount" label="队伍" width="80" align="center"></el-table-column> <el-table-column prop="teamCount" label="队伍" width="80" align="center"></el-table-column>
<el-table-column prop="singleTeamPeople" label="单位型号人数" width="120" align="center"></el-table-column> <el-table-column prop="singleTeamPeople" label="报名人数" width="120" align="center"></el-table-column>
<el-table-column prop="estimatedDuration" label="剩下显时(公共)" width="150" align="center"></el-table-column> <el-table-column prop="estimatedDuration" label="预计时长(分钟)" width="150" align="center"></el-table-column>
</el-table> </el-table>
</div> </div>
@@ -335,33 +333,50 @@ export default {
const participants = await this.getParticipants() const participants = await this.getParticipants()
console.log('参赛人员列表返回:', participants) console.log('参赛人员列表返回:', participants)
// 预加载项目信息
await this.preloadProjectInfo(participants)
// 按单位分组统计 // 按单位分组统计
const unitMap = new Map() const unitMap = new Map()
participants.forEach(p => { participants.forEach(p => {
// 兼容驼峰和下划线命名 // 兼容驼峰和下划线命名
const unit = p.organization || p.teamName || p.team_name || '未知单位' const unit = p.organization || p.teamName || p.team_name || '未知单位'
const projectId = p.projectId || p.project_id
const project = this.projectCache.get(projectId)
const projectType = project ? (project.type || 1) : 1 // 1=单人, 2=集体
if (!unitMap.has(unit)) { if (!unitMap.has(unit)) {
unitMap.set(unit, { unitMap.set(unit, {
schoolUnit: unit, schoolUnit: unit,
category: '', singleCount: 0,
individual: 0, teamCount: 0,
dual: 0, male: 0,
team1101: 0,
workers: 0,
female: 0, female: 0,
total: 0 total: 0
}) })
} }
const stat = unitMap.get(unit) const stat = unitMap.get(unit)
stat.total++ stat.total++
if (p.gender === 2) stat.female++
// 按项目类型统计
if (projectType === 1) {
stat.singleCount++
} else {
stat.teamCount++
}
// 按性别统计
if (p.gender === 1) {
stat.male++
} else if (p.gender === 2) {
stat.female++
}
}) })
this.participantsData = Array.from(unitMap.values()) this.participantsData = Array.from(unitMap.values())
} catch (err) { } catch (err) {
console.error('加载参赛人员统计失败', err) console.error('加载参赛人员统计失败', err)
this.$message.warning('加载参赛人员统计失败') this.$message.warning('加载参赛人员统计失败')
// 使用空数组作为默认值
this.participantsData = [] this.participantsData = []
} }
}, },