diff --git a/components/admin/competition-management.tsx b/components/admin/competition-management.tsx index b2107aa..4c81222 100644 --- a/components/admin/competition-management.tsx +++ b/components/admin/competition-management.tsx @@ -1141,19 +1141,23 @@ export function CompetitionManagement() { // 使用選擇的隊長 ID,如果沒有選擇則保持原有的隊長 ID const leaderId = newTeam.leader_id || (selectedTeam as any).leader_id || '0b844fb6-1a63-4e0c-a15a-416e9b0ec8c7' - const teamData = { + // 根據當前標籤頁決定發送哪些字段 + const teamData: any = { name: newTeam.name, leader_id: leaderId, department: newTeam.department, contact_email: newTeam.contactEmail, - description: newTeam.description, - members: newTeam.members.map(member => ({ - user_id: member.user_id || member.id, // 確保使用正確的 user_id - role: member.role || 'member' - })), - apps: newTeam.apps // 添加應用 ID 列表 + description: newTeam.description } + // 只有在成員標籤頁或應用標籤頁時才發送對應的數據 + // 這裡我們總是發送成員和應用數據,因為用戶可能在任何標籤頁點擊更新 + teamData.members = newTeam.members.map(member => ({ + user_id: member.user_id || member.id, // 確保使用正確的 user_id + role: member.role || 'member' + })) + teamData.apps = newTeam.apps // 添加應用 ID 列表 + const success = await updateTeamInDb(selectedTeam.id, teamData) if (success) { setSuccess("團隊更新成功!") @@ -1232,6 +1236,7 @@ export function CompetitionManagement() { const member = { id: newMember.user_id, // 使用用戶 ID + user_id: newMember.user_id, // 確保 user_id 字段存在 name: newMember.name, department: newMember.department, role: newMember.role, @@ -5201,7 +5206,7 @@ export function CompetitionManagement() {

創作者:{participant.creator}

-

提交日期:{participant.submissionDate}

+

提交日期:{participant.submissionDate || participant.created_at || '未知'}

) @@ -5270,10 +5275,13 @@ export function CompetitionManagement() { checked={isSelected} onCheckedChange={(checked) => { if (checked) { - setNewCompetition({ - ...newCompetition, - participatingTeams: [...newCompetition.participatingTeams, participant.id], - }) + // 檢查是否已經存在,避免重複添加 + if (!newCompetition.participatingTeams.includes(participant.id)) { + setNewCompetition({ + ...newCompetition, + participatingTeams: [...newCompetition.participatingTeams, participant.id], + }) + } } else { setNewCompetition({ ...newCompetition, @@ -5294,11 +5302,11 @@ export function CompetitionManagement() {
- 隊長:{participant.leader} + 隊長:{participant.leader_name || participant.leader || '未知'}
- {participant.memberCount}人 + {participant.member_count || participant.memberCount || 0}人
{participant.contactEmail && ( @@ -5310,7 +5318,7 @@ export function CompetitionManagement() { {participant.description && (

{participant.description}

)} -

提交日期:{participant.submissionDate}

+

提交日期:{participant.submissionDate || participant.created_at || '未知'}

) @@ -7440,7 +7448,7 @@ export function CompetitionManagement() {
{team.name} - 隊長:{team.leader} • {team.department} • {team.memberCount}人 + 隊長:{team.leader_name || team.leader || '未知'} • {team.department} • {team.member_count || team.memberCount || 0}人
)) diff --git a/lib/services/database-service.ts b/lib/services/database-service.ts index cd24022..a6a5694 100644 --- a/lib/services/database-service.ts +++ b/lib/services/database-service.ts @@ -1091,8 +1091,8 @@ export class TeamService extends DatabaseServiceBase { } } - // 更新團隊成員(如果提供了成員信息) - if (updates.members && Array.isArray(updates.members)) { + // 更新團隊成員(如果明確提供了成員信息) + if (updates.members !== undefined && Array.isArray(updates.members)) { try { // 先刪除現有成員 console.log('刪除現有團隊成員...'); @@ -1119,10 +1119,12 @@ export class TeamService extends DatabaseServiceBase { // 成員更新失敗不應該影響整個更新操作 // 可以選擇繼續或回滾 } + } else { + console.log('未提供成員信息,跳過成員更新'); } - // 更新團隊應用(如果提供了應用信息) - if (updates.apps && Array.isArray(updates.apps)) { + // 更新團隊應用(如果明確提供了應用信息) + if (updates.apps !== undefined && Array.isArray(updates.apps)) { try { // 先移除現有應用的團隊關聯 console.log('移除現有應用的團隊關聯...'); @@ -1148,6 +1150,8 @@ export class TeamService extends DatabaseServiceBase { console.error('更新團隊應用時發生錯誤:', appError); // 應用更新失敗不應該影響整個更新操作 } + } else { + console.log('未提供應用信息,跳過應用更新'); } return true;