fix: 修复报名详情页面文案和统计逻辑
- 修正错误文案: 单位型号人数 → 报名人数, 剩下显时(公共) → 预计时长(分钟) - 重新设计参赛人数统计表格: 单位/单人项目/集体项目/男/女/合计 - 修复统计逻辑按项目类型和性别正确统计 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
@@ -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 = []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user