From 5607c0bd3036d819db5b1b2ec431f8a9aeef4bcb Mon Sep 17 00:00:00 2001 From: Timi Date: Mon, 31 Aug 2026 11:27:10 +0800 Subject: [PATCH] fix event list filter --- src/pages/event/EventRecordList.vue | 37 ++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/pages/event/EventRecordList.vue b/src/pages/event/EventRecordList.vue index c39c6cb..93c94bd 100644 --- a/src/pages/event/EventRecordList.vue +++ b/src/pages/event/EventRecordList.vue @@ -125,7 +125,7 @@ import EventAPI from "@/api/EventAPI"; import EventRecordAPI from "@/api/EventRecordAPI"; import EventRecordCell from "@/pages/event/component/EventRecordCell.vue"; import { useNavBarStore } from "@/store/navBarStore"; -import type { EventItem } from "@/types/EventItem"; +import type { EventItem, EventStatus } from "@/types/EventItem"; import type { EventOptionStat, EventRecordPage, EventRecordPageResult, VerificationStatus } from "@/types/EventRecord"; import type { NavBarAction } from "@/types/NavBarAction"; import { formatEventNumberValue } from "@/utils/eventValue"; @@ -182,7 +182,7 @@ let suppressOptionFilterReload = false; const canCreateRecord = computed(() => userStore.hasPermissions(permissionCodes.eventRecord.create)); const dateFilterLabel = computed(() => dateOptions.find(item => item.value === dateFilterType.value)?.label || "今天"); const actionOptions = computed(() => eventList.value.map(item => ({ - label: item.name || "未命名事件", + label: getEventDisplayName(item), value: item.id || "" })).filter(item => item.value)); const eventFilterLabel = computed(() => { @@ -192,7 +192,7 @@ const eventFilterLabel = computed(() => { return eventList.value .filter(item => item.id && actionFilter.value.includes(item.id)) - .map(item => item.name || "未命名事件") + .map(item => getEventDisplayName(item)) .join("、"); }); const selectedOptionEvent = computed(() => { @@ -393,15 +393,36 @@ async function loadRecords(): Promise { // ---------- 操作 ---------- async function loadActions(): Promise { - eventList.value = await EventAPI.listValid(); - const validEventIdList = eventList.value.map(item => item.id).filter((item): item is string => Boolean(item)); - const validEventIdSet = new Set(validEventIdList); - const eventIdList = parseEventIdList(route.query.eventIds).filter(eventId => validEventIdSet.has(eventId)); - actionFilter.value = eventIdList.length ? eventIdList : validEventIdList; + // 历史登记记录需要关联已停用或已删除的事件,不能使用只返回 ACTIVE 事件的 listValid。 + const result = await EventAPI.list({ index: 0, size: 1000 }); + eventList.value = result.list || []; + const eventIdList = eventList.value.map(item => item.id).filter((item): item is string => Boolean(item)); + const eventIdSet = new Set(eventIdList); + const selectedEventIdList = parseEventIdList(route.query.eventIds).filter(eventId => eventIdSet.has(eventId)); + actionFilter.value = selectedEventIdList.length ? selectedEventIdList : eventIdList; const optionIdSet = new Set(optionFilterOptions.value.map(item => item.value)); optionFilter.value = parseEventIdList(route.query.optionIds).filter(optionId => optionIdSet.has(optionId)); } +function getEventDisplayName(event: EventItem): string { + const name = event.name || "未命名事件"; + const statusText = getEventStatusText(event.status); + return statusText ? `${name}(${statusText})` : name; +} + +function getEventStatusText(status?: EventStatus): string { + if (status === "DRAFT") { + return "草稿"; + } + if (status === "INACTIVE") { + return "不可登记"; + } + if (status === "DELETED") { + return "已删除"; + } + return ""; +} + async function selectDateFilter(type: DropdownValue): Promise { if (Array.isArray(type)) { return;