fix: 公告优化
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
<!-- 纵向布局作为基础布局 -->
|
||||
<script setup lang="ts">
|
||||
import { getSystemAnnouncements } from '@/api';
|
||||
import SystemAnnouncementDialog from '@/components/SystemAnnouncementDialog/index.vue';
|
||||
import { useSafeArea } from '@/hooks/useSafeArea';
|
||||
import { useWindowWidthObserver } from '@/hooks/useWindowWidthObserver';
|
||||
import Aside from '@/layouts/components/Aside/index.vue';
|
||||
import Header from '@/layouts/components/Header/index.vue';
|
||||
import Main from '@/layouts/components/Main/index.vue';
|
||||
import { useDesignStore } from '@/stores';
|
||||
import { useAnnouncementStore, useDesignStore } from '@/stores';
|
||||
|
||||
const designStore = useDesignStore();
|
||||
const announcementStore = useAnnouncementStore();
|
||||
|
||||
const isCollapse = computed(() => designStore.isCollapse);
|
||||
|
||||
@@ -24,6 +27,32 @@ useSafeArea({
|
||||
|
||||
/** 监听窗口大小变化,折叠侧边栏 */
|
||||
useWindowWidthObserver();
|
||||
|
||||
// 应用加载时检查是否需要显示公告弹窗
|
||||
onMounted(async () => {
|
||||
console.log('announcementStore.shouldShowDialog--', announcementStore.shouldShowDialog);
|
||||
// 检查是否应该显示弹窗(只有"关闭一周"且未超过7天才不显示)
|
||||
if (announcementStore.shouldShowDialog) {
|
||||
try {
|
||||
// 从接口获取公告数据(不使用缓存)
|
||||
const res = await getSystemAnnouncements();
|
||||
if (res && res.data && Array.isArray(res.data) && res.data.length > 0) {
|
||||
announcementStore.setAnnouncementData(res.data);
|
||||
}
|
||||
else {
|
||||
// 接口返回成功但数据为空,设置空数组
|
||||
announcementStore.setAnnouncementData([]);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error('获取系统公告失败:', error);
|
||||
// API失败时设置空数组,仍然显示弹窗(显示错误或空状态)
|
||||
announcementStore.setAnnouncementData([]);
|
||||
}
|
||||
// 无论成功失败都显示弹窗
|
||||
announcementStore.openDialog();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -39,6 +68,8 @@ useWindowWidthObserver();
|
||||
</el-main>
|
||||
</el-container>
|
||||
</el-container>
|
||||
<!-- 系统公告弹窗 -->
|
||||
<SystemAnnouncementDialog />
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
Reference in New Issue
Block a user