diff --git a/src/pages/event/EventRecordList.vue b/src/pages/event/EventRecordList.vue index 6e0e588..36dfa20 100644 --- a/src/pages/event/EventRecordList.vue +++ b/src/pages/event/EventRecordList.vue @@ -97,18 +97,7 @@ - - - 导出 Excel - + userStore.hasPermissions(permissionCodes.eventRecord.create)); const dateFilterLabel = computed(() => dateOptions.find(item => item.value === dateFilterType.value)?.label || "今天"); @@ -201,7 +192,32 @@ const selectedNumberEvent = computed(() => { const event = eventList.value.find(item => item.id === actionFilter.value[0]); return event?.valueType === "NUMBER" ? event : undefined; }); +const canExportRecord = computed(() => userStore.hasPermissions(permissionCodes.eventRecord.export)); const canDeleteRecord = computed(() => userStore.hasPermissions(permissionCodes.eventRecord.delete)); +const canShowActionMenu = computed(() => canCreateRecord.value || canExportRecord.value); + +const actionList = computed(() => { + const list: NavBarAction[] = []; + if (canCreateRecord.value) { + list.push({ + action: toCreate, + theme: "primary", + icon: "add", + key: "create", + text: "添加" + }); + } + if (canExportRecord.value) { + list.push({ + action: exportExcel, + icon: "download", + key: "export", + loading: isExporting.value, + text: "导出 Excel" + }); + } + return list; +}); watch(keyword, () => { if (!initialized) { @@ -310,7 +326,6 @@ async function loadRecords(): Promise { // ---------- 操作 ---------- -const isExporting = ref(false); const isDeleting = ref(false); const deletingId = ref(""); @@ -600,9 +615,7 @@ function parseDateTime(value: string, isEnd: boolean): Date { onMounted(async () => { navBarStore.clearRight(); - if (canCreateRecord.value) { - navBarStore.setRightText("添加", "var(--td-brand-color)", toCreate); - } + navBarStore.setCustomRightVisible(canShowActionMenu.value); await loadActions(); initialized = true; await reloadRecords(); @@ -737,16 +750,6 @@ onUnmounted(() => { } } -.export { - left: 1rem; - right: 1rem; - bottom: calc(.75rem + env(safe-area-inset-bottom, 0)); - z-index: 20; - position: fixed; - box-shadow: 0 -.375rem 1.25rem rgba(15, 23, 42, .08); - backdrop-filter: blur(.75rem); -} - :global(html.theme-dark) { .registration-record-list { @@ -771,9 +774,5 @@ onUnmounted(() => { } } - .bottom-bar { - background: rgba(15, 23, 42, .88); - box-shadow: 0 -.375rem 1.25rem rgba(2, 6, 23, .32); - } }