From 3fc8f883cfc8928414fc3eba38e9a1068f0089ba Mon Sep 17 00:00:00 2001 From: peng Date: Tue, 28 Oct 2025 17:20:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=89=8D=E7=AB=AF=20-=20=E5=86=9C=E4=BA=8B=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E6=90=AD=E5=BB=BA?= =?UTF-8?q?&=E7=99=BD=E5=A4=A9=E6=99=9A=E4=B8=8A=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../archive/aggregation/page.tsx | 18 ++ .../(app)/farming-operation/archive/page.tsx | 18 ++ .../farming-operation/archive/trace/page.tsx | 18 ++ .../farming-operation/archive/view/page.tsx | 18 ++ .../farming-operation/calendar/gantt/page.tsx | 18 ++ .../(app)/farming-operation/calendar/page.tsx | 18 ++ .../calendar/progress/page.tsx | 18 ++ .../farming-operation/calendar/view/page.tsx | 18 ++ .../farming-operation/execution/log/page.tsx | 18 ++ .../farming-operation/execution/page.tsx | 18 ++ .../execution/record/page.tsx | 18 ++ .../farming-operation/execution/type/page.tsx | 18 ++ .../farming-operation/issue/assign/page.tsx | 18 ++ .../issue/collaborate/page.tsx | 18 ++ .../(app)/farming-operation/issue/page.tsx | 18 ++ .../farming-operation/issue/report/page.tsx | 18 ++ .../knowledge/category/page.tsx | 18 ++ .../knowledge/management/page.tsx | 18 ++ .../farming-operation/knowledge/page.tsx | 18 ++ .../knowledge/search/page.tsx | 18 ++ .../src/app/(app)/farming-operation/page.tsx | 46 ++-- .../performance/hours/page.tsx | 18 ++ .../farming-operation/performance/page.tsx | 18 ++ .../performance/schedule/page.tsx | 18 ++ .../performance/staff/page.tsx | 18 ++ .../performance/statistics/page.tsx | 18 ++ .../planning/allocation/page.tsx | 18 ++ .../planning/creation/page.tsx | 18 ++ .../(app)/farming-operation/planning/page.tsx | 18 ++ .../planning/progress/page.tsx | 18 ++ .../task/assignment/page.tsx | 18 ++ .../task/management/page.tsx | 18 ++ .../task/monitoring/page.tsx | 18 ++ .../app/(app)/farming-operation/task/page.tsx | 18 ++ .../task/statistics/page.tsx | 18 ++ crop-x/src/app/layout.tsx | 196 +++++++++++++++++- crop-x/src/components/layouts/ThemeToggle.tsx | 39 +--- 37 files changed, 841 insertions(+), 52 deletions(-) create mode 100644 crop-x/src/app/(app)/farming-operation/archive/aggregation/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/archive/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/archive/trace/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/archive/view/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/calendar/gantt/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/calendar/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/calendar/progress/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/calendar/view/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/execution/log/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/execution/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/execution/record/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/execution/type/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/issue/assign/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/issue/collaborate/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/issue/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/issue/report/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/knowledge/category/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/knowledge/management/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/knowledge/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/knowledge/search/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/performance/hours/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/performance/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/performance/schedule/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/performance/staff/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/performance/statistics/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/planning/allocation/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/planning/creation/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/planning/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/planning/progress/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/task/assignment/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/task/management/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/task/monitoring/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/task/page.tsx create mode 100644 crop-x/src/app/(app)/farming-operation/task/statistics/page.tsx diff --git a/crop-x/src/app/(app)/farming-operation/archive/aggregation/page.tsx b/crop-x/src/app/(app)/farming-operation/archive/aggregation/page.tsx new file mode 100644 index 0000000..402b90b --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/archive/aggregation/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function AggregationPage() { + return ( +
+ +

档案聚合

+
+

+ 页面路径: /farming-operation/archive/aggregation +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/archive/page.tsx b/crop-x/src/app/(app)/farming-operation/archive/page.tsx new file mode 100644 index 0000000..01b9443 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/archive/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ArchivePage() { + return ( +
+ +

农事档案

+
+

+ 页面路径: /farming-operation/archive +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/archive/trace/page.tsx b/crop-x/src/app/(app)/farming-operation/archive/trace/page.tsx new file mode 100644 index 0000000..47374db --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/archive/trace/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function TracePage() { + return ( +
+ +

档案追溯

+
+

+ 页面路径: /farming-operation/archive/trace +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/archive/view/page.tsx b/crop-x/src/app/(app)/farming-operation/archive/view/page.tsx new file mode 100644 index 0000000..9f51f0d --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/archive/view/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ArchiveViewPage() { + return ( +
+ +

档案查看

+
+

+ 页面路径: /farming-operation/archive/view +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/calendar/gantt/page.tsx b/crop-x/src/app/(app)/farming-operation/calendar/gantt/page.tsx new file mode 100644 index 0000000..7e063fe --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/calendar/gantt/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function GanttPage() { + return ( +
+ +

甘特图

+
+

+ 页面路径: /farming-operation/calendar/gantt +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/calendar/page.tsx b/crop-x/src/app/(app)/farming-operation/calendar/page.tsx new file mode 100644 index 0000000..52dc3a1 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/calendar/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function CalendarPage() { + return ( +
+ +

农事日历

+
+

+ 页面路径: /farming-operation/calendar +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/calendar/progress/page.tsx b/crop-x/src/app/(app)/farming-operation/calendar/progress/page.tsx new file mode 100644 index 0000000..1997126 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/calendar/progress/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function CalendarProgressPage() { + return ( +
+ +

进度跟踪

+
+

+ 页面路径: /farming-operation/calendar/progress +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/calendar/view/page.tsx b/crop-x/src/app/(app)/farming-operation/calendar/view/page.tsx new file mode 100644 index 0000000..b84bd2e --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/calendar/view/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ViewPage() { + return ( +
+ +

日历视图

+
+

+ 页面路径: /farming-operation/calendar/view +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/execution/log/page.tsx b/crop-x/src/app/(app)/farming-operation/execution/log/page.tsx new file mode 100644 index 0000000..03298fe --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/execution/log/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function LogPage() { + return ( +
+ +

执行日志

+
+

+ 页面路径: /farming-operation/execution/log +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/execution/page.tsx b/crop-x/src/app/(app)/farming-operation/execution/page.tsx new file mode 100644 index 0000000..36660c8 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/execution/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ExecutionPage() { + return ( +
+ +

农事执行

+
+

+ 页面路径: /farming-operation/execution +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/execution/record/page.tsx b/crop-x/src/app/(app)/farming-operation/execution/record/page.tsx new file mode 100644 index 0000000..cef2cd4 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/execution/record/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function RecordPage() { + return ( +
+ +

执行记录

+
+

+ 页面路径: /farming-operation/execution/record +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/execution/type/page.tsx b/crop-x/src/app/(app)/farming-operation/execution/type/page.tsx new file mode 100644 index 0000000..efb2903 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/execution/type/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function TypePage() { + return ( +
+ +

执行类型

+
+

+ 页面路径: /farming-operation/execution/type +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/issue/assign/page.tsx b/crop-x/src/app/(app)/farming-operation/issue/assign/page.tsx new file mode 100644 index 0000000..dd78f00 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/issue/assign/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function AssignPage() { + return ( +
+ +

问题分配

+
+

+ 页面路径: /farming-operation/issue/assign +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/issue/collaborate/page.tsx b/crop-x/src/app/(app)/farming-operation/issue/collaborate/page.tsx new file mode 100644 index 0000000..cbb4697 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/issue/collaborate/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function CollaboratePage() { + return ( +
+ +

问题协同

+
+

+ 页面路径: /farming-operation/issue/collaborate +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/issue/page.tsx b/crop-x/src/app/(app)/farming-operation/issue/page.tsx new file mode 100644 index 0000000..af00f65 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/issue/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function IssuePage() { + return ( +
+ +

农事问题协同

+
+

+ 页面路径: /farming-operation/issue +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/issue/report/page.tsx b/crop-x/src/app/(app)/farming-operation/issue/report/page.tsx new file mode 100644 index 0000000..829b275 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/issue/report/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ReportPage() { + return ( +
+ +

问题上报

+
+

+ 页面路径: /farming-operation/issue/report +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/knowledge/category/page.tsx b/crop-x/src/app/(app)/farming-operation/knowledge/category/page.tsx new file mode 100644 index 0000000..b005021 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/knowledge/category/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function CategoryPage() { + return ( +
+ +

知识分类

+
+

+ 页面路径: /farming-operation/knowledge/category +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/knowledge/management/page.tsx b/crop-x/src/app/(app)/farming-operation/knowledge/management/page.tsx new file mode 100644 index 0000000..f7c569f --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/knowledge/management/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function KnowledgeManagementPage() { + return ( +
+ +

知识管理

+
+

+ 页面路径: /farming-operation/knowledge/management +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/knowledge/page.tsx b/crop-x/src/app/(app)/farming-operation/knowledge/page.tsx new file mode 100644 index 0000000..c4a72a3 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/knowledge/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function KnowledgePage() { + return ( +
+ +

农事知识库

+
+

+ 页面路径: /farming-operation/knowledge +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/knowledge/search/page.tsx b/crop-x/src/app/(app)/farming-operation/knowledge/search/page.tsx new file mode 100644 index 0000000..977b288 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/knowledge/search/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function SearchPage() { + return ( +
+ +

知识搜索

+
+

+ 页面路径: /farming-operation/knowledge/search +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/page.tsx b/crop-x/src/app/(app)/farming-operation/page.tsx index 5be0182..b91f5b1 100644 --- a/crop-x/src/app/(app)/farming-operation/page.tsx +++ b/crop-x/src/app/(app)/farming-operation/page.tsx @@ -19,98 +19,98 @@ export default function FarmingOperationPage() {

- 📅 农事计划管理 + 📅 农事计划

- 农事计划制定和资源分配 + 农事计划创建、分配和进度管理

- ✅ 农事任务管理 + ✅ 农事任务

- 任务创建、分配和状态监控 + 任务管理、分配、监控和统计

- 🚜 农事执行管理 + 🚜 农事执行

- 操作记录和日志查询 + 执行类型、记录和日志管理

- 📆 农事日历管理 + 📆 农事日历

- 日历视图和甘特图管理 + 日历视图、甘特图和进度跟踪

- 📁 农事档案管理 + 📁 农事档案

- 档案归集和溯源管理 + 档案聚合、查看和追溯

- 📚 知识库管理 + 📚 农事知识库

- 内容管理和智能检索 + 知识管理、分类和搜索

📊 绩效管理

- 人员管理和统计报表 + 员工绩效、工时统计和调度

- 🤝 问题协同管理 + 🤝 农事问题协同

- 问题上报和在线协作 + 问题上报、分配和协同处理

diff --git a/crop-x/src/app/(app)/farming-operation/performance/hours/page.tsx b/crop-x/src/app/(app)/farming-operation/performance/hours/page.tsx new file mode 100644 index 0000000..dc2da11 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/performance/hours/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function HoursPage() { + return ( +
+ +

工时统计

+
+

+ 页面路径: /farming-operation/performance/hours +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/performance/page.tsx b/crop-x/src/app/(app)/farming-operation/performance/page.tsx new file mode 100644 index 0000000..ed14651 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/performance/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function PerformancePage() { + return ( +
+ +

绩效管理

+
+

+ 页面路径: /farming-operation/performance +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/performance/schedule/page.tsx b/crop-x/src/app/(app)/farming-operation/performance/schedule/page.tsx new file mode 100644 index 0000000..5426bfa --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/performance/schedule/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function SchedulePage() { + return ( +
+ +

绩效调度

+
+

+ 页面路径: /farming-operation/performance/schedule +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/performance/staff/page.tsx b/crop-x/src/app/(app)/farming-operation/performance/staff/page.tsx new file mode 100644 index 0000000..ea4fb68 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/performance/staff/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function StaffPage() { + return ( +
+ +

员工绩效

+
+

+ 页面路径: /farming-operation/performance/staff +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/performance/statistics/page.tsx b/crop-x/src/app/(app)/farming-operation/performance/statistics/page.tsx new file mode 100644 index 0000000..e4e8135 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/performance/statistics/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function PerformanceStatisticsPage() { + return ( +
+ +

绩效统计

+
+

+ 页面路径: /farming-operation/performance/statistics +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/planning/allocation/page.tsx b/crop-x/src/app/(app)/farming-operation/planning/allocation/page.tsx new file mode 100644 index 0000000..ad8fb99 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/planning/allocation/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function AllocationPage() { + return ( +
+ +

农事计划分配

+
+

+ 页面路径: /farming-operation/planning/allocation +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/planning/creation/page.tsx b/crop-x/src/app/(app)/farming-operation/planning/creation/page.tsx new file mode 100644 index 0000000..236e878 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/planning/creation/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function CreationPage() { + return ( +
+ +

农事计划创建

+
+

+ 页面路径: /farming-operation/planning/creation +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/planning/page.tsx b/crop-x/src/app/(app)/farming-operation/planning/page.tsx new file mode 100644 index 0000000..9b47f75 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/planning/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function PlanningPage() { + return ( +
+ +

农事计划

+
+

+ 页面路径: /farming-operation/planning +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/planning/progress/page.tsx b/crop-x/src/app/(app)/farming-operation/planning/progress/page.tsx new file mode 100644 index 0000000..5d6b7fa --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/planning/progress/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ProgressPage() { + return ( +
+ +

农事计划进度

+
+

+ 页面路径: /farming-operation/planning/progress +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/task/assignment/page.tsx b/crop-x/src/app/(app)/farming-operation/task/assignment/page.tsx new file mode 100644 index 0000000..d4731dc --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/task/assignment/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function AssignmentPage() { + return ( +
+ +

任务分配

+
+

+ 页面路径: /farming-operation/task/assignment +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/task/management/page.tsx b/crop-x/src/app/(app)/farming-operation/task/management/page.tsx new file mode 100644 index 0000000..8930708 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/task/management/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function ManagementPage() { + return ( +
+ +

任务管理

+
+

+ 页面路径: /farming-operation/task/management +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/task/monitoring/page.tsx b/crop-x/src/app/(app)/farming-operation/task/monitoring/page.tsx new file mode 100644 index 0000000..9ab6e0b --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/task/monitoring/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function MonitoringPage() { + return ( +
+ +

任务监控

+
+

+ 页面路径: /farming-operation/task/monitoring +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/task/page.tsx b/crop-x/src/app/(app)/farming-operation/task/page.tsx new file mode 100644 index 0000000..5331f46 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/task/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function TaskPage() { + return ( +
+ +

农事任务

+
+

+ 页面路径: /farming-operation/task +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/(app)/farming-operation/task/statistics/page.tsx b/crop-x/src/app/(app)/farming-operation/task/statistics/page.tsx new file mode 100644 index 0000000..41a30c5 --- /dev/null +++ b/crop-x/src/app/(app)/farming-operation/task/statistics/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { Card } from '@/components/ui/card'; + +export default function StatisticsPage() { + return ( +
+ +

任务统计

+
+

+ 页面路径: /farming-operation/task/statistics +

+
+
+
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/layout.tsx b/crop-x/src/app/layout.tsx index 494c924..dc57c74 100644 --- a/crop-x/src/app/layout.tsx +++ b/crop-x/src/app/layout.tsx @@ -5,7 +5,7 @@ import {SideBarOld} from '@/components/layouts/SideBar/SideBarOld' import '@/styles/globals.css' import { ThemeProvider } from 'next-themes' import { usePathname } from 'next/navigation' -import { Building2, Users, Cog, Activity, Mail, UserCircle, Database, Map, BarChart3, Cloud, TrendingUp, GitCompare, AlertTriangle, FileText, MapPin, Settings, User, Package, Navigation, Zap, Target, PieChart, Calendar, Shield, Tractor, Clipboard, Brain, Droplets } from 'lucide-react' +import { Building2, Users, Cog, Activity, Mail, UserCircle, Database, Map, BarChart3, Cloud, TrendingUp, GitCompare, AlertTriangle, FileText, MapPin, Settings, User, Package, Navigation, Zap, Target, PieChart, Calendar, Shield, Tractor, Clipboard, Brain, Droplets, Book } from 'lucide-react' const navbarData = { logo: { @@ -584,6 +584,198 @@ const machineryManagement = { ] } +// 农事操作管理系统 +const farmingOperation = { + navMain: [ + { + title: "农事计划", + url: "/farming-operation/planning", + icon: , + items: [ + { + title: "农事计划创建", + url: "/farming-operation/planning/creation", + isActive: false + }, + { + title: "农事计划分配", + url: "/farming-operation/planning/allocation", + isActive: false + }, + { + title: "农事计划进度", + url: "/farming-operation/planning/progress", + isActive: false + } + ] + }, + { + title: "农事任务", + url: "/farming-operation/task", + icon: , + items: [ + { + title: "任务管理", + url: "/farming-operation/task/management", + isActive: false + }, + { + title: "任务分配", + url: "/farming-operation/task/assignment", + isActive: false + }, + { + title: "任务监控", + url: "/farming-operation/task/monitoring", + isActive: false + }, + { + title: "任务统计", + url: "/farming-operation/task/statistics", + isActive: false + } + ] + }, + { + title: "农事执行", + url: "/farming-operation/execution", + icon: , + items: [ + { + title: "执行类型", + url: "/farming-operation/execution/type", + isActive: false + }, + { + title: "执行记录", + url: "/farming-operation/execution/record", + isActive: false + }, + { + title: "执行日志", + url: "/farming-operation/execution/log", + isActive: false + } + ] + }, + { + title: "农事日历", + url: "/farming-operation/calendar", + icon: , + items: [ + { + title: "日历视图", + url: "/farming-operation/calendar/view", + isActive: false + }, + { + title: "甘特图", + url: "/farming-operation/calendar/gantt", + isActive: false + }, + { + title: "进度跟踪", + url: "/farming-operation/calendar/progress", + isActive: false + } + ] + }, + { + title: "农事档案", + url: "/farming-operation/archive", + icon: , + items: [ + { + title: "档案聚合", + url: "/farming-operation/archive/aggregation", + isActive: false + }, + { + title: "档案查看", + url: "/farming-operation/archive/view", + isActive: false + }, + { + title: "档案追溯", + url: "/farming-operation/archive/trace", + isActive: false + } + ] + }, + { + title: "农事知识库", + url: "/farming-operation/knowledge", + icon: , + items: [ + { + title: "知识管理", + url: "/farming-operation/knowledge/management", + isActive: false + }, + { + title: "知识分类", + url: "/farming-operation/knowledge/category", + isActive: false + }, + { + title: "知识搜索", + url: "/farming-operation/knowledge/search", + isActive: false + } + ] + }, + { + title: "绩效管理", + url: "/farming-operation/performance", + icon: , + items: [ + { + title: "员工绩效", + url: "/farming-operation/performance/staff", + isActive: false + }, + { + title: "工时统计", + url: "/farming-operation/performance/hours", + isActive: false + }, + { + title: "绩效统计", + url: "/farming-operation/performance/statistics", + isActive: false + }, + { + title: "绩效调度", + url: "/farming-operation/performance/schedule", + isActive: false + } + ] + }, + { + title: "农事问题协同", + url: "/farming-operation/issue", + icon: , + items: [ + { + title: "问题上报", + url: "/farming-operation/issue/report", + isActive: false + }, + { + title: "问题分配", + url: "/farming-operation/issue/assign", + isActive: false + }, + { + title: "问题协同", + url: "/farming-operation/issue/collaborate", + isActive: false + } + ] + } + ] +} + function RootLayoutContent({ children, }: { @@ -601,6 +793,8 @@ function RootLayoutContent({ return machineryManagement; case '/land-information': return fieldMessageManagement; + case '/farming-operation': + return farmingOperation; case '/central-config': return centralConfigData; default: diff --git a/crop-x/src/components/layouts/ThemeToggle.tsx b/crop-x/src/components/layouts/ThemeToggle.tsx index d84ab8a..a8ec170 100644 --- a/crop-x/src/components/layouts/ThemeToggle.tsx +++ b/crop-x/src/components/layouts/ThemeToggle.tsx @@ -1,44 +1,27 @@ -'use client'; - -import * as React from 'react'; import { Moon, Sun } from 'lucide-react'; -import { useTheme } from 'next-themes'; - -import { Button } from '@/components/ui/button'; +import { useTheme } from '../../hooks/useTheme'; +import { Button } from '../ui/button'; export function ThemeToggle() { const { theme, setTheme } = useTheme(); - const [mounted, setMounted] = React.useState(false); - - React.useEffect(() => { - setMounted(true); - }, []); - - if (!mounted) { - return ( - - ); - } - - const isDark = theme === 'dark'; const toggleTheme = () => { - setTheme(isDark ? 'light' : 'dark'); + setTheme(theme === 'light' ? 'dark' : 'light'); }; return ( ); } \ No newline at end of file