banner图赛事非必选

This commit is contained in:
马梓彭 2026-06-04 21:29:25 +08:00
parent 6ee06fbc2b
commit da749694f5

View File

@ -330,16 +330,15 @@ function validateManual() {
const list = slots.value;
for (let i = 0; i < list.length; i++) {
const s = list[i];
const partial = !!(s.imageUrl || s.eventId);
if (partial && (!s.imageUrl || !s.eventId)) {
ElMessage.warning(`第 ${i + 1} 张需同时上传图片并选择关联赛事`);
if (s.eventId && !s.imageUrl) {
ElMessage.warning(`第 ${i + 1} 张已选择赛事,请同时上传图片`);
selectedIndex.value = i;
return false;
}
}
const filled = list.filter((s) => s.imageUrl && s.eventId);
const filled = list.filter((s) => s.imageUrl);
if (!filled.length) {
ElMessage.warning('请至少完整配置一张轮播图(图片 + 赛事)');
ElMessage.warning('请至少上传一张轮播图图片');
return false;
}
return true;
@ -361,26 +360,26 @@ async function onSave() {
const resMode = await bannerConfigPut({ mode: MODE_MANUAL });
if (resMode?.succeeded === false) return;
const filledSlots = slots.value.filter((s) => s.imageUrl && s.eventId);
const filledSlots = slots.value.filter((s) => s.imageUrl);
const keptIds = new Set();
for (let i = 0; i < filledSlots.length; i++) {
const s = filledSlots[i];
const sort = i + 1;
// 接口要求关联赛事使用 eventId 字段(数字)
const eventId = Number(s.eventId);
if (!Number.isFinite(eventId) || eventId <= 0) {
// 有选择赛事时使用 eventId,否则不传 eventId(后端允许无赛事保存)
const eventId = toEventId(s.eventId);
if (s.eventId && (eventId == null || eventId <= 0)) {
ElMessage.warning(`第 ${sort} 条轮播的关联赛事无效,请重新选择`);
return;
}
const payload = {
title: s.title || s.eventName || `轮播图${sort}`,
imageUrl: s.imageUrl,
linkType: 'Event',
eventId,
linkType: eventId ? 'Event' : 'Url',
sort,
status: 'Enable',
};
if (eventId) payload.eventId = eventId;
if (s.id) {
const r = await bannerEditPut({ id: s.id, ...payload });
if (r?.succeeded === false) return;