报名页面的队员校验缓存问题
This commit is contained in:
parent
c1ce081e92
commit
e7c414e509
@ -1749,14 +1749,18 @@ const validateMemberForGroup = async (member, group) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const validationMemberIds = getValidationMemberIdsForGroup(member, group);
|
||||||
const { succeeded, data } = await usereventregistrationMemberValidatePost({
|
const { succeeded, data } = await usereventregistrationMemberValidatePost({
|
||||||
eventId: currentEventId.value,
|
eventId: currentEventId.value,
|
||||||
memberId: member.userId ?? member.id,
|
memberId: member.userId ?? member.id,
|
||||||
memberIds: getValidationMemberIdsForGroup(member, group),
|
memberIds: validationMemberIds,
|
||||||
groupId: group.id
|
groupId: group.id
|
||||||
});
|
});
|
||||||
|
|
||||||
if (succeeded && data) {
|
if (succeeded && data) {
|
||||||
|
validationMemberIds.forEach(memberId => {
|
||||||
|
delete memberValidationMap.value[`${group.id}_${memberId}`];
|
||||||
|
});
|
||||||
const key = `${group.id}_${member.userId ?? member.id}`;
|
const key = `${group.id}_${member.userId ?? member.id}`;
|
||||||
memberValidationMap.value[key] = data;
|
memberValidationMap.value[key] = data;
|
||||||
return data;
|
return data;
|
||||||
@ -1788,27 +1792,22 @@ const validateAllMembers = async () => {
|
|||||||
const isMultiTeamMode = isTeamProject(group) && groupTeamsMap.value[gId] &&
|
const isMultiTeamMode = isTeamProject(group) && groupTeamsMap.value[gId] &&
|
||||||
(groupTeamsMap.value[gId].length > 1 || getGroupMaxTeams(gId) > 1);
|
(groupTeamsMap.value[gId].length > 1 || getGroupMaxTeams(gId) > 1);
|
||||||
|
|
||||||
let membersToValidate = [];
|
|
||||||
|
|
||||||
if (isMultiTeamMode) {
|
if (isMultiTeamMode) {
|
||||||
// 多团队模式:收集所有团队的队员
|
// 多团队模式:每支队伍都需要独立校验
|
||||||
for (const team of groupTeamsMap.value[gId]) {
|
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 {
|
} else {
|
||||||
// 单团队模式
|
const groupMembers = groupMemberMap.value[gId] ?? [];
|
||||||
membersToValidate = 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 = () => {
|
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) => {
|
const removeMemberFromGroup = (groupId, memberId) => {
|
||||||
if (!groupMemberMap.value[groupId]) return;
|
if (!groupMemberMap.value[groupId]) return;
|
||||||
groupMemberMap.value[groupId] = groupMemberMap.value[groupId].filter((m) => (m.userId ?? m.id) !== memberId);
|
groupMemberMap.value[groupId] = groupMemberMap.value[groupId].filter((m) => (m.userId ?? m.id) !== memberId);
|
||||||
|
delete memberValidationMap.value[`${groupId}_${memberId}`];
|
||||||
|
|
||||||
// 触发实时验证
|
// 触发实时验证
|
||||||
debounceValidateAllMembers();
|
debounceValidateAllMembers();
|
||||||
@ -2226,6 +2226,7 @@ const removeMemberFromTeam = (groupId, teamIndex, memberId) => {
|
|||||||
if (!team) return;
|
if (!team) return;
|
||||||
|
|
||||||
team.members = team.members.filter((m) => (m.userId ?? m.id) !== memberId);
|
team.members = team.members.filter((m) => (m.userId ?? m.id) !== memberId);
|
||||||
|
delete memberValidationMap.value[`${groupId}_${memberId}`];
|
||||||
|
|
||||||
// 触发实时验证
|
// 触发实时验证
|
||||||
debounceValidateAllMembers();
|
debounceValidateAllMembers();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user