赛事记录更换队员错误显示区域调整
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.memberIds - 队员ID列表
|
||||||
* @param {Array<number>} data.groupIds - 组别ID列表
|
* @param {Array<number>} data.groupIds - 组别ID列表
|
||||||
* @param {Array<{groupId: number, memberIds: Array<number>}>} data.groupMembers - 组别队员分配
|
* @param {Array<{groupId: number, memberIds: Array<number>}>} data.groupMembers - 组别队员分配
|
||||||
|
* @param {number} [data.excludeRegistrationId] - 要排除的报名ID(更换队员时使用)
|
||||||
* @returns {Promise<{
|
* @returns {Promise<{
|
||||||
* hasLimit: boolean,
|
* hasLimit: boolean,
|
||||||
* limitDetails: Array<{
|
* limitDetails: Array<{
|
||||||
|
|||||||
@ -289,18 +289,6 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
<span v-if="!(changeMembersMap[item.registrationItemId]?.length)" class="assign-card-placeholder">点击此卡片后,从右侧选择队员</span>
|
<span v-if="!(changeMembersMap[item.registrationItemId]?.length)" class="assign-card-placeholder">点击此卡片后,从右侧选择队员</span>
|
||||||
</div>
|
</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>
|
</div>
|
||||||
<el-empty v-if="!changeMembersItems.length" description="暂无项目" />
|
<el-empty v-if="!changeMembersItems.length" description="暂无项目" />
|
||||||
</div>
|
</div>
|
||||||
@ -344,8 +332,17 @@
|
|||||||
|
|
||||||
<!-- 验证提示区域 -->
|
<!-- 验证提示区域 -->
|
||||||
<div class="validation-notes-section" style="margin-top: 16px;">
|
<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()">
|
<template v-if="hasAnyRegistrationLimit()">
|
||||||
@ -1261,6 +1258,25 @@ const hasAnyValidationErrors = () => {
|
|||||||
return changeMembersItems.value.some(item => hasValidationErrorsForItem(item));
|
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 = () => {
|
const hasAnyRegistrationLimit = () => {
|
||||||
return registrationLimitCheckResult.value?.hasLimit ?? false;
|
return registrationLimitCheckResult.value?.hasLimit ?? false;
|
||||||
@ -1471,7 +1487,8 @@ const validateAllMembers = async () => {
|
|||||||
// 检查报名限制
|
// 检查报名限制
|
||||||
const { succeeded, data } = await usereventrecordRegistrationLimitCheckPost({
|
const { succeeded, data } = await usereventrecordRegistrationLimitCheckPost({
|
||||||
eventId: changeMembersData.value.eventId,
|
eventId: changeMembersData.value.eventId,
|
||||||
groupMembers: groupMembers
|
groupMembers: groupMembers,
|
||||||
|
excludeRegistrationId: changeMembersData.value.registrationId
|
||||||
});
|
});
|
||||||
|
|
||||||
if (succeeded && data) {
|
if (succeeded && data) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user