赛事记录更换队员错误显示区域调整
This commit is contained in:
parent
dbb380f579
commit
7f66787c4f
@ -299,6 +299,7 @@ export const usereventrecordMemberValidatePost = (data) => {
|
||||
* @param {Array<number>} data.memberIds - 队员ID列表
|
||||
* @param {Array<number>} data.groupIds - 组别ID列表
|
||||
* @param {Array<{groupId: number, memberIds: Array<number>}>} data.groupMembers - 组别队员分配
|
||||
* @param {number} [data.excludeRegistrationId] - 要排除的报名ID(更换队员时使用)
|
||||
* @returns {Promise<{
|
||||
* hasLimit: boolean,
|
||||
* limitDetails: Array<{
|
||||
|
||||
@ -289,18 +289,6 @@
|
||||
</el-tag>
|
||||
<span v-if="!(changeMembersMap[item.registrationItemId]?.length)" class="assign-card-placeholder">点击此卡片后,从右侧选择队员</span>
|
||||
</div>
|
||||
|
||||
<!-- 队员验证错误提示 -->
|
||||
<div v-if="hasValidationErrorsForItem(item)" class="validation-error-section">
|
||||
<div class="validation-error-item"
|
||||
v-for="m in (changeMembersMap[item.registrationItemId] ?? [])"
|
||||
:key="m.userId ?? m.id">
|
||||
<el-alert v-if="!getMemberValidationResult(m, item).isValid"
|
||||
:title="getMemberValidationResult(m, item).message"
|
||||
type="error" :closable="false"
|
||||
size="small" style="margin-top: 4px;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-empty v-if="!changeMembersItems.length" description="暂无项目" />
|
||||
</div>
|
||||
@ -344,8 +332,17 @@
|
||||
|
||||
<!-- 验证提示区域 -->
|
||||
<div class="validation-notes-section" style="margin-top: 16px;">
|
||||
<!-- 年龄性别不符合要求提示 -->
|
||||
<el-alert v-if="hasAnyValidationErrors()" title="队员信息不符合组别要求" type="error" :closable="false" style="margin-bottom: 12px;" />
|
||||
<!-- 所有队员验证错误提示 -->
|
||||
<template v-if="hasAnyValidationErrors()">
|
||||
<el-alert title="队员信息不符合组别要求" type="error" :closable="false" style="margin-bottom: 12px;" />
|
||||
<div class="validation-error-list">
|
||||
<el-alert v-for="(itemError, idx) in getAllValidationErrors()"
|
||||
:key="idx"
|
||||
:title="itemError.message"
|
||||
type="error" :closable="false"
|
||||
size="small" style="margin-top: 4px;" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- 限报提示 -->
|
||||
<template v-if="hasAnyRegistrationLimit()">
|
||||
@ -1261,6 +1258,25 @@ const hasAnyValidationErrors = () => {
|
||||
return changeMembersItems.value.some(item => hasValidationErrorsForItem(item));
|
||||
};
|
||||
|
||||
// 获取所有验证错误
|
||||
const getAllValidationErrors = () => {
|
||||
const errors = [];
|
||||
for (const item of changeMembersItems.value) {
|
||||
const members = changeMembersMap.value[item.registrationItemId] || [];
|
||||
for (const member of members) {
|
||||
const result = getMemberValidationResult(member, item);
|
||||
if (!result.isValid && result.message) {
|
||||
errors.push({
|
||||
item: item,
|
||||
member: member,
|
||||
message: `【${formatItemTitle(item)}】${member.name}:${result.message}`
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
};
|
||||
|
||||
// 检查是否有任何报名限制
|
||||
const hasAnyRegistrationLimit = () => {
|
||||
return registrationLimitCheckResult.value?.hasLimit ?? false;
|
||||
@ -1471,7 +1487,8 @@ const validateAllMembers = async () => {
|
||||
// 检查报名限制
|
||||
const { succeeded, data } = await usereventrecordRegistrationLimitCheckPost({
|
||||
eventId: changeMembersData.value.eventId,
|
||||
groupMembers: groupMembers
|
||||
groupMembers: groupMembers,
|
||||
excludeRegistrationId: changeMembersData.value.registrationId
|
||||
});
|
||||
|
||||
if (succeeded && data) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user