import { createApp } from 'vue'; import { createRouter, createWebHistory } from 'vue-router'; import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css'; import App from './App.vue'; import Home from './components/Home.vue'; import DeviceList from './components/DeviceList.vue'; import PlanList from './components/PlanList.vue'; import LoginForm from './components/LoginForm.vue'; import DeviceTemplateList from './components/DeviceTemplateList.vue'; // 导入设备模板列表组件 import DeviceCommandLogView from './views/monitor/DeviceCommandLogView.vue'; // 导入设备命令日志视图 // 导入全局样式 import './assets/styles/main.css'; // 配置路由 const routes = [ { path: '/', component: Home, meta: { requiresAuth: true } }, { path: '/devices', component: DeviceList, meta: { requiresAuth: true } }, { path: '/device-templates', component: DeviceTemplateList, meta: { requiresAuth: true } }, // 添加设备模板路由 { path: '/plans', component: PlanList, meta: { requiresAuth: true } }, { path: '/monitor/device-command-logs', component: DeviceCommandLogView, meta: { requiresAuth: true } }, // 添加设备命令日志路由 { path: '/login', component: LoginForm } ]; const router = createRouter({ history: createWebHistory(), routes }); // 全局路由守卫 router.beforeEach((to, from, next) => { const loggedIn = localStorage.getItem('jwt_token'); if (to.matched.some(record => record.meta.requiresAuth) && !loggedIn) { // 如果路由需要认证但用户未登录,则重定向到登录页 next('/login'); } else if (to.path === '/login' && loggedIn) { // 如果用户已登录但试图访问登录页,则重定向到首页 next('/'); } else { next(); // 正常放行 } }); // 创建Vue应用实例 const app = createApp(App); // 使用Element Plus组件库 app.use(ElementPlus); // 使用路由 app.use(router); // 挂载应用 app.mount('#app');