diff --git a/src/components/PlanList.vue b/src/components/PlanList.vue
deleted file mode 100644
index 8bfdd53d..00000000
--- a/src/components/PlanList.vue
+++ /dev/null
@@ -1,400 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 重新加载
-
-
-
-
-
-
-
-
- 手动
- 自动(无限执行)
- 自动({{ scope.row.execute_num }}次)
-
-
-
-
-
- 禁用计划
- 启用计划
- 执行失败
- 执行完毕
-
-
-
-
- {{ formatNextExecutionTime(scope.row.cron_expression) }}
-
-
-
-
- 编辑
- 详情
-
- {{ scope.row.status === 1 ? '停止' : '启动' }}
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 2103955d..3685ac93 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,15 +1,15 @@
-import { createApp } from 'vue';
-import { createRouter, createWebHistory } from 'vue-router';
+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 './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 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 DeviceCommandLogView from './views/monitor/DeviceCommandLogView.vue';
@@ -36,58 +36,58 @@ 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: '/', 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: '/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 } },
- // ---------------------------
+ // --- 统一注册所有监控路由 ---
+ {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
+ history: createWebHistory(),
+ routes
});
// 全局路由守卫
router.beforeEach((to, from, next) => {
- const loggedIn = localStorage.getItem('jwt_token');
+ 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(); // 正常放行
- }
+ 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(ElementPlus, {locale: zhCn});
// 使用路由
app.use(router);
diff --git a/src/components/DeviceList.vue b/src/views/device/DeviceList.vue
similarity index 98%
rename from src/components/DeviceList.vue
rename to src/views/device/DeviceList.vue
index f1431eca..2bed3a32 100644
--- a/src/components/DeviceList.vue
+++ b/src/views/device/DeviceList.vue
@@ -81,8 +81,8 @@
+
\ No newline at end of file