import { createApp,ref, onBeforeUnmount} from 'vue' import App from './App.vue' import router from './router'; import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css'; import zhCn from 'element-plus/es/locale/lang/zh-cn'; // import axiosInstance from '@/utils/axios-config'; import axios from 'axios'; import '@/assets/global.css' import { useGlobalWebSocket } from './utils/useGlobalWebSocket'; import DataVVue3 from '@kjgl77/datav-vue3'; import '@kjgl77/datav-vue3/dist/style.css'; import mitt from 'mitt'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/reset.css'; import { createPinia } from 'pinia'; const app = createApp(App) const globalWebSocket = useGlobalWebSocket(); const pinia = createPinia(); app.provide('globalWebSocket', globalWebSocket); // app.provide('axios', axiosInstance); app.use(ElementPlus, { locale: zhCn }); app.use(router); app.use(DataVVue3); app.use(Antd); app.use(pinia) // 导航守卫,检查登录状态 router.beforeEach((to, from, next) => { const token = localStorage.getItem('alertToken'); // 检查 token 是否存在,作为是否登录的依据 if (to.matched.some(record => record.meta.requiresAuth)) { // 该路由需要认证 if (!token) { // 如果没有 token,重定向到登录页面 next({ path: '/login', query: { redirect: to.fullPath } // 将当前路径传递给登录页面,登录后可以重定向回来 }); } else { // 已登录,继续访问 next(); } } else { // 不需要认证,继续访问 next(); } }); // 定义转换函数 app.config.globalProperties.xToh = (px: number): string => { const vh = (px / window.innerHeight) * 100; return `${vh}vh`; }; app.config.globalProperties.xTow = (px: number): string => { const vw = (px / window.innerWidth) * 100; return `${vw}vw`; }; app.config.globalProperties.vhToPx = (vh: number): number => { return (vh / 100) * window.innerHeight; }; app.config.globalProperties.vwToPx = (vw: number): number => { return (vw / 100) * window.innerWidth; }; // 响应式处理 const updateDimensions = () => { app.config.globalProperties.windowHeight = window.innerHeight; app.config.globalProperties.windowWidth = window.innerWidth; }; window.addEventListener('resize', updateDimensions); updateDimensions(); // 初始化 // 清理事件监听器 onBeforeUnmount(() => { window.removeEventListener('resize', updateDimensions); }); const eventBus = mitt(); app.config.globalProperties.$eventBus = eventBus; app.mount('#app')