From 9fb43a648ffeb082779fccda95bb2c9bb1080964 Mon Sep 17 00:00:00 2001 From: Timi Date: Mon, 31 Aug 2026 12:20:38 +0800 Subject: [PATCH] update event status --- src/api/EventAPI.ts | 9 +++++++++ src/pages/event/EventDetail.vue | 12 ++++++++++-- src/pages/event/EventEdit.vue | 27 +++++++++++++++++++++++++++ src/pages/event/EventList.vue | 6 +++--- src/pages/event/EventRecordList.vue | 5 ++++- 5 files changed, 53 insertions(+), 6 deletions(-) diff --git a/src/api/EventAPI.ts b/src/api/EventAPI.ts index ec70ee8..720a92e 100644 --- a/src/api/EventAPI.ts +++ b/src/api/EventAPI.ts @@ -69,6 +69,14 @@ async function listValid(): Promise { return sortEventList(list); } +/** + * 查询登记记录筛选使用的事件,包含已删除事件。 + * 该接口由后端使用 event.create 权限保护,仅用于历史记录回溯。 + */ +async function listHistory(): Promise> { + return await axios.post(`${BASE_URI}/list/history`, withCurrentStorePage(withEventOrder({ index: 0, size: 1000 }))); +} + async function detail(id: string): Promise { return await axios.post(`${BASE_URI}/detail`, undefined, { params: { id } @@ -102,6 +110,7 @@ async function remove(id: string): Promise { export default { list, listValid, + listHistory, detail, create, update, diff --git a/src/pages/event/EventDetail.vue b/src/pages/event/EventDetail.vue index e3f09e0..c4865fe 100644 --- a/src/pages/event/EventDetail.vue +++ b/src/pages/event/EventDetail.vue @@ -133,8 +133,9 @@ const defaultColor = "#2f88ff"; // ---------- 权限与门店 ---------- -const canUpdate = computed(() => userStore.hasPermissions(permissionCodes.event.update)); -const canDeleteEvent = computed(() => userStore.hasPermissions(permissionCodes.event.delete)); +const isDeletedEvent = computed(() => event.value?.status === "DELETED"); +const canUpdate = computed(() => !isDeletedEvent.value && userStore.hasPermissions(permissionCodes.event.update)); +const canDeleteEvent = computed(() => !isDeletedEvent.value && userStore.hasPermissions(permissionCodes.event.delete)); const canReadEventRecord = computed(() => userStore.hasPermissions(permissionCodes.eventRecord.read)); const isGlobalManager = computed(() => userStore.hasRoles(gaoRoleCodes.globalManager)); const storeName = computed(() => { @@ -354,6 +355,13 @@ onMounted(() => { } }); +watch(canUpdate, value => { + navBarStore.clearRight(); + if (value) { + navBarStore.setRightText("编辑", "var(--td-brand-color)", toEdit); + } +}); + onUnmounted(() => { navBarStore.clearRight(); }); diff --git a/src/pages/event/EventEdit.vue b/src/pages/event/EventEdit.vue index aa62c60..fb6d749 100644 --- a/src/pages/event/EventEdit.vue +++ b/src/pages/event/EventEdit.vue @@ -85,6 +85,22 @@
+ +
+
+ 草稿: + 普通店员角色不可见,不可登记、查询 +
+
+ 可登记: + 正常状态,可登记、可查询 +
+
+ 不可登记: + 登记时不会出现在事件列表,但仍可在登记事件记录列表中可以查找,标记为“不可登记”,所有店员角色可见。店长角色可进入详情和编辑,可恢复为“可登记” +
+
+
@@ -674,6 +690,11 @@ async function fillForm(): Promise { return; } const current = await EventAPI.detail(routeId.value); + if (current.status === "DELETED") { + Message.error("已删除登记事件不可编辑"); + await router.replace({ name: "EventDetail", params: { id: routeId.value } }); + return; + } Object.assign(formModel, { id: current.id || "", storeId: current.storeId || formModel.storeId, @@ -735,6 +756,12 @@ onUnmounted(() => navBarStore.clearRight()); align-items: center; justify-content: end; } + + .status-tips { + display: flex; + font-size: .875rem; + flex-direction: column; + } } .picker-text { diff --git a/src/pages/event/EventList.vue b/src/pages/event/EventList.vue index 7e91e56..d0f05da 100644 --- a/src/pages/event/EventList.vue +++ b/src/pages/event/EventList.vue @@ -54,7 +54,7 @@
-