import {createApp} from 'vue'; import {createRouter, createWebHistory} from 'vue-router'; import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css'; import zhCn from 'element-plus/dist/locale/zh-cn.mjs'; // 导入 Element Plus 中文语言包 import App from './App.vue'; import Home from './views/home/Home.vue'; import DeviceList from './views/device/DeviceList.vue'; import PlanList from './views/plan/PlanList.vue'; import LoginForm from './views/home/LoginForm.vue'; import DeviceTemplateList from './views/device/DeviceTemplateList.vue'; import PigFarmManagementView from './views/pms/PigFarmManagementView.vue'; // 导入栏舍管理视图 import PigBatchManagementView from './views/pms/PigBatchManagementView.vue'; // 导入猪群管理视图 // --- 统一导入所有监控视图 --- import DeviceCommandLogView from './views/monitor/DeviceCommandLogView.vue'; import FeedUsageRecordsView from './views/monitor/FeedUsageRecordsView.vue'; import MedicationLogsView from './views/monitor/MedicationLogsView.vue'; import PendingCollectionsView from './views/monitor/PendingCollectionsView.vue'; import PigBatchLogsView from './views/monitor/PigBatchLogsView.vue'; import PigPurchasesView from './views/monitor/PigPurchasesView.vue'; import PigSalesView from './views/monitor/PigSalesView.vue'; import PigSickLogsView from './views/monitor/PigSickLogsView.vue'; import PigTransferLogsView from './views/monitor/PigTransferLogsView.vue'; import PlanExecutionLogsView from './views/monitor/PlanExecutionLogsView.vue'; import RawMaterialPurchasesView from './views/monitor/RawMaterialPurchasesView.vue'; import RawMaterialStockLogsView from './views/monitor/RawMaterialStockLogsView.vue'; import SensorDataView from './views/monitor/SensorDataView.vue'; import TaskExecutionLogsView from './views/monitor/TaskExecutionLogsView.vue'; import UserActionLogsView from './views/monitor/UserActionLogsView.vue'; import WeighingBatchesView from './views/monitor/WeighingBatchesView.vue'; import WeighingRecordsView from './views/monitor/WeighingRecordsView.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: '/login', component: LoginForm}, {path: '/pms/farm-management', name: 'PigFarmManagement', component: PigFarmManagementView, meta: { requiresAuth: true, title: '栏舍管理' }}, {path: '/pms/batch-management', name: 'PigBatchManagement', component: PigBatchManagementView, meta: { requiresAuth: true, title: '猪群管理' }}, // --- 统一注册所有监控路由 --- {path: '/monitor/device-command-logs', component: DeviceCommandLogView, meta: {requiresAuth: true}}, {path: '/monitor/feed-usage-records', component: FeedUsageRecordsView, meta: {requiresAuth: true}}, {path: '/monitor/medication-logs', component: MedicationLogsView, meta: {requiresAuth: true}}, {path: '/monitor/pending-collections', component: PendingCollectionsView, meta: {requiresAuth: true}}, {path: '/monitor/pig-batch-logs', component: PigBatchLogsView, meta: {requiresAuth: true}}, {path: '/monitor/pig-purchases', component: PigPurchasesView, meta: {requiresAuth: true}}, {path: '/monitor/pig-sales', component: PigSalesView, meta: {requiresAuth: true}}, {path: '/monitor/pig-sick-logs', component: PigSickLogsView, meta: {requiresAuth: true}}, {path: '/monitor/pig-transfer-logs', component: PigTransferLogsView, meta: {requiresAuth: true}}, {path: '/monitor/plan-execution-logs', component: PlanExecutionLogsView, meta: {requiresAuth: true}}, {path: '/monitor/raw-material-purchases', component: RawMaterialPurchasesView, meta: {requiresAuth: true}}, {path: '/monitor/raw-material-stock-logs', component: RawMaterialStockLogsView, meta: {requiresAuth: true}}, {path: '/monitor/sensor-data', component: SensorDataView, meta: {requiresAuth: true}}, {path: '/monitor/task-execution-logs', component: TaskExecutionLogsView, meta: {requiresAuth: true}}, {path: '/monitor/user-action-logs', component: UserActionLogsView, meta: {requiresAuth: true}}, {path: '/monitor/weighing-batches', component: WeighingBatchesView, meta: {requiresAuth: true}}, {path: '/monitor/weighing-records', component: WeighingRecordsView, meta: {requiresAuth: true}}, // --------------------------- ]; 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, {locale: zhCn}); // 使用路由 app.use(router); // 挂载应用 app.mount('#app');