mirror of
https://github.com/Cccc-owo/CheckInApp.git
synced 2026-06-17 14:06:28 +00:00
86 lines
1.9 KiB
Vue
86 lines
1.9 KiB
Vue
<template>
|
|
<a-config-provider :theme="antdTheme" :locale="zhCN">
|
|
<router-view />
|
|
</a-config-provider>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { onMounted, computed } from 'vue';
|
|
import { ConfigProvider as AConfigProvider } from 'ant-design-vue';
|
|
import zhCN from 'ant-design-vue/es/locale/zh_CN';
|
|
import { useAuthStore } from '@/stores/auth';
|
|
import getAntdTheme from './antd-theme';
|
|
import { useTheme, initTheme, watchSystemTheme } from '@/composables/useTheme';
|
|
|
|
const authStore = useAuthStore();
|
|
|
|
// 初始化主题(全局)
|
|
initTheme();
|
|
watchSystemTheme();
|
|
|
|
// 使用主题
|
|
const { isDark } = useTheme();
|
|
|
|
// 动态生成 Ant Design 主题
|
|
const antdTheme = computed(() => getAntdTheme(isDark.value));
|
|
|
|
// 应用启动时验证 Token
|
|
onMounted(async () => {
|
|
if (authStore.isAuthenticated) {
|
|
try {
|
|
await authStore.fetchCurrentUser();
|
|
} catch (error) {
|
|
console.error('验证用户信息失败:', error);
|
|
// Token 可能已过期,清除认证状态
|
|
authStore.clearAuth();
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<style>
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
width: 100%;
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
#app {
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 100vh;
|
|
font-family:
|
|
-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
|
|
'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
/* 修复按钮图标与文本的垂直对齐 */
|
|
.ant-btn {
|
|
display: inline-flex !important;
|
|
align-items: center !important;
|
|
justify-content: center !important;
|
|
}
|
|
|
|
.ant-btn .anticon {
|
|
display: inline-flex !important;
|
|
align-items: center !important;
|
|
line-height: 1 !important;
|
|
}
|
|
|
|
.ant-btn > span {
|
|
display: inline-flex !important;
|
|
align-items: center !important;
|
|
}
|
|
</style>
|