报名页面的队员校验缓存问题
This commit is contained in:
parent
c1ce081e92
commit
e7c414e509
@ -1749,14 +1749,18 @@ const validateMemberForGroup = async (member, group) => {
|
||||
}
|
||||
|
||||
try {
|
||||
const validationMemberIds = getValidationMemberIdsForGroup(member, group);
|
||||
const { succeeded, data } = await usereventregistrationMemberValidatePost({
|
||||
eventId: currentEventId.value,
|
||||
memberId: member.userId ?? member.id,
|
||||
memberIds: getValidationMemberIdsForGroup(member, group),
|
||||
memberIds: validationMemberIds,
|
||||
groupId: group.id
|
||||
});
|
||||
|
||||
if (succeeded && data) {
|
||||
validationMemberIds.forEach(memberId => {
|
||||
delete memberValidationMap.value[`${group.id}_${memberId}`];
|
||||
});
|
||||
const key = `${group.id}_${member.userId ?? member.id}`;
|
||||
memberValidationMap.value[key] = data;
|
||||
return data;
|
||||
@ -1788,27 +1792,22 @@ const validateAllMembers = async () => {
|
||||
const isMultiTeamMode = isTeamProject(group) && groupTeamsMap.value[gId] &&
|
||||
(groupTeamsMap.value[gId].length > 1 || getGroupMaxTeams(gId) > 1);
|
||||
|
||||
let membersToValidate = [];
|
||||
|
||||
if (isMultiTeamMode) {
|
||||
// 多团队模式:收集所有团队的队员
|
||||
// 多团队模式:每支队伍都需要独立校验
|
||||
for (const team of groupTeamsMap.value[gId]) {
|
||||
membersToValidate = membersToValidate.concat(team.members);
|
||||
const teamMembers = team.members ?? [];
|
||||
if (teamMembers.length > 0) {
|
||||
hasAnyMembers = true;
|
||||
validationTasks.push(validateMemberForGroup(teamMembers[teamMembers.length - 1], group));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 单团队模式
|
||||
membersToValidate = groupMemberMap.value[gId] || [];
|
||||
const groupMembers = groupMemberMap.value[gId] ?? [];
|
||||
if (groupMembers.length > 0) {
|
||||
hasAnyMembers = true;
|
||||
validationTasks.push(validateMemberForGroup(groupMembers[groupMembers.length - 1], group));
|
||||
}
|
||||
}
|
||||
|
||||
if (membersToValidate.length > 0) {
|
||||
hasAnyMembers = true;
|
||||
}
|
||||
|
||||
// // 为每个队员创建验证任务
|
||||
// for (const member of membersToValidate) {
|
||||
// validationTasks.push(validateMemberForGroup(member, group));
|
||||
// }
|
||||
validationTasks.push(validateMemberForGroup(membersToValidate[membersToValidate.length - 1], group));
|
||||
}
|
||||
|
||||
// 并行执行所有验证任务
|
||||
@ -1909,7 +1908,7 @@ const hasValidationErrorsForGroup = (group) => {
|
||||
|
||||
// 检查是否有任何验证错误
|
||||
const hasAnyValidationErrors = () => {
|
||||
return Object.values(memberValidationMap.value).some(result => result?.isValid === false);
|
||||
return selectedGroupItems.value.some(group => hasValidationErrorsForGroup(group));
|
||||
};
|
||||
|
||||
// 检查是否有任何报名限制
|
||||
@ -2022,6 +2021,7 @@ const assignMemberToActiveGroup = (member) => {
|
||||
const removeMemberFromGroup = (groupId, memberId) => {
|
||||
if (!groupMemberMap.value[groupId]) return;
|
||||
groupMemberMap.value[groupId] = groupMemberMap.value[groupId].filter((m) => (m.userId ?? m.id) !== memberId);
|
||||
delete memberValidationMap.value[`${groupId}_${memberId}`];
|
||||
|
||||
// 触发实时验证
|
||||
debounceValidateAllMembers();
|
||||
@ -2226,6 +2226,7 @@ const removeMemberFromTeam = (groupId, teamIndex, memberId) => {
|
||||
if (!team) return;
|
||||
|
||||
team.members = team.members.filter((m) => (m.userId ?? m.id) !== memberId);
|
||||
delete memberValidationMap.value[`${groupId}_${memberId}`];
|
||||
|
||||
// 触发实时验证
|
||||
debounceValidateAllMembers();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user