diff --git a/src/pages/add-team/add-team.vue b/src/pages/add-team/add-team.vue index 22fffe1..7febf2c 100644 --- a/src/pages/add-team/add-team.vue +++ b/src/pages/add-team/add-team.vue @@ -119,6 +119,15 @@ export default { list = res } + // Deduplicate by id + const seen = new Set() + list = list.filter(item => { + const key = item.id + if (seen.has(key)) return false + seen.add(key) + return true + }) + this.playerList = list.map(item => ({ id: item.id, name: item.name || item.playerName diff --git a/src/pages/event-register/event-register.vue b/src/pages/event-register/event-register.vue index 623a2ad..2245721 100644 --- a/src/pages/event-register/event-register.vue +++ b/src/pages/event-register/event-register.vue @@ -66,13 +66,16 @@ - + - {{ item.name }} + + {{ item.name }} + 已报名 + 成员数:{{ item.memberCount || 0 }}人 @@ -482,12 +485,43 @@ export default { }) let list = res.records || (Array.isArray(res) ? res : []) - this.teamList = list.map(item => ({ - id: item.id, - name: item.teamName || item.name, - memberCount: item.memberCount || 0, - selected: false - })) + + // Deduplicate by id + const seen = new Set() + list = list.filter(item => { + const key = item.id + if (seen.has(key)) return false + seen.add(key) + return true + }) + + // Get current project IDs + const projectIds = this.selectedProjects.map(p => p.id) + + // Check which teams have already registered for these projects + let registeredTeamNames = [] + if (projectIds.length > 0 && this.eventId) { + try { + const regRes = await athleteAPI.getRegisteredAthletes({ + competitionId: this.eventId, + projectIds: projectIds.join(',') + }) + registeredTeamNames = (regRes || []).filter(r => r.teamName).map(r => r.teamName) + } catch (e) { + console.log('查询已报名集体失败:', e) + } + } + + this.teamList = list.map(item => { + const teamName = item.teamName || item.name + return { + id: item.id, + name: teamName, + memberCount: item.memberCount || 0, + selected: false, + hasRegistered: registeredTeamNames.includes(teamName) + } + }) } catch (err) { console.error('加载集体列表失败:', err) this.teamList = [] @@ -530,6 +564,17 @@ export default { }, toggleTeam(item) { + // Warn if team has already registered for this project + if (item.hasRegistered && !item.selected) { + uni.showModal({ + title: '提示', + content: '该集体已报名此项目,重复报名将被系统拒绝', + confirmText: '知道了', + showCancel: false + }) + return + } + const index = this.teamList.findIndex(t => t.id === item.id) if (index !== -1) { this.$set(this.teamList[index], 'selected', !this.teamList[index].selected)