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