赛事报名类型文案调整

This commit is contained in:
马梓彭 2026-04-27 08:23:14 +08:00
parent d8f54c1b30
commit 518e7d33a3
4 changed files with 25 additions and 13 deletions

View File

@ -54,7 +54,7 @@
<el-radio-group v-model="localFormData.registrationType" :disabled="readonly">
<el-radio :label="0">个人报名</el-radio>
<el-radio :label="1">团队报名</el-radio>
<el-radio :label="2">个人\团队报名</el-radio>
<el-radio :label="2">个人/团队报名</el-radio>
</el-radio-group>
</el-form-item>

View File

@ -118,9 +118,9 @@ const columns = reactive([
prop: 'registrationType',
label: '报名方式',
enum: [
{ label: '只允许个人报名', value: 0 },
{ label: '只允许团队报名', value: 1 },
{ label: '两者都有', value: 2 },
{ label: '个人报名', value: 0 },
{ label: '团队报名', value: 1 },
{ label: '个人/团队报名', value: 2 },
],
},
{

View File

@ -456,7 +456,9 @@ const openDialog = async (id) => {
const res2 = await eventarrangementListGet(id);
eventlist.value = filterProjectsWithParticipants(res2.data).map((item, idx) => ({
...item,
_tempId: item.id || `temp-${idx}-${Date.now()}`
_tempId: item.id || `temp-${idx}-${Date.now()}`,
// 确保 durationSeconds 是数字类型
durationSeconds: typeof item.durationSeconds === 'number' ? item.durationSeconds : 0
}));
await nextTick();
@ -667,7 +669,8 @@ const previewArrangement = async () => {
// 为每个项目设置正确的 SortIndex(根据当前在数组中的位置)
const settingsWithSortIndex = eventlist.value.map((item, index) => ({
...item,
ProjectId: item.projectId || item.id,
VenueCount: item.venueCount,
SortIndex: index + 1 // 从 1 开始排序
}));
@ -728,7 +731,8 @@ const getTimeRowspan = (index) => {
const onSave = async () => {
// 为每个项目设置正确的 SortIndex(根据当前在数组中的位置)
const settingsWithSortIndex = eventlist.value.map((item, index) => ({
...item,
ProjectId: item.projectId || item.id,
VenueCount: item.venueCount,
SortIndex: index + 1 // 从 1 开始排序
}));
@ -765,7 +769,8 @@ const getArr = async () => {
// 为每个项目设置正确的 SortIndex(根据当前在数组中的位置)
const settingsWithSortIndex = eventlist.value.map((item, index) => ({
...item,
ProjectId: item.projectId || item.id,
VenueCount: item.venueCount,
SortIndex: index + 1 // 从 1 开始排序
}));
@ -1396,6 +1401,9 @@ const validateVenueCount = () => {
return { valid: true };
};
// 保存原始项目时长,用于计算
const originalDurations = ref({});
// 监听 eventlist 变化,实时计算总时长(不显示错误提示)
watch(
eventlist,
@ -1405,13 +1413,17 @@ watch(
if (newList && newList.length > 0) {
newList.forEach((item) => {
// 确保 durationSeconds 是数字类型
if (typeof item.durationSeconds !== 'number' || isNaN(item.durationSeconds)) {
item.durationSeconds = 0;
}
const result = calculateProjectDuration(item);
item.totalDurationMinutes = result.totalMinutes;
item.totalDurationSeconds = result.totalSeconds;
});
}
},
{ deep: true }
{ deep: true, immediate: true }
);
// 暴露变量

View File

@ -538,13 +538,13 @@ const registrationTypeText = (row) => {
switch (v) {
case 'OnlyIndividual':
case 0:
return '只允许个人报名';
return '个人报名';
case 'OnlyTeam':
case 1:
return '只允许团队报名';
return '团队报名';
case 'Both':
case 2:
return '两者都有';
return '个人/团队报名';
default:
return v ?? '-';
}
@ -1051,7 +1051,7 @@ const openRegistrationDialog = async (row) => {
// 检查报名类型,如果是只允许个人报名,则显示提示并阻止继续
const registrationType = data?.registrationType;
if (registrationType === 'OnlyIndividual') {
if (registrationType === 'OnlyIndividual' || registrationType === 0) {
ElMessageBox.alert(
'当前赛事只允许个人报名,请到移动端进行个人报名',
'提示',