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);
- }
}