生产管理系统前端 - 农事操作管理页面搭建&白天晚上切换
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function AggregationPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">档案聚合</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/archive/aggregation
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/archive/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/archive/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ArchivePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事档案</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/archive
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function TracePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">档案追溯</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/archive/trace
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/archive/view/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/archive/view/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ArchiveViewPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">档案查看</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/archive/view
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function GanttPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">甘特图</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/calendar/gantt
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/calendar/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/calendar/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function CalendarPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事日历</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/calendar
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function CalendarProgressPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">进度跟踪</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/calendar/progress
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ViewPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">日历视图</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/calendar/view
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function LogPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">执行日志</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/execution/log
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/execution/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/execution/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ExecutionPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事执行</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/execution
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function RecordPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">执行记录</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/execution/record
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function TypePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">执行类型</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/execution/type
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/issue/assign/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/issue/assign/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function AssignPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">问题分配</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/issue/assign
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function CollaboratePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">问题协同</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/issue/collaborate
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/issue/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/issue/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function IssuePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事问题协同</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/issue
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/issue/report/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/issue/report/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ReportPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">问题上报</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/issue/report
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function CategoryPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">知识分类</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/knowledge/category
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function KnowledgeManagementPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">知识管理</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/knowledge/management
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/knowledge/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/knowledge/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function KnowledgePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事知识库</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/knowledge
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function SearchPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">知识搜索</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/knowledge/search
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -19,98 +19,98 @@ export default function FarmingOperationPage() {
|
|||||||
|
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/farm-planning"
|
href="/farming-operation/planning"
|
||||||
className="block p-4 bg-green-50 rounded-lg hover:bg-green-100 transition-colors"
|
className="block p-4 bg-green-50 rounded-lg hover:bg-green-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-green-900 mb-2">
|
<h3 className="font-semibold text-green-900 mb-2">
|
||||||
📅 农事计划管理
|
📅 农事计划
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-green-700 text-sm">
|
<p className="text-green-700 text-sm">
|
||||||
农事计划制定和资源分配
|
农事计划创建、分配和进度管理
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/task-management"
|
href="/farming-operation/task"
|
||||||
className="block p-4 bg-blue-50 rounded-lg hover:bg-blue-100 transition-colors"
|
className="block p-4 bg-blue-50 rounded-lg hover:bg-blue-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-blue-900 mb-2">
|
<h3 className="font-semibold text-blue-900 mb-2">
|
||||||
✅ 农事任务管理
|
✅ 农事任务
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-blue-700 text-sm">
|
<p className="text-blue-700 text-sm">
|
||||||
任务创建、分配和状态监控
|
任务管理、分配、监控和统计
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/operation-execution"
|
href="/farming-operation/execution"
|
||||||
className="block p-4 bg-purple-50 rounded-lg hover:bg-purple-100 transition-colors"
|
className="block p-4 bg-purple-50 rounded-lg hover:bg-purple-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-purple-900 mb-2">
|
<h3 className="font-semibold text-purple-900 mb-2">
|
||||||
🚜 农事执行管理
|
🚜 农事执行
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-purple-700 text-sm">
|
<p className="text-purple-700 text-sm">
|
||||||
操作记录和日志查询
|
执行类型、记录和日志管理
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/farming-calendar"
|
href="/farming-operation/calendar"
|
||||||
className="block p-4 bg-orange-50 rounded-lg hover:bg-orange-100 transition-colors"
|
className="block p-4 bg-orange-50 rounded-lg hover:bg-orange-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-orange-900 mb-2">
|
<h3 className="font-semibold text-orange-900 mb-2">
|
||||||
📆 农事日历管理
|
📆 农事日历
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-orange-700 text-sm">
|
<p className="text-orange-700 text-sm">
|
||||||
日历视图和甘特图管理
|
日历视图、甘特图和进度跟踪
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/operation-archive"
|
href="/farming-operation/archive"
|
||||||
className="block p-4 bg-teal-50 rounded-lg hover:bg-teal-100 transition-colors"
|
className="block p-4 bg-teal-50 rounded-lg hover:bg-teal-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-teal-900 mb-2">
|
<h3 className="font-semibold text-teal-900 mb-2">
|
||||||
📁 农事档案管理
|
📁 农事档案
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-teal-700 text-sm">
|
<p className="text-teal-700 text-sm">
|
||||||
档案归集和溯源管理
|
档案聚合、查看和追溯
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/knowledge-base"
|
href="/farming-operation/knowledge"
|
||||||
className="block p-4 bg-indigo-50 rounded-lg hover:bg-indigo-100 transition-colors"
|
className="block p-4 bg-indigo-50 rounded-lg hover:bg-indigo-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-indigo-900 mb-2">
|
<h3 className="font-semibold text-indigo-900 mb-2">
|
||||||
📚 知识库管理
|
📚 农事知识库
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-indigo-700 text-sm">
|
<p className="text-indigo-700 text-sm">
|
||||||
内容管理和智能检索
|
知识管理、分类和搜索
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/performance-management"
|
href="/farming-operation/performance"
|
||||||
className="block p-4 bg-pink-50 rounded-lg hover:bg-pink-100 transition-colors"
|
className="block p-4 bg-pink-50 rounded-lg hover:bg-pink-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-pink-900 mb-2">
|
<h3 className="font-semibold text-pink-900 mb-2">
|
||||||
📊 绩效管理
|
📊 绩效管理
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-pink-700 text-sm">
|
<p className="text-pink-700 text-sm">
|
||||||
人员管理和统计报表
|
员工绩效、工时统计和调度
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/farming-operation/issue-collaboration"
|
href="/farming-operation/issue"
|
||||||
className="block p-4 bg-red-50 rounded-lg hover:bg-red-100 transition-colors"
|
className="block p-4 bg-red-50 rounded-lg hover:bg-red-100 transition-colors"
|
||||||
>
|
>
|
||||||
<h3 className="font-semibold text-red-900 mb-2">
|
<h3 className="font-semibold text-red-900 mb-2">
|
||||||
🤝 问题协同管理
|
🤝 农事问题协同
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-red-700 text-sm">
|
<p className="text-red-700 text-sm">
|
||||||
问题上报和在线协作
|
问题上报、分配和协同处理
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function HoursPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">工时统计</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/performance/hours
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/performance/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/performance/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function PerformancePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">绩效管理</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/performance
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function SchedulePage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">绩效调度</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/performance/schedule
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function StaffPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">员工绩效</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/performance/staff
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function PerformanceStatisticsPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">绩效统计</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/performance/statistics
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function AllocationPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事计划分配</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/planning/allocation
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function CreationPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事计划创建</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/planning/creation
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/planning/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/planning/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function PlanningPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事计划</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/planning
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ProgressPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事计划进度</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/planning/progress
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function AssignmentPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">任务分配</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/task/assignment
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function ManagementPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">任务管理</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/task/management
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function MonitoringPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">任务监控</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/task/monitoring
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
18
crop-x/src/app/(app)/farming-operation/task/page.tsx
Normal file
18
crop-x/src/app/(app)/farming-operation/task/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function TaskPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">农事任务</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/task
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
|
import { Card } from '@/components/ui/card';
|
||||||
|
|
||||||
|
export default function StatisticsPage() {
|
||||||
|
return (
|
||||||
|
<div className="space-y-6">
|
||||||
|
<Card className="p-6">
|
||||||
|
<h2 className="text-xl font-semibold">任务统计</h2>
|
||||||
|
<div className="p-3 bg-muted rounded-lg mt-3">
|
||||||
|
<p className="text-sm">
|
||||||
|
<strong>页面路径:</strong> /farming-operation/task/statistics
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import {SideBarOld} from '@/components/layouts/SideBar/SideBarOld'
|
|||||||
import '@/styles/globals.css'
|
import '@/styles/globals.css'
|
||||||
import { ThemeProvider } from 'next-themes'
|
import { ThemeProvider } from 'next-themes'
|
||||||
import { usePathname } from 'next/navigation'
|
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 = {
|
const navbarData = {
|
||||||
logo: {
|
logo: {
|
||||||
@@ -584,6 +584,198 @@ const machineryManagement = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 农事操作管理系统
|
||||||
|
const farmingOperation = {
|
||||||
|
navMain: [
|
||||||
|
{
|
||||||
|
title: "农事计划",
|
||||||
|
url: "/farming-operation/planning",
|
||||||
|
icon: <Calendar className="w-4 h-4" />,
|
||||||
|
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: <FileText className="w-4 h-4" />,
|
||||||
|
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: <Zap className="w-4 h-4" />,
|
||||||
|
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: <Calendar className="w-4 h-4" />,
|
||||||
|
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: <Database className="w-4 h-4" />,
|
||||||
|
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: <Book className="w-4 h-4" />,
|
||||||
|
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: <BarChart3 className="w-4 h-4" />,
|
||||||
|
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: <Users className="w-4 h-4" />,
|
||||||
|
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({
|
function RootLayoutContent({
|
||||||
children,
|
children,
|
||||||
}: {
|
}: {
|
||||||
@@ -601,6 +793,8 @@ function RootLayoutContent({
|
|||||||
return machineryManagement;
|
return machineryManagement;
|
||||||
case '/land-information':
|
case '/land-information':
|
||||||
return fieldMessageManagement;
|
return fieldMessageManagement;
|
||||||
|
case '/farming-operation':
|
||||||
|
return farmingOperation;
|
||||||
case '/central-config':
|
case '/central-config':
|
||||||
return centralConfigData;
|
return centralConfigData;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -1,44 +1,27 @@
|
|||||||
'use client';
|
|
||||||
|
|
||||||
import * as React from 'react';
|
|
||||||
import { Moon, Sun } from 'lucide-react';
|
import { Moon, Sun } from 'lucide-react';
|
||||||
import { useTheme } from 'next-themes';
|
import { useTheme } from '../../hooks/useTheme';
|
||||||
|
import { Button } from '../ui/button';
|
||||||
import { Button } from '@/components/ui/button';
|
|
||||||
|
|
||||||
export function ThemeToggle() {
|
export function ThemeToggle() {
|
||||||
const { theme, setTheme } = useTheme();
|
const { theme, setTheme } = useTheme();
|
||||||
const [mounted, setMounted] = React.useState(false);
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
setMounted(true);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
if (!mounted) {
|
|
||||||
return (
|
|
||||||
<Button variant="outline" size="icon" className="relative overflow-hidden transition-all duration-300 hover:scale-110">
|
|
||||||
<Sun className="h-[1.2rem] w-[1.2rem]" />
|
|
||||||
<span className="sr-only">切换主题</span>
|
|
||||||
</Button>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const isDark = theme === 'dark';
|
|
||||||
|
|
||||||
const toggleTheme = () => {
|
const toggleTheme = () => {
|
||||||
setTheme(isDark ? 'light' : 'dark');
|
setTheme(theme === 'light' ? 'dark' : 'light');
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
onClick={toggleTheme}
|
onClick={toggleTheme}
|
||||||
className="relative overflow-hidden transition-all duration-300 hover:scale-110"
|
title={theme === 'light' ? '切换到深色模式' : '切换到浅色模式'}
|
||||||
|
className="transition-colors"
|
||||||
>
|
>
|
||||||
<Sun className={`h-[1.2rem] w-[1.2rem] transition-all duration-300 ${isDark ? 'rotate-90 scale-0' : 'rotate-0 scale-100'}`} />
|
{theme === 'light' ? (
|
||||||
<Moon className={`absolute h-[1.2rem] w-[1.2rem] transition-all duration-300 ${isDark ? 'rotate-0 scale-100' : '-rotate-90 scale-0'}`} />
|
<Moon className="w-5 h-5" />
|
||||||
<span className="sr-only">切换主题</span>
|
) : (
|
||||||
|
<Sun className="w-5 h-5" />
|
||||||
|
)}
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user