fix: 系统公告与尊享额度明细
This commit is contained in:
@@ -1,80 +1,65 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import type { Activity, Announcement, CarouselItem } from '@/api'
|
||||
import type { AnnouncementLogDto } from '@/api';
|
||||
import { defineStore } from 'pinia';
|
||||
|
||||
export type CloseType = 'today' | 'week' | 'permanent'
|
||||
export type CloseType = 'today' | 'permanent';
|
||||
|
||||
export const useAnnouncementStore = defineStore(
|
||||
'announcement',
|
||||
() => {
|
||||
// 弹窗显示状态
|
||||
const isDialogVisible = ref(false)
|
||||
const isDialogVisible = ref(false);
|
||||
|
||||
// 公告数据
|
||||
const carousels = ref<CarouselItem[]>([])
|
||||
const activities = ref<Activity[]>([])
|
||||
const announcements = ref<Announcement[]>([])
|
||||
// 公告数据(统一存储所有公告)
|
||||
const announcements = ref<AnnouncementLogDto[]>([]);
|
||||
|
||||
// 关闭记录
|
||||
const closeType = ref<CloseType | null>(null)
|
||||
const closedAt = ref<number | null>(null)
|
||||
const closeType = ref<CloseType | null>(null);
|
||||
const closedAt = ref<number | null>(null);
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = () => {
|
||||
isDialogVisible.value = true
|
||||
}
|
||||
isDialogVisible.value = true;
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const closeDialog = (type: CloseType) => {
|
||||
isDialogVisible.value = false
|
||||
closeType.value = type
|
||||
closedAt.value = Date.now()
|
||||
}
|
||||
isDialogVisible.value = false;
|
||||
closeType.value = type;
|
||||
closedAt.value = Date.now();
|
||||
};
|
||||
|
||||
// 检查是否应该显示弹窗
|
||||
const shouldShowDialog = computed(() => {
|
||||
if (!closedAt.value || !closeType.value)
|
||||
return true
|
||||
return true;
|
||||
|
||||
const now = Date.now()
|
||||
const elapsed = now - closedAt.value
|
||||
const now = Date.now();
|
||||
const elapsed = now - closedAt.value;
|
||||
|
||||
if (closeType.value === 'permanent')
|
||||
return false
|
||||
return false;
|
||||
|
||||
if (closeType.value === 'today') {
|
||||
// 检查是否已过去一天(24小时)
|
||||
return elapsed > 24 * 60 * 60 * 1000
|
||||
return elapsed > 24 * 60 * 60 * 1000;
|
||||
}
|
||||
|
||||
if (closeType.value === 'week') {
|
||||
// 检查是否已过去一周(7天)
|
||||
return elapsed > 7 * 24 * 60 * 60 * 1000
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
return true;
|
||||
});
|
||||
|
||||
// 设置公告数据
|
||||
const setAnnouncementData = (data: {
|
||||
carousels: CarouselItem[]
|
||||
activities: Activity[]
|
||||
announcements: Announcement[]
|
||||
}) => {
|
||||
carousels.value = data.carousels
|
||||
activities.value = data.activities
|
||||
announcements.value = data.announcements
|
||||
}
|
||||
const setAnnouncementData = (data: AnnouncementLogDto[]) => {
|
||||
announcements.value = data;
|
||||
};
|
||||
|
||||
// 重置关闭状态(用于测试或管理员重置)
|
||||
const resetCloseStatus = () => {
|
||||
closeType.value = null
|
||||
closedAt.value = null
|
||||
}
|
||||
closeType.value = null;
|
||||
closedAt.value = null;
|
||||
};
|
||||
|
||||
return {
|
||||
isDialogVisible,
|
||||
carousels,
|
||||
activities,
|
||||
announcements,
|
||||
closeType,
|
||||
closedAt,
|
||||
@@ -83,7 +68,7 @@ export const useAnnouncementStore = defineStore(
|
||||
closeDialog,
|
||||
setAnnouncementData,
|
||||
resetCloseStatus,
|
||||
}
|
||||
};
|
||||
},
|
||||
{
|
||||
persist: {
|
||||
@@ -91,4 +76,4 @@ export const useAnnouncementStore = defineStore(
|
||||
paths: ['closeType', 'closedAt'],
|
||||
},
|
||||
},
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user