diff --git a/README.md b/README.md new file mode 100644 index 0000000..b5ced52 --- /dev/null +++ b/README.md @@ -0,0 +1,121 @@ +# 宁夏智慧养殖监管平台 + +## 项目概述 + +宁夏智慧养殖监管平台是一个现代化的农场管理系统,提供实时监控、数据分析和多终端访问功能。 + +## 目录结构 + +``` +nxxmdata/ +├── backend/ # 后端服务 (Node.js + Express + Sequelize) +│ ├── config/ # 配置文件 +│ ├── controllers/ # 业务逻辑控制器 +│ ├── models/ # 数据模型 +│ ├── routes/ # API路由 +│ ├── middleware/ # 中间件 +│ ├── utils/ # 工具类 +│ ├── migrations/ # 数据库迁移 +│ ├── seeds/ # 种子数据 +│ └── server.js # 服务器入口 +├── admin-system/ # 管理后台 (Vue.js 3.x) +│ └── frontend/ # 前端项目 +├── website/ # 官网 (Vue.js 3.x) +│ └── data-screen/ # 数据大屏展示 +├── mini_program/ # 微信小程序矩阵 +│ └── farm-monitor-dashboard/ # 监控仪表盘小程序 +├── scripts/ # 执行脚本目录 +│ ├── init-db.js # 数据库初始化 +│ ├── migration-manager.js # 迁移管理 +│ ├── seed-manager.js # 种子数据管理 +│ ├── test-connection.js # 连接测试 +│ └── test-map-api.js # 地图API测试 +├── docs/ # 文档目录 +│ ├── baidu-map-license.md # 百度地图许可 +│ └── performance-monitoring.md # 性能监控文档 +├── test/ # 测试文件目录 +│ └── performance-monitor-test.js # 性能监控测试 +├── examples/ # 示例代码 +└── 配置文件 + ├── arch.md # 架构文档 + ├── design.md # 详细设计 + ├── dev-plan.md # 开发计划 + ├── task.md # 任务列表 + ├── schema.sql # 数据库架构 + └── create_tables.sql # 建表脚本 +``` + +## 技术栈 + +### 后端技术栈 +- **运行环境**: Node.js 18.0+ +- **Web框架**: Express.js 4.18+ +- **ORM框架**: Sequelize 6.30+ +- **数据库**: MySQL (mysql2 3.0+) +- **认证**: JWT (jsonwebtoken 9.0+) +- **密码加密**: bcrypt 5.1+ +- **API文档**: Swagger (swagger-jsdoc + swagger-ui-express) +- **日志管理**: Winston 3.17+ +- **开发工具**: nodemon 3.0+ +- **跨域处理**: CORS 2.8+ +- **数据验证**: express-validator 7.2+ +- **环境变量**: dotenv 16.0+ +- **HTTP客户端**: Axios 1.4+ +- **服务器端口**: 5350 + +### 前端技术栈 +- **管理后台**: Vue.js 3.4+ + Ant Design Vue 4.0+ +- **官网**: Vue.js 3.4+ + ECharts 5.4+ +- **微信小程序**: React + TypeScript + Tailwind CSS +- **构建工具**: Vite 5.0+ +- **状态管理**: Pinia 2.0+ +- **路由管理**: Vue Router 4.0+ + +## 核心功能 + +- ✅ 实时设备监控 +- ✅ 动物健康管理 +- ✅ 地图可视化展示 +- ✅ 数据分析报表 +- ✅ 多角色权限系统 +- ✅ 订单管理功能 +- ✅ 预警管理系统 +- ✅ 性能监控分析 + +## 快速开始 + +### 后端启动 +```bash +cd backend +npm install +npm run dev +``` + +### 管理后台启动 +```bash +cd admin-system/frontend +npm install +npm run dev +``` + +### 官网启动 +```bash +cd website/data-screen +npm install +npm run dev +``` + +## 开发规范 + +1. 遵循模块化开发原则 +2. 代码注释规范清晰 +3. API接口文档完整 +4. 数据库迁移脚本可重复执行 +5. 测试用例覆盖核心功能 + +## 部署说明 + +生产环境建议使用Docker容器化部署,具体部署流程参考各模块的部署文档。 + +--- +*最后更新: 2025年8月* \ No newline at end of file diff --git a/frontend/.env.example b/admin-system/frontend/.env.example similarity index 100% rename from frontend/.env.example rename to admin-system/frontend/.env.example diff --git a/frontend/components/PerformanceMonitor.vue b/admin-system/frontend/components/PerformanceMonitor.vue similarity index 100% rename from frontend/components/PerformanceMonitor.vue rename to admin-system/frontend/components/PerformanceMonitor.vue diff --git a/frontend/index.html b/admin-system/frontend/index.html similarity index 100% rename from frontend/index.html rename to admin-system/frontend/index.html diff --git a/frontend/package-lock.json b/admin-system/frontend/package-lock.json similarity index 100% rename from frontend/package-lock.json rename to admin-system/frontend/package-lock.json diff --git a/frontend/package.json b/admin-system/frontend/package.json similarity index 100% rename from frontend/package.json rename to admin-system/frontend/package.json diff --git a/frontend/public/debug-coordinate-input.html b/admin-system/frontend/public/debug-coordinate-input.html similarity index 100% rename from frontend/public/debug-coordinate-input.html rename to admin-system/frontend/public/debug-coordinate-input.html diff --git a/frontend/public/debug-devices.html b/admin-system/frontend/public/debug-devices.html similarity index 100% rename from frontend/public/debug-devices.html rename to admin-system/frontend/public/debug-devices.html diff --git a/frontend/public/debug-users.html b/admin-system/frontend/public/debug-users.html similarity index 100% rename from frontend/public/debug-users.html rename to admin-system/frontend/public/debug-users.html diff --git a/frontend/public/map-test.html b/admin-system/frontend/public/map-test.html similarity index 100% rename from frontend/public/map-test.html rename to admin-system/frontend/public/map-test.html diff --git a/frontend/public/test-auto-login.html b/admin-system/frontend/public/test-auto-login.html similarity index 100% rename from frontend/public/test-auto-login.html rename to admin-system/frontend/public/test-auto-login.html diff --git a/frontend/public/test-users-display.html b/admin-system/frontend/public/test-users-display.html similarity index 100% rename from frontend/public/test-users-display.html rename to admin-system/frontend/public/test-users-display.html diff --git a/frontend/src/App.vue b/admin-system/frontend/src/App.vue similarity index 100% rename from frontend/src/App.vue rename to admin-system/frontend/src/App.vue diff --git a/frontend/src/components/AlertStats.vue b/admin-system/frontend/src/components/AlertStats.vue similarity index 100% rename from frontend/src/components/AlertStats.vue rename to admin-system/frontend/src/components/AlertStats.vue diff --git a/frontend/src/components/AnimalStats.vue b/admin-system/frontend/src/components/AnimalStats.vue similarity index 100% rename from frontend/src/components/AnimalStats.vue rename to admin-system/frontend/src/components/AnimalStats.vue diff --git a/frontend/src/components/BaiduMap.vue b/admin-system/frontend/src/components/BaiduMap.vue similarity index 100% rename from frontend/src/components/BaiduMap.vue rename to admin-system/frontend/src/components/BaiduMap.vue diff --git a/frontend/src/components/ChartPerformanceMonitor.vue b/admin-system/frontend/src/components/ChartPerformanceMonitor.vue similarity index 100% rename from frontend/src/components/ChartPerformanceMonitor.vue rename to admin-system/frontend/src/components/ChartPerformanceMonitor.vue diff --git a/frontend/src/components/Dashboard.vue b/admin-system/frontend/src/components/Dashboard.vue similarity index 100% rename from frontend/src/components/Dashboard.vue rename to admin-system/frontend/src/components/Dashboard.vue diff --git a/frontend/src/components/DeviceStats.vue b/admin-system/frontend/src/components/DeviceStats.vue similarity index 100% rename from frontend/src/components/DeviceStats.vue rename to admin-system/frontend/src/components/DeviceStats.vue diff --git a/frontend/src/components/EChart.vue b/admin-system/frontend/src/components/EChart.vue similarity index 100% rename from frontend/src/components/EChart.vue rename to admin-system/frontend/src/components/EChart.vue diff --git a/frontend/src/components/FarmDetail.vue b/admin-system/frontend/src/components/FarmDetail.vue similarity index 100% rename from frontend/src/components/FarmDetail.vue rename to admin-system/frontend/src/components/FarmDetail.vue diff --git a/frontend/src/components/Menu.vue b/admin-system/frontend/src/components/Menu.vue similarity index 100% rename from frontend/src/components/Menu.vue rename to admin-system/frontend/src/components/Menu.vue diff --git a/frontend/src/components/MonitorChart.vue b/admin-system/frontend/src/components/MonitorChart.vue similarity index 100% rename from frontend/src/components/MonitorChart.vue rename to admin-system/frontend/src/components/MonitorChart.vue diff --git a/frontend/src/components/SimpleDeviceTest.vue b/admin-system/frontend/src/components/SimpleDeviceTest.vue similarity index 100% rename from frontend/src/components/SimpleDeviceTest.vue rename to admin-system/frontend/src/components/SimpleDeviceTest.vue diff --git a/frontend/src/components/VirtualScrollChart.vue b/admin-system/frontend/src/components/VirtualScrollChart.vue similarity index 100% rename from frontend/src/components/VirtualScrollChart.vue rename to admin-system/frontend/src/components/VirtualScrollChart.vue diff --git a/frontend/src/config/env.js b/admin-system/frontend/src/config/env.js similarity index 100% rename from frontend/src/config/env.js rename to admin-system/frontend/src/config/env.js diff --git a/frontend/src/main.js b/admin-system/frontend/src/main.js similarity index 100% rename from frontend/src/main.js rename to admin-system/frontend/src/main.js diff --git a/frontend/src/router/history.js b/admin-system/frontend/src/router/history.js similarity index 100% rename from frontend/src/router/history.js rename to admin-system/frontend/src/router/history.js diff --git a/frontend/src/router/index.js b/admin-system/frontend/src/router/index.js similarity index 100% rename from frontend/src/router/index.js rename to admin-system/frontend/src/router/index.js diff --git a/frontend/src/router/routes.js b/admin-system/frontend/src/router/routes.js similarity index 100% rename from frontend/src/router/routes.js rename to admin-system/frontend/src/router/routes.js diff --git a/frontend/src/stores/data.js b/admin-system/frontend/src/stores/data.js similarity index 100% rename from frontend/src/stores/data.js rename to admin-system/frontend/src/stores/data.js diff --git a/frontend/src/stores/index.js b/admin-system/frontend/src/stores/index.js similarity index 100% rename from frontend/src/stores/index.js rename to admin-system/frontend/src/stores/index.js diff --git a/frontend/src/stores/settings.js b/admin-system/frontend/src/stores/settings.js similarity index 100% rename from frontend/src/stores/settings.js rename to admin-system/frontend/src/stores/settings.js diff --git a/frontend/src/stores/user.js b/admin-system/frontend/src/stores/user.js similarity index 100% rename from frontend/src/stores/user.js rename to admin-system/frontend/src/stores/user.js diff --git a/frontend/src/styles/global.css b/admin-system/frontend/src/styles/global.css similarity index 100% rename from frontend/src/styles/global.css rename to admin-system/frontend/src/styles/global.css diff --git a/frontend/src/styles/theme.js b/admin-system/frontend/src/styles/theme.js similarity index 100% rename from frontend/src/styles/theme.js rename to admin-system/frontend/src/styles/theme.js diff --git a/frontend/src/test-api-direct.js b/admin-system/frontend/src/test-api-direct.js similarity index 100% rename from frontend/src/test-api-direct.js rename to admin-system/frontend/src/test-api-direct.js diff --git a/frontend/src/test-data-store.js b/admin-system/frontend/src/test-data-store.js similarity index 100% rename from frontend/src/test-data-store.js rename to admin-system/frontend/src/test-data-store.js diff --git a/frontend/src/utils/api.js b/admin-system/frontend/src/utils/api.js similarity index 100% rename from frontend/src/utils/api.js rename to admin-system/frontend/src/utils/api.js diff --git a/frontend/src/utils/chartService.js b/admin-system/frontend/src/utils/chartService.js similarity index 100% rename from frontend/src/utils/chartService.js rename to admin-system/frontend/src/utils/chartService.js diff --git a/frontend/src/utils/dataService.js b/admin-system/frontend/src/utils/dataService.js similarity index 100% rename from frontend/src/utils/dataService.js rename to admin-system/frontend/src/utils/dataService.js diff --git a/frontend/src/utils/mapService.jsx b/admin-system/frontend/src/utils/mapService.jsx similarity index 100% rename from frontend/src/utils/mapService.jsx rename to admin-system/frontend/src/utils/mapService.jsx diff --git a/frontend/src/views/Alerts.vue b/admin-system/frontend/src/views/Alerts.vue similarity index 100% rename from frontend/src/views/Alerts.vue rename to admin-system/frontend/src/views/Alerts.vue diff --git a/frontend/src/views/Analytics.vue b/admin-system/frontend/src/views/Analytics.vue similarity index 100% rename from frontend/src/views/Analytics.vue rename to admin-system/frontend/src/views/Analytics.vue diff --git a/frontend/src/views/Animals.vue b/admin-system/frontend/src/views/Animals.vue similarity index 100% rename from frontend/src/views/Animals.vue rename to admin-system/frontend/src/views/Animals.vue diff --git a/frontend/src/views/Dashboard.vue b/admin-system/frontend/src/views/Dashboard.vue similarity index 100% rename from frontend/src/views/Dashboard.vue rename to admin-system/frontend/src/views/Dashboard.vue diff --git a/frontend/src/views/Devices.vue b/admin-system/frontend/src/views/Devices.vue similarity index 100% rename from frontend/src/views/Devices.vue rename to admin-system/frontend/src/views/Devices.vue diff --git a/frontend/src/views/Farms.vue b/admin-system/frontend/src/views/Farms.vue similarity index 100% rename from frontend/src/views/Farms.vue rename to admin-system/frontend/src/views/Farms.vue diff --git a/frontend/src/views/Home.vue b/admin-system/frontend/src/views/Home.vue similarity index 100% rename from frontend/src/views/Home.vue rename to admin-system/frontend/src/views/Home.vue diff --git a/frontend/src/views/Login.vue b/admin-system/frontend/src/views/Login.vue similarity index 100% rename from frontend/src/views/Login.vue rename to admin-system/frontend/src/views/Login.vue diff --git a/frontend/src/views/MapView.vue b/admin-system/frontend/src/views/MapView.vue similarity index 100% rename from frontend/src/views/MapView.vue rename to admin-system/frontend/src/views/MapView.vue diff --git a/frontend/src/views/MapZoomDemo.vue b/admin-system/frontend/src/views/MapZoomDemo.vue similarity index 100% rename from frontend/src/views/MapZoomDemo.vue rename to admin-system/frontend/src/views/MapZoomDemo.vue diff --git a/frontend/src/views/Monitor.vue b/admin-system/frontend/src/views/Monitor.vue similarity index 100% rename from frontend/src/views/Monitor.vue rename to admin-system/frontend/src/views/Monitor.vue diff --git a/frontend/src/views/NotFound.vue b/admin-system/frontend/src/views/NotFound.vue similarity index 100% rename from frontend/src/views/NotFound.vue rename to admin-system/frontend/src/views/NotFound.vue diff --git a/frontend/src/views/Orders.vue b/admin-system/frontend/src/views/Orders.vue similarity index 100% rename from frontend/src/views/Orders.vue rename to admin-system/frontend/src/views/Orders.vue diff --git a/frontend/src/views/Products.vue b/admin-system/frontend/src/views/Products.vue similarity index 100% rename from frontend/src/views/Products.vue rename to admin-system/frontend/src/views/Products.vue diff --git a/frontend/src/views/TableStats.vue b/admin-system/frontend/src/views/TableStats.vue similarity index 100% rename from frontend/src/views/TableStats.vue rename to admin-system/frontend/src/views/TableStats.vue diff --git a/frontend/src/views/TestAnalytics.vue b/admin-system/frontend/src/views/TestAnalytics.vue similarity index 100% rename from frontend/src/views/TestAnalytics.vue rename to admin-system/frontend/src/views/TestAnalytics.vue diff --git a/frontend/src/views/Users.vue b/admin-system/frontend/src/views/Users.vue similarity index 100% rename from frontend/src/views/Users.vue rename to admin-system/frontend/src/views/Users.vue diff --git a/frontend/test-devices-frontend.js b/admin-system/frontend/test-devices-frontend.js similarity index 100% rename from frontend/test-devices-frontend.js rename to admin-system/frontend/test-devices-frontend.js diff --git a/frontend/test-map.html b/admin-system/frontend/test-map.html similarity index 100% rename from frontend/test-map.html rename to admin-system/frontend/test-map.html diff --git a/frontend/test-users-frontend.js b/admin-system/frontend/test-users-frontend.js similarity index 100% rename from frontend/test-users-frontend.js rename to admin-system/frontend/test-users-frontend.js diff --git a/frontend/vite.config.js b/admin-system/frontend/vite.config.js similarity index 100% rename from frontend/vite.config.js rename to admin-system/frontend/vite.config.js diff --git a/arch.md b/arch.md index 86cdc13..9cc2267 100644 --- a/arch.md +++ b/arch.md @@ -57,12 +57,6 @@ - `middleware/`: 中间件 - `auth.js`: 认证中间件 - `performance-middleware.js`: 性能监控中间件 -- `scripts/`: 数据库管理脚本 - - `init-db.js`: 数据库初始化 - - `migration-manager.js`: 迁移管理 - - `seed-manager.js`: 种子数据管理 - - `test-connection.js`: 连接测试 - - `test-map-api.js`: 地图API测试 - `utils/`: 工具类 - `logger.js`: 日志工具 - `performance-monitor.js`: 性能监控 @@ -72,59 +66,77 @@ - `seeds/`: 种子数据文件 - `logs/`: 日志文件目录 -### 2.2 前端 (`frontend/`) -- `src/components/`: 可复用的UI组件 - - `BaiduMap.vue`: 百度地图组件 - - `EChart.vue`: 图表组件 - - `Menu.vue`: 导航菜单 - - `Dashboard.vue`: 仪表盘组件 - - `AlertStats.vue`: 告警统计组件 - - `AnimalStats.vue`: 动物统计组件 - - `DeviceStats.vue`: 设备统计组件 - - `FarmDetail.vue`: 农场详情组件 - - `MonitorChart.vue`: 监控图表组件 - - `ChartPerformanceMonitor.vue`: 性能监控图表 - - `VirtualScrollChart.vue`: 虚拟滚动图表 -- `src/views/`: 页面级组件 - - `Home.vue`: 首页 - - `Dashboard.vue`: 系统概览 - - `MapView.vue`: 地图监控 - - `Analytics.vue`: 数据分析 - - `Monitor.vue`: 实时监控 - - `Login.vue`: 登录页面 - - `Users.vue`: 用户管理 - - `Products.vue`: 产品管理 - - `Orders.vue`: 订单管理 - - `Devices.vue`: 设备管理 - - `Animals.vue`: 动物管理 - - `Alerts.vue`: 预警管理 - - `TestAnalytics.vue`: 测试分析页面 - - `MapZoomDemo.vue`: 地图缩放演示 - - `NotFound.vue`: 404页面 -- `src/stores/`: 状态管理(Pinia) - - `user.js`: 用户状态管理 - - `data.js`: 数据状态管理 - - `settings.js`: 设置状态管理 - - `index.js`: 状态管理入口 -- `src/router/`: 路由配置 - - `index.js`: 路由实例和守卫 - - `routes.js`: 路由定义 -- `src/utils/`: 工具类(API调用、图表服务等) - - `api.js`: API请求封装 -- `src/config/`: 配置文件 -- `public/`: 静态资源和测试页面 - - `debug-devices.html`: 设备调试页面 - - `debug-users.html`: 用户调试页面 - - `map-test.html`: 地图测试页面 - - `test-auto-login.html`: 自动登录测试 - - `test-users-display.html`: 用户显示测试 +### 2.2 管理后台 (`admin-system/`) +- `frontend/`: 管理后台前端项目 + - `src/components/`: 可复用的UI组件 + - `BaiduMap.vue`: 百度地图组件 + - `EChart.vue`: 图表组件 + - `Menu.vue`: 导航菜单 + - `Dashboard.vue`: 仪表盘组件 + - `AlertStats.vue`: 告警统计组件 + - `AnimalStats.vue`: 动物统计组件 + - `DeviceStats.vue`: 设备统计组件 + - `FarmDetail.vue`: 农场详情组件 + - `MonitorChart.vue`: 监控图表组件 + - `ChartPerformanceMonitor.vue`: 性能监控图表 + - `VirtualScrollChart.vue`: 虚拟滚动图表 + - `src/views/`: 页面级组件 + - `Home.vue`: 首页 + - `Dashboard.vue`: 系统概览 + - `MapView.vue`: 地图监控 + - `Analytics.vue`: 数据分析 + - `Monitor.vue`: 实时监控 + - `Login.vue`: 登录页面 + - `Users.vue`: 用户管理 + - `Products.vue`: 产品管理 + - `Orders.vue`: 订单管理 + - `Devices.vue`: 设备管理 + - `Animals.vue`: 动物管理 + - `Alerts.vue`: 预警管理 + - `TestAnalytics.vue`: 测试分析页面 + - `MapZoomDemo.vue`: 地图缩放演示 + - `NotFound.vue`: 404页面 + - `src/stores/`: 状态管理(Pinia) + - `user.js`: 用户状态管理 + - `data.js`: 数据状态管理 + - `settings.js`: 设置状态管理 + - `index.js`: 状态管理入口 + - `src/router/`: 路由配置 + - `index.js`: 路由实例和守卫 + - `routes.js`: 路由定义 + - `src/utils/`: 工具类(API调用、图表服务等) + - `api.js`: API请求封装 + - `src/config/`: 配置文件 + - `public/`: 静态资源和测试页面 + - `debug-devices.html`: 设备调试页面 + - `debug-users.html`: 用户调试页面 + - `map-test.html`: 地图测试页面 + - `test-auto-login.html`: 自动登录测试 + - `test-users-display.html`: 用户显示测试 -### 2.3 其他 -- `docs/`: 项目文档 - - `baidu-map-license.md`: 百度地图许可文档 - - `performance-monitoring.md`: 性能监控文档 -- `tests/`: 测试脚本 - - `performance-monitor-test.js`: 性能监控测试 +### 2.3 官网 (`website/`) +- `data-screen/`: 官网前端项目 + - 包含官网展示页面和数据大屏功能 + +### 2.4 微信小程序 (`mini_program/`) +- `farm-monitor-dashboard/`: 微信小程序项目 + - 包含移动端监控仪表盘功能 + +### 2.5 脚本目录 (`scripts/`) +- `init-db.js`: 数据库初始化 +- `migration-manager.js`: 迁移管理 +- `seed-manager.js`: 种子数据管理 +- `test-connection.js`: 连接测试 +- `test-map-api.js`: 地图API测试 + +### 2.6 文档目录 (`docs/`) +- `baidu-map-license.md`: 百度地图许可文档 +- `performance-monitoring.md`: 性能监控文档 + +### 2.7 测试目录 (`test/`) +- `performance-monitor-test.js`: 性能监控测试 + +### 2.8 其他文件 - `examples/`: 示例代码 - `performance-monitor-integration.js`: 性能监控集成示例 - `create_tables.sql`: 数据库表创建脚本 @@ -162,7 +174,7 @@ ## 4. 核心架构 ### 4.1 技术栈 **后端技术栈:** -- **运行环境**: Node.js +- **运行环境**: Node.js 18.0+ - **Web框架**: Express.js 4.18+ - **ORM框架**: Sequelize 6.30+ - **数据库**: MySQL (mysql2 3.0+) diff --git a/backend/config/swagger.js b/backend/config/swagger.js index 78cc944..4f5f2b7 100644 --- a/backend/config/swagger.js +++ b/backend/config/swagger.js @@ -306,6 +306,55 @@ const options = { description: '更新时间' } } + }, + FarmInput: { + type: 'object', + required: ['name', 'type', 'location'], + properties: { + name: { + type: 'string', + description: '养殖场名称' + }, + type: { + type: 'string', + description: '养殖场类型' + }, + location: { + type: 'object', + required: ['latitude', 'longitude'], + properties: { + latitude: { + type: 'number', + format: 'float', + description: '纬度' + }, + longitude: { + type: 'number', + format: 'float', + description: '经度' + } + }, + description: '地理位置' + }, + address: { + type: 'string', + description: '详细地址' + }, + contact: { + type: 'string', + description: '联系人' + }, + phone: { + type: 'string', + description: '联系电话' + }, + status: { + type: 'string', + enum: ['active', 'inactive', 'maintenance'], + description: '养殖场状态', + default: 'active' + } + } } } }, diff --git a/backend/routes/users.js b/backend/routes/users.js index 11c9867..a1a2e78 100644 --- a/backend/routes/users.js +++ b/backend/routes/users.js @@ -20,6 +20,7 @@ const userController = require('../controllers/userController'); * - id * - username * - email + * - password * properties: * id: * type: integer @@ -30,10 +31,36 @@ const userController = require('../controllers/userController'); * email: * type: string * description: 邮箱地址 + * password: + * type: string + * description: 密码(加密存储) + * phone: + * type: string + * description: 手机号码 + * avatar: + * type: string + * description: 头像URL + * status: + * type: string + * enum: [active, inactive, suspended] + * description: 用户状态 + * createdAt: + * type: string + * format: date-time + * description: 创建时间 + * updatedAt: + * type: string + * format: date-time + * description: 更新时间 * example: * id: 1 * username: "john_doe" * email: "john@example.com" + * phone: "13800138000" + * avatar: "/uploads/avatars/default.png" + * status: "active" + * createdAt: "2024-01-01T00:00:00.000Z" + * updatedAt: "2024-01-01T00:00:00.000Z" */ /** diff --git a/design.md b/design.md index 31560cc..cc223a4 100644 --- a/design.md +++ b/design.md @@ -26,7 +26,14 @@ ## 2. 技术架构设计 ### 2.1 整体架构 -本项目采用前后端分离的架构设计模式,前端使用Vue.js框架,后端采用Python技术栈,数据库使用MySQL进行数据存储。 +本项目采用前后端分离的架构设计模式,包含以下主要模块: +- **后端服务** (`backend/`): Node.js + Express + Sequelize ORM +- **管理后台** (`admin-system/`): Vue.js 3.x + Ant Design Vue +- **官网** (`website/`): Vue.js 3.x + 数据大屏展示 +- **微信小程序** (`mini_program/`): React + TypeScript + Tailwind CSS +- **脚本工具** (`scripts/`): 数据库管理和维护脚本 +- **文档** (`docs/`): 项目技术文档 +- **测试** (`test/`): 测试脚本和用例 ### 2.2 前端技术栈 - **核心框架**: Vue.js 3.x @@ -38,23 +45,23 @@ - **图表库**: ECharts ### 2.3 后端技术栈 -- **运行环境**: Python 3.8+ -- **Web框架**: FastAPI 或 Flask(可选) +- **运行环境**: Node.js +- **Web框架**: Express.js 4.18+ - **API风格**: RESTful API -- **认证授权**: JWT -- **数据库访问**: SQLAlchemy 或 Peewee ORM -- **依赖管理**: uv 工具 +- **认证授权**: JWT (jsonwebtoken 9.0+) +- **数据库访问**: Sequelize ORM 6.30+ +- **数据库**: MySQL (mysql2 3.0+) +- **密码加密**: bcrypt 5.1+ +- **API文档**: Swagger (swagger-jsdoc + swagger-ui-express) +- **日志管理**: Winston 3.17+ +- **开发工具**: nodemon 3.0+ +- **跨域处理**: CORS 2.8+ +- **数据验证**: express-validator 7.2+ +- **环境变量**: dotenv 16.0+ +- **HTTP客户端**: Axios 1.4+ +- **服务器端口**: 5350 + -#### 2.3.1 Python环境配置与依赖管理 -1. `uv` 是一个快速的 Python 包和虚拟环境管理工具 -2. MCP Server 依赖 `uv` 工具运行,必须确保系统环境中已安装 uv -3. 安装 `uv` 的推荐方法: - - 使用官方安装脚本:`powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"` - - 或通过 pip 安装:`pip install uv` -4. 设置国内镜像源加速下载: - ```bash - $env:UV_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/" - ``` ### 2.4 部署架构 - **开发环境**: 本地运行 @@ -111,45 +118,52 @@ | username | VARCHAR(50) | UNIQUE, NOT NULL | 用户名 | | email | VARCHAR(100) | UNIQUE, NOT NULL | 邮箱地址 | | password | VARCHAR(255) | NOT NULL | 密码(加密后) | -| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 | -| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| phone | VARCHAR(20) | NULL | 手机号 | +| avatar | VARCHAR(255) | NULL | 头像URL | +| status | ENUM('active','inactive','banned') | DEFAULT 'active' | 用户状态 | +| last_login | DATETIME | NULL | 最后登录时间 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | #### 3.3.2 角色表 (roles) | 字段名 | 类型 | 约束 | 描述 | |--------|------|------|------| | id | INT | PRIMARY KEY, AUTO_INCREMENT | 角色ID | | name | VARCHAR(50) | UNIQUE, NOT NULL | 角色名称 | -| description | TEXT | | 角色描述 | -| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| description | TEXT | NULL | 角色描述 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | #### 3.3.3 用户角色关联表 (user_roles) | 字段名 | 类型 | 约束 | 描述 | |--------|------|------|------| | user_id | INT | FOREIGN KEY (users.id), NOT NULL | 用户ID | | role_id | INT | FOREIGN KEY (roles.id), NOT NULL | 角色ID | -| assigned_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 分配时间 | +| assigned_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 分配时间 | #### 3.3.4 产品表 (products) | 字段名 | 类型 | 约束 | 描述 | |--------|------|------|------| | id | INT | PRIMARY KEY, AUTO_INCREMENT | 产品ID | | name | VARCHAR(100) | NOT NULL | 产品名称 | -| description | TEXT | | 产品描述 | -| price | DECIMAL(10,2) | NOT NULL | 产品价格 | +| description | TEXT | NULL | 产品描述 | +| price | INT | NOT NULL | 产品价格(单位:分) | | stock | INT | DEFAULT 0 | 库存数量 | -| status | ENUM('active', 'inactive') | DEFAULT 'active' | 产品状态 | -| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 | -| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| image_url | VARCHAR(255) | NULL | 产品图片URL | +| is_active | TINYINT(1) | DEFAULT 1 | 是否激活 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | #### 3.3.5 订单表 (orders) | 字段名 | 类型 | 约束 | 描述 | |--------|------|------|------| | id | INT | PRIMARY KEY, AUTO_INCREMENT | 订单ID | | user_id | INT | FOREIGN KEY (users.id), NOT NULL | 用户ID | -| total_amount | DECIMAL(10,2) | NOT NULL | 订单总金额 | -| status | ENUM('pending', 'paid', 'shipped', 'delivered', 'cancelled') | DEFAULT 'pending' | 订单状态 | -| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 | -| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| total_amount | INT | DEFAULT 0 | 订单总金额(单位:分) | +| status | ENUM('pending','processing','shipped','delivered','cancelled') | DEFAULT 'pending' | 订单状态 | +| payment_status | ENUM('unpaid','paid','refunded') | DEFAULT 'unpaid' | 支付状态 | +| shipping_address | TEXT | NULL | 收货地址 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | #### 3.3.6 订单项表 (order_items) | 字段名 | 类型 | 约束 | 描述 | @@ -157,8 +171,66 @@ | id | INT | PRIMARY KEY, AUTO_INCREMENT | 订单项ID | | order_id | INT | FOREIGN KEY (orders.id), NOT NULL | 订单ID | | product_id | INT | FOREIGN KEY (products.id), NOT NULL | 产品ID | -| quantity | INT | NOT NULL | 数量 | -| price | DECIMAL(10,2) | NOT NULL | 单价 | +| quantity | INT | DEFAULT 1 | 数量 | +| price | INT | NOT NULL | 单价(单位:分) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | + +#### 3.3.7 养殖场表 (farms) +| 字段名 | 类型 | 约束 | 描述 | +|--------|------|------|------| +| id | INT | PRIMARY KEY, AUTO_INCREMENT | 养殖场ID | +| name | VARCHAR(100) | NOT NULL | 养殖场名称 | +| type | VARCHAR(50) | NOT NULL | 养殖场类型 | +| location | JSON | NOT NULL | 地理位置信息 | +| address | VARCHAR(255) | NULL | 详细地址 | +| contact | VARCHAR(50) | NULL | 联系人 | +| phone | VARCHAR(20) | NULL | 联系电话 | +| status | ENUM('active','inactive','maintenance') | DEFAULT 'active' | 养殖场状态 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +#### 3.3.8 动物表 (animals) +| 字段名 | 类型 | 约束 | 描述 | +|--------|------|------|------| +| id | INT | PRIMARY KEY, AUTO_INCREMENT | 动物ID | +| type | VARCHAR(50) | NOT NULL | 动物类型 | +| count | INT | DEFAULT 0 | 数量 | +| farm_id | INT | FOREIGN KEY (farms.id), NOT NULL | 所属养殖场ID | +| health_status | ENUM('healthy','sick','quarantine') | DEFAULT 'healthy' | 健康状态 | +| last_inspection | DATETIME | NULL | 最后检查时间 | +| notes | TEXT | NULL | 备注信息 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +#### 3.3.9 设备表 (devices) +| 字段名 | 类型 | 约束 | 描述 | +|--------|------|------|------| +| id | INT | PRIMARY KEY, AUTO_INCREMENT | 设备ID | +| name | VARCHAR(100) | NOT NULL | 设备名称 | +| type | VARCHAR(50) | NOT NULL | 设备类型 | +| status | ENUM('online','offline','maintenance') | DEFAULT 'offline' | 设备状态 | +| farm_id | INT | FOREIGN KEY (farms.id), NOT NULL | 所属养殖场ID | +| last_maintenance | DATETIME | NULL | 最后维护时间 | +| installation_date | DATETIME | NULL | 安装日期 | +| metrics | JSON | NULL | 设备指标数据 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +#### 3.3.10 预警表 (alerts) +| 字段名 | 类型 | 约束 | 描述 | +|--------|------|------|------| +| id | INT | PRIMARY KEY, AUTO_INCREMENT | 预警ID | +| type | VARCHAR(50) | NOT NULL | 预警类型 | +| level | ENUM('low','medium','high','critical') | DEFAULT 'medium' | 预警级别 | +| message | TEXT | NOT NULL | 预警消息 | +| status | ENUM('active','acknowledged','resolved') | DEFAULT 'active' | 预警状态 | +| farm_id | INT | FOREIGN KEY (farms.id), NOT NULL | 所属养殖场ID | +| device_id | INT | FOREIGN KEY (devices.id), NULL | 关联设备ID | +| resolved_at | DATETIME | NULL | 解决时间 | +| resolved_by | INT | FOREIGN KEY (users.id), NULL | 解决人ID | +| resolution_notes | TEXT | NULL | 解决说明 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | ### 3.4 初始数据 diff --git a/farm-monitor-dashboard/components.json b/mini_program/farm-monitor-dashboard/components.json similarity index 100% rename from farm-monitor-dashboard/components.json rename to mini_program/farm-monitor-dashboard/components.json diff --git a/farm-monitor-dashboard/package-lock.json b/mini_program/farm-monitor-dashboard/package-lock.json similarity index 100% rename from farm-monitor-dashboard/package-lock.json rename to mini_program/farm-monitor-dashboard/package-lock.json diff --git a/farm-monitor-dashboard/package.json b/mini_program/farm-monitor-dashboard/package.json similarity index 100% rename from farm-monitor-dashboard/package.json rename to mini_program/farm-monitor-dashboard/package.json diff --git a/farm-monitor-dashboard/postcss.config.js b/mini_program/farm-monitor-dashboard/postcss.config.js similarity index 100% rename from farm-monitor-dashboard/postcss.config.js rename to mini_program/farm-monitor-dashboard/postcss.config.js diff --git a/farm-monitor-dashboard/src/app/dashboard/page.tsx b/mini_program/farm-monitor-dashboard/src/app/dashboard/page.tsx similarity index 97% rename from farm-monitor-dashboard/src/app/dashboard/page.tsx rename to mini_program/farm-monitor-dashboard/src/app/dashboard/page.tsx index 2b6aaf3..47ef507 100644 --- a/farm-monitor-dashboard/src/app/dashboard/page.tsx +++ b/mini_program/farm-monitor-dashboard/src/app/dashboard/page.tsx @@ -1,286 +1,286 @@ -'use client' - -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { Progress } from "@/components/ui/progress" -import { Badge } from "@/components/ui/badge" -import { Button } from "@/components/ui/button" -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" -import { FarmMap } from "@/components/farm-map" -import { - TrendingUp, - Users, - MapPin, - AlertTriangle, - Thermometer, - Droplets, - Sun, - Wifi, - Server -} from "lucide-react" - -// Mock data for the dashboard -const mockData = { - farms: { - total: 12, - online: 9, - offline: 3 - }, - animals: { - total: 2456, - cattle: 890, - pigs: 756, - chickens: 810 - }, - environment: { - temperature: 25.6, - humidity: 65, - light: 1200 - }, - alerts: [ - { id: 1, type: 'critical', message: '温度异常: 农场3号温度超过阈值', time: '10:30' }, - { id: 2, type: 'warning', message: '湿度偏低: 农场5号湿度低于正常值', time: '09:45' }, - { id: 3, type: 'info', message: '设备维护: 农场2号传感器需要校准', time: '08:15' } - ], - devices: { - total: 156, - online: 142, - offline: 14, - types: { - sensor: 89, - camera: 32, - controller: 35 - } - } -} - -export default function Dashboard() { - return ( -
- {/* Header */} -
-
-
-
-
-

- 智慧农业监控平台 -

-
-
-
- {new Date().toLocaleString('zh-CN', { - year: 'numeric', - month: 'long', - day: 'numeric', - hour: '2-digit', - minute: '2-digit', - second: '2-digit' - })} -
- - - 系统在线 - -
-
-
-
- - {/* Main Content */} -
- {/* Stats Overview */} -
- - - 农场总数 - - - -
{mockData.farms.total}
-
- - 在线: {mockData.farms.online} - | - 离线: {mockData.farms.offline} -
-
-
- - - - 动物总数 - - - -
{mockData.animals.total.toLocaleString()}
-
- 牛: {mockData.animals.cattle} | 猪: {mockData.animals.pigs} | 鸡: {mockData.animals.chickens} -
-
-
- - - - 设备状态 - - - -
{mockData.devices.online}/{mockData.devices.total}
-
- 在线率: {((mockData.devices.online / mockData.devices.total) * 100).toFixed(1)}% -
- -
-
- - - - 环境数据 - - - -
-
- - {mockData.environment.temperature}°C -
-
- - {mockData.environment.humidity}% -
-
- - {mockData.environment.light}lux -
-
-
-
-
- - {/* Main Dashboard Grid */} -
- {/* Left Column - Alerts */} -
- - - - - 实时告警 - - - 最近系统检测到的异常情况 - - - -
- {mockData.alerts.map((alert) => ( -
-
-
-
- - {alert.type === 'critical' ? '严重' : alert.type === 'warning' ? '警告' : '信息'} - - {alert.time} -
-

{alert.message}

-
- -
-
- ))} -
-
-
-
- - {/* Middle Column - Charts and Data */} -
- - - 概览 - 环境监控 - 设备管理 - - - -
- - - - - 设备类型分布 - 各类设备数量统计 - - -
-
- -

设备类型饼图

-

传感器: {mockData.devices.types.sensor} | 摄像头: {mockData.devices.types.camera} | 控制器: {mockData.devices.types.controller}

-
-
-
-
-
-
- - - - - 环境数据趋势 - 温湿度及光照强度变化 - - -
-
- -

环境数据折线图

-

显示最近24小时温湿度变化趋势

-
-
-
-
-
- - - - - 设备状态监控 - 所有设备运行状态 - - -
-
- -

设备状态表格

-

在线: {mockData.devices.online} | 离线: {mockData.devices.offline}

-
-
-
-
-
-
-
-
-
-
- ) +'use client' + +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Progress } from "@/components/ui/progress" +import { Badge } from "@/components/ui/badge" +import { Button } from "@/components/ui/button" +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { FarmMap } from "@/components/farm-map" +import { + TrendingUp, + Users, + MapPin, + AlertTriangle, + Thermometer, + Droplets, + Sun, + Wifi, + Server +} from "lucide-react" + +// Mock data for the dashboard +const mockData = { + farms: { + total: 12, + online: 9, + offline: 3 + }, + animals: { + total: 2456, + cattle: 890, + pigs: 756, + chickens: 810 + }, + environment: { + temperature: 25.6, + humidity: 65, + light: 1200 + }, + alerts: [ + { id: 1, type: 'critical', message: '温度异常: 农场3号温度超过阈值', time: '10:30' }, + { id: 2, type: 'warning', message: '湿度偏低: 农场5号湿度低于正常值', time: '09:45' }, + { id: 3, type: 'info', message: '设备维护: 农场2号传感器需要校准', time: '08:15' } + ], + devices: { + total: 156, + online: 142, + offline: 14, + types: { + sensor: 89, + camera: 32, + controller: 35 + } + } +} + +export default function Dashboard() { + return ( +
+ {/* Header */} +
+
+
+
+
+

+ 智慧农业监控平台 +

+
+
+
+ {new Date().toLocaleString('zh-CN', { + year: 'numeric', + month: 'long', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + })} +
+ + + 系统在线 + +
+
+
+
+ + {/* Main Content */} +
+ {/* Stats Overview */} +
+ + + 农场总数 + + + +
{mockData.farms.total}
+
+ + 在线: {mockData.farms.online} + | + 离线: {mockData.farms.offline} +
+
+
+ + + + 动物总数 + + + +
{mockData.animals.total.toLocaleString()}
+
+ 牛: {mockData.animals.cattle} | 猪: {mockData.animals.pigs} | 鸡: {mockData.animals.chickens} +
+
+
+ + + + 设备状态 + + + +
{mockData.devices.online}/{mockData.devices.total}
+
+ 在线率: {((mockData.devices.online / mockData.devices.total) * 100).toFixed(1)}% +
+ +
+
+ + + + 环境数据 + + + +
+
+ + {mockData.environment.temperature}°C +
+
+ + {mockData.environment.humidity}% +
+
+ + {mockData.environment.light}lux +
+
+
+
+
+ + {/* Main Dashboard Grid */} +
+ {/* Left Column - Alerts */} +
+ + + + + 实时告警 + + + 最近系统检测到的异常情况 + + + +
+ {mockData.alerts.map((alert) => ( +
+
+
+
+ + {alert.type === 'critical' ? '严重' : alert.type === 'warning' ? '警告' : '信息'} + + {alert.time} +
+

{alert.message}

+
+ +
+
+ ))} +
+
+
+
+ + {/* Middle Column - Charts and Data */} +
+ + + 概览 + 环境监控 + 设备管理 + + + +
+ + + + + 设备类型分布 + 各类设备数量统计 + + +
+
+ +

设备类型饼图

+

传感器: {mockData.devices.types.sensor} | 摄像头: {mockData.devices.types.camera} | 控制器: {mockData.devices.types.controller}

+
+
+
+
+
+
+ + + + + 环境数据趋势 + 温湿度及光照强度变化 + + +
+
+ +

环境数据折线图

+

显示最近24小时温湿度变化趋势

+
+
+
+
+
+ + + + + 设备状态监控 + 所有设备运行状态 + + +
+
+ +

设备状态表格

+

在线: {mockData.devices.online} | 离线: {mockData.devices.offline}

+
+
+
+
+
+
+
+
+
+
+ ) } \ No newline at end of file diff --git a/farm-monitor-dashboard/src/app/page.tsx b/mini_program/farm-monitor-dashboard/src/app/page.tsx similarity index 96% rename from farm-monitor-dashboard/src/app/page.tsx rename to mini_program/farm-monitor-dashboard/src/app/page.tsx index 7cbfe23..0096fc6 100644 --- a/farm-monitor-dashboard/src/app/page.tsx +++ b/mini_program/farm-monitor-dashboard/src/app/page.tsx @@ -1,21 +1,21 @@ -'use client' - -import { useEffect } from 'react' -import { useRouter } from 'next/navigation' - -export default function Home() { - const router = useRouter() - - useEffect(() => { - router.push('/dashboard') - }, [router]) - - return ( -
-
-
-

正在跳转到智慧农业监控平台...

-
-
- ) +'use client' + +import { useEffect } from 'react' +import { useRouter } from 'next/navigation' + +export default function Home() { + const router = useRouter() + + useEffect(() => { + router.push('/dashboard') + }, [router]) + + return ( +
+
+
+

正在跳转到智慧农业监控平台...

+
+
+ ) } \ No newline at end of file diff --git a/farm-monitor-dashboard/src/components/farm-map.tsx b/mini_program/farm-monitor-dashboard/src/components/farm-map.tsx similarity index 97% rename from farm-monitor-dashboard/src/components/farm-map.tsx rename to mini_program/farm-monitor-dashboard/src/components/farm-map.tsx index 2f29f9e..80ccd46 100644 --- a/farm-monitor-dashboard/src/components/farm-map.tsx +++ b/mini_program/farm-monitor-dashboard/src/components/farm-map.tsx @@ -1,190 +1,190 @@ -'use client' - -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { MapPin } from "lucide-react" - -interface FarmLocation { - id: number - name: string - type: string - address: string - contact: string - phone: string - position: { left: string; top: string } - status: 'online' | 'offline' | 'warning' -} - -// const farmLocations: FarmLocation[] = [ -// { -// id: 1, -// name: "宁夏农场1", -// type: "综合农场", -// address: "宁夏回族自治区银川市", -// contact: "管理员", -// phone: "400-000-0000", -// position: { left: "45%", top: "25%" }, -// status: "online" -// }, -// { -// id: 2, -// name: "宁夏农场2", -// type: "综合农场", -// address: "宁夏回族自治区石嘴山市", -// contact: "管理员", -// phone: "400-000-0000", -// position: { left: "40%", top: "15%" }, -// status: "online" -// }, -// { -// id: 3, -// name: "宁夏农场3", -// type: "综合农场", -// address: "宁夏回族自治区吴忠市", -// contact: "管理员", -// phone: "400-000-0000", -// position: { left: "50%", top: "45%" }, -// status: "warning" -// }, -// { -// id: 4, -// name: "阳光农场", -// type: "养猪场", -// address: "北京市朝阳区农场路1号", -// contact: "张三", -// phone: "13800138001", -// position: { left: "75%", top: "20%" }, -// status: "online" -// }, -// { -// id: 5, -// name: "绿野牧场", -// type: "养牛场", -// address: "上海市浦东新区牧场路2号", -// contact: "李四", -// phone: "13800138002", -// position: { left: "30%", top: "40%" }, -// status: "online" -// }, -// { -// id: 6, -// name: "山谷羊场", -// type: "养羊场", -// address: "广州市天河区山谷路3号", -// contact: "王五", -// phone: "13800138003", -// position: { left: "45%", top: "60%" }, -// status: "offline" -// } -// ] - -export function FarmMap() { - const getStatusColor = (status: FarmLocation['status']) => { - switch (status) { - case 'online': return 'bg-green-400' - case 'offline': return 'bg-red-400' - case 'warning': return 'bg-yellow-400' - default: return 'bg-gray-400' - } - } - - const getStatusText = (status: FarmLocation['status']) => { - switch (status) { - case 'online': return '在线' - case 'offline': return '离线' - case 'warning': return '警告' - default: return '未知' - } - } - - return ( - - - - - 养殖场地理分布 - - - 全国农场分布及实时状态监控 - - - -
- {/* Map Background */} -
- - {/* Grid Lines */} -
- - {/* Farm Markers */} - {/* 需要从props或状态管理中获取farmLocations数据 */} - {([] as FarmLocation[]).map((farm) => ( -
-
-
-
- {farm.name} -
- - {/* Tooltip on hover */} -
-
{farm.name}
-
-
类型: {farm.type}
-
地址: {farm.address}
-
联系人: {farm.contact}
-
电话: {farm.phone}
-
-
- {getStatusText(farm.status)} -
-
-
-
-
- ))} - - {/* Map Controls */} -
- - -
- - {/* Legend */} -
-
图例
-
-
-
- 在线 -
-
-
- 离线 -
-
-
- 警告 -
-
-
-
-
-
- ) +'use client' + +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { MapPin } from "lucide-react" + +interface FarmLocation { + id: number + name: string + type: string + address: string + contact: string + phone: string + position: { left: string; top: string } + status: 'online' | 'offline' | 'warning' +} + +// const farmLocations: FarmLocation[] = [ +// { +// id: 1, +// name: "宁夏农场1", +// type: "综合农场", +// address: "宁夏回族自治区银川市", +// contact: "管理员", +// phone: "400-000-0000", +// position: { left: "45%", top: "25%" }, +// status: "online" +// }, +// { +// id: 2, +// name: "宁夏农场2", +// type: "综合农场", +// address: "宁夏回族自治区石嘴山市", +// contact: "管理员", +// phone: "400-000-0000", +// position: { left: "40%", top: "15%" }, +// status: "online" +// }, +// { +// id: 3, +// name: "宁夏农场3", +// type: "综合农场", +// address: "宁夏回族自治区吴忠市", +// contact: "管理员", +// phone: "400-000-0000", +// position: { left: "50%", top: "45%" }, +// status: "warning" +// }, +// { +// id: 4, +// name: "阳光农场", +// type: "养猪场", +// address: "北京市朝阳区农场路1号", +// contact: "张三", +// phone: "13800138001", +// position: { left: "75%", top: "20%" }, +// status: "online" +// }, +// { +// id: 5, +// name: "绿野牧场", +// type: "养牛场", +// address: "上海市浦东新区牧场路2号", +// contact: "李四", +// phone: "13800138002", +// position: { left: "30%", top: "40%" }, +// status: "online" +// }, +// { +// id: 6, +// name: "山谷羊场", +// type: "养羊场", +// address: "广州市天河区山谷路3号", +// contact: "王五", +// phone: "13800138003", +// position: { left: "45%", top: "60%" }, +// status: "offline" +// } +// ] + +export function FarmMap() { + const getStatusColor = (status: FarmLocation['status']) => { + switch (status) { + case 'online': return 'bg-green-400' + case 'offline': return 'bg-red-400' + case 'warning': return 'bg-yellow-400' + default: return 'bg-gray-400' + } + } + + const getStatusText = (status: FarmLocation['status']) => { + switch (status) { + case 'online': return '在线' + case 'offline': return '离线' + case 'warning': return '警告' + default: return '未知' + } + } + + return ( + + + + + 养殖场地理分布 + + + 全国农场分布及实时状态监控 + + + +
+ {/* Map Background */} +
+ + {/* Grid Lines */} +
+ + {/* Farm Markers */} + {/* 需要从props或状态管理中获取farmLocations数据 */} + {([] as FarmLocation[]).map((farm) => ( +
+
+
+
+ {farm.name} +
+ + {/* Tooltip on hover */} +
+
{farm.name}
+
+
类型: {farm.type}
+
地址: {farm.address}
+
联系人: {farm.contact}
+
电话: {farm.phone}
+
+
+ {getStatusText(farm.status)} +
+
+
+
+
+ ))} + + {/* Map Controls */} +
+ + +
+ + {/* Legend */} +
+
图例
+
+
+
+ 在线 +
+
+
+ 离线 +
+
+
+ 警告 +
+
+
+
+
+
+ ) } \ No newline at end of file diff --git a/farm-monitor-dashboard/src/components/theme-provider.tsx b/mini_program/farm-monitor-dashboard/src/components/theme-provider.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/theme-provider.tsx rename to mini_program/farm-monitor-dashboard/src/components/theme-provider.tsx diff --git a/farm-monitor-dashboard/src/components/ui/accordion.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/accordion.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/accordion.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/accordion.tsx diff --git a/farm-monitor-dashboard/src/components/ui/alert-dialog.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/alert-dialog.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/alert-dialog.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/alert-dialog.tsx diff --git a/farm-monitor-dashboard/src/components/ui/alert.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/alert.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/alert.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/alert.tsx diff --git a/farm-monitor-dashboard/src/components/ui/aspect-ratio.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/aspect-ratio.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/aspect-ratio.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/aspect-ratio.tsx diff --git a/farm-monitor-dashboard/src/components/ui/avatar.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/avatar.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/avatar.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/avatar.tsx diff --git a/farm-monitor-dashboard/src/components/ui/badge.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/badge.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/badge.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/badge.tsx diff --git a/farm-monitor-dashboard/src/components/ui/breadcrumb.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/breadcrumb.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/breadcrumb.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/breadcrumb.tsx diff --git a/farm-monitor-dashboard/src/components/ui/button.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/button.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/button.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/button.tsx diff --git a/farm-monitor-dashboard/src/components/ui/calendar.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/calendar.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/calendar.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/calendar.tsx diff --git a/farm-monitor-dashboard/src/components/ui/card.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/card.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/card.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/card.tsx diff --git a/farm-monitor-dashboard/src/components/ui/carousel.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/carousel.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/carousel.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/carousel.tsx diff --git a/farm-monitor-dashboard/src/components/ui/chart.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/chart.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/chart.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/chart.tsx diff --git a/farm-monitor-dashboard/src/components/ui/checkbox.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/checkbox.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/checkbox.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/checkbox.tsx diff --git a/farm-monitor-dashboard/src/components/ui/collapsible.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/collapsible.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/collapsible.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/collapsible.tsx diff --git a/farm-monitor-dashboard/src/components/ui/command.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/command.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/command.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/command.tsx diff --git a/farm-monitor-dashboard/src/components/ui/context-menu.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/context-menu.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/context-menu.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/context-menu.tsx diff --git a/farm-monitor-dashboard/src/components/ui/dialog.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/dialog.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/dialog.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/dialog.tsx diff --git a/farm-monitor-dashboard/src/components/ui/drawer.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/drawer.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/drawer.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/drawer.tsx diff --git a/farm-monitor-dashboard/src/components/ui/dropdown-menu.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/dropdown-menu.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/dropdown-menu.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/dropdown-menu.tsx diff --git a/farm-monitor-dashboard/src/components/ui/form.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/form.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/form.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/form.tsx diff --git a/farm-monitor-dashboard/src/components/ui/hover-card.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/hover-card.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/hover-card.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/hover-card.tsx diff --git a/farm-monitor-dashboard/src/components/ui/input-otp.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/input-otp.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/input-otp.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/input-otp.tsx diff --git a/farm-monitor-dashboard/src/components/ui/input.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/input.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/input.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/input.tsx diff --git a/farm-monitor-dashboard/src/components/ui/label.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/label.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/label.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/label.tsx diff --git a/farm-monitor-dashboard/src/components/ui/menubar.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/menubar.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/menubar.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/menubar.tsx diff --git a/farm-monitor-dashboard/src/components/ui/navigation-menu.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/navigation-menu.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/navigation-menu.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/navigation-menu.tsx diff --git a/farm-monitor-dashboard/src/components/ui/pagination.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/pagination.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/pagination.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/pagination.tsx diff --git a/farm-monitor-dashboard/src/components/ui/popover.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/popover.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/popover.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/popover.tsx diff --git a/farm-monitor-dashboard/src/components/ui/progress.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/progress.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/progress.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/progress.tsx diff --git a/farm-monitor-dashboard/src/components/ui/radio-group.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/radio-group.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/radio-group.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/radio-group.tsx diff --git a/farm-monitor-dashboard/src/components/ui/resizable.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/resizable.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/resizable.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/resizable.tsx diff --git a/farm-monitor-dashboard/src/components/ui/scroll-area.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/scroll-area.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/scroll-area.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/scroll-area.tsx diff --git a/farm-monitor-dashboard/src/components/ui/select.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/select.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/select.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/select.tsx diff --git a/farm-monitor-dashboard/src/components/ui/separator.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/separator.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/separator.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/separator.tsx diff --git a/farm-monitor-dashboard/src/components/ui/sheet.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/sheet.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/sheet.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/sheet.tsx diff --git a/farm-monitor-dashboard/src/components/ui/sidebar.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/sidebar.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/sidebar.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/sidebar.tsx diff --git a/farm-monitor-dashboard/src/components/ui/skeleton.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/skeleton.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/skeleton.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/skeleton.tsx diff --git a/farm-monitor-dashboard/src/components/ui/slider.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/slider.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/slider.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/slider.tsx diff --git a/farm-monitor-dashboard/src/components/ui/sonner.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/sonner.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/sonner.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/sonner.tsx diff --git a/farm-monitor-dashboard/src/components/ui/switch.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/switch.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/switch.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/switch.tsx diff --git a/farm-monitor-dashboard/src/components/ui/table.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/table.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/table.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/table.tsx diff --git a/farm-monitor-dashboard/src/components/ui/tabs.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/tabs.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/tabs.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/tabs.tsx diff --git a/farm-monitor-dashboard/src/components/ui/textarea.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/textarea.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/textarea.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/textarea.tsx diff --git a/farm-monitor-dashboard/src/components/ui/toast.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/toast.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/toast.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/toast.tsx diff --git a/farm-monitor-dashboard/src/components/ui/toaster.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/toaster.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/toaster.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/toaster.tsx diff --git a/farm-monitor-dashboard/src/components/ui/toggle-group.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/toggle-group.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/toggle-group.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/toggle-group.tsx diff --git a/farm-monitor-dashboard/src/components/ui/toggle.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/toggle.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/toggle.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/toggle.tsx diff --git a/farm-monitor-dashboard/src/components/ui/tooltip.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/tooltip.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/tooltip.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/tooltip.tsx diff --git a/farm-monitor-dashboard/src/components/ui/use-mobile.tsx b/mini_program/farm-monitor-dashboard/src/components/ui/use-mobile.tsx similarity index 100% rename from farm-monitor-dashboard/src/components/ui/use-mobile.tsx rename to mini_program/farm-monitor-dashboard/src/components/ui/use-mobile.tsx diff --git a/farm-monitor-dashboard/src/components/ui/use-toast.ts b/mini_program/farm-monitor-dashboard/src/components/ui/use-toast.ts similarity index 100% rename from farm-monitor-dashboard/src/components/ui/use-toast.ts rename to mini_program/farm-monitor-dashboard/src/components/ui/use-toast.ts diff --git a/farm-monitor-dashboard/src/globals.css b/mini_program/farm-monitor-dashboard/src/globals.css similarity index 100% rename from farm-monitor-dashboard/src/globals.css rename to mini_program/farm-monitor-dashboard/src/globals.css diff --git a/farm-monitor-dashboard/src/hooks/use-mobile.tsx b/mini_program/farm-monitor-dashboard/src/hooks/use-mobile.tsx similarity index 100% rename from farm-monitor-dashboard/src/hooks/use-mobile.tsx rename to mini_program/farm-monitor-dashboard/src/hooks/use-mobile.tsx diff --git a/farm-monitor-dashboard/src/hooks/use-toast.ts b/mini_program/farm-monitor-dashboard/src/hooks/use-toast.ts similarity index 100% rename from farm-monitor-dashboard/src/hooks/use-toast.ts rename to mini_program/farm-monitor-dashboard/src/hooks/use-toast.ts diff --git a/farm-monitor-dashboard/src/layout.tsx b/mini_program/farm-monitor-dashboard/src/layout.tsx similarity index 100% rename from farm-monitor-dashboard/src/layout.tsx rename to mini_program/farm-monitor-dashboard/src/layout.tsx diff --git a/farm-monitor-dashboard/src/lib/utils.ts b/mini_program/farm-monitor-dashboard/src/lib/utils.ts similarity index 100% rename from farm-monitor-dashboard/src/lib/utils.ts rename to mini_program/farm-monitor-dashboard/src/lib/utils.ts diff --git a/farm-monitor-dashboard/tailwind.config.ts b/mini_program/farm-monitor-dashboard/tailwind.config.ts similarity index 100% rename from farm-monitor-dashboard/tailwind.config.ts rename to mini_program/farm-monitor-dashboard/tailwind.config.ts diff --git a/farm-monitor-dashboard/tsconfig.app.json b/mini_program/farm-monitor-dashboard/tsconfig.app.json similarity index 100% rename from farm-monitor-dashboard/tsconfig.app.json rename to mini_program/farm-monitor-dashboard/tsconfig.app.json diff --git a/farm-monitor-dashboard/tsconfig.json b/mini_program/farm-monitor-dashboard/tsconfig.json similarity index 100% rename from farm-monitor-dashboard/tsconfig.json rename to mini_program/farm-monitor-dashboard/tsconfig.json diff --git a/farm-monitor-dashboard/tsconfig.node.json b/mini_program/farm-monitor-dashboard/tsconfig.node.json similarity index 100% rename from farm-monitor-dashboard/tsconfig.node.json rename to mini_program/farm-monitor-dashboard/tsconfig.node.json diff --git a/farm-monitor-dashboard/vite.config.ts b/mini_program/farm-monitor-dashboard/vite.config.ts similarity index 100% rename from farm-monitor-dashboard/vite.config.ts rename to mini_program/farm-monitor-dashboard/vite.config.ts diff --git a/backend/scripts/init-db.js b/scripts/init-db.js similarity index 100% rename from backend/scripts/init-db.js rename to scripts/init-db.js diff --git a/backend/scripts/migration-manager.js b/scripts/migration-manager.js similarity index 100% rename from backend/scripts/migration-manager.js rename to scripts/migration-manager.js diff --git a/backend/scripts/seed-manager.js b/scripts/seed-manager.js similarity index 100% rename from backend/scripts/seed-manager.js rename to scripts/seed-manager.js diff --git a/backend/scripts/test-connection.js b/scripts/test-connection.js similarity index 100% rename from backend/scripts/test-connection.js rename to scripts/test-connection.js diff --git a/backend/scripts/test-map-api.js b/scripts/test-map-api.js similarity index 100% rename from backend/scripts/test-map-api.js rename to scripts/test-map-api.js diff --git a/task.md b/task.md index 74dcb77..d3eb7fd 100644 --- a/task.md +++ b/task.md @@ -20,13 +20,13 @@ ### 高优先级 -- [ ] **开发后端RESTful API服务**:实现API接口 -- [ ] **实现JWT认证与授权系统**:开发用户认证功能 -- [ ] **配置ORM数据库访问层**:实现数据库交互 +- [x] **开发后端RESTful API服务**:实现API接口 +- [x] **实现JWT认证与授权系统**:开发用户认证功能 +- [x] **配置ORM数据库访问层**:实现数据库交互 ### 中优先级 -- [ ] **优化性能监控系统**:实现系统性能监控 +- [x] **优化性能监控系统**:实现系统性能监控 ## 任务状态说明 diff --git a/tests/performance-monitor-test.js b/test/tests/performance-monitor-test.js similarity index 100% rename from tests/performance-monitor-test.js rename to test/tests/performance-monitor-test.js diff --git a/data-screen/index.html b/website/data-screen/index.html similarity index 100% rename from data-screen/index.html rename to website/data-screen/index.html diff --git a/data-screen/package-lock.json b/website/data-screen/package-lock.json similarity index 100% rename from data-screen/package-lock.json rename to website/data-screen/package-lock.json diff --git a/data-screen/package.json b/website/data-screen/package.json similarity index 100% rename from data-screen/package.json rename to website/data-screen/package.json diff --git a/data-screen/src/App.vue b/website/data-screen/src/App.vue similarity index 100% rename from data-screen/src/App.vue rename to website/data-screen/src/App.vue diff --git a/data-screen/src/components/BuilderDashboard.vue b/website/data-screen/src/components/BuilderDashboard.vue similarity index 100% rename from data-screen/src/components/BuilderDashboard.vue rename to website/data-screen/src/components/BuilderDashboard.vue diff --git a/data-screen/src/main.js b/website/data-screen/src/main.js similarity index 100% rename from data-screen/src/main.js rename to website/data-screen/src/main.js diff --git a/data-screen/src/style.css b/website/data-screen/src/style.css similarity index 100% rename from data-screen/src/style.css rename to website/data-screen/src/style.css diff --git a/data-screen/test.html b/website/data-screen/test.html similarity index 100% rename from data-screen/test.html rename to website/data-screen/test.html diff --git a/data-screen/vite.config.js b/website/data-screen/vite.config.js similarity index 100% rename from data-screen/vite.config.js rename to website/data-screen/vite.config.js