基于Vue.js + Flask + Cesium的智慧水利大坝安全监测平台,实现监测数据的动态展示、三维可视化交互和数据分析。
- 三维可视化:使用Cesium.js实现大坝3D模型展示
- 实时监测:水位、位移、应力等监测数据实时展示
- 数据图表:ECharts实现多种数据可视化图表
- 用户管理:管理员/普通用户权限控制
- 响应式设计:适配桌面和移动端
- RESTful API:提供完整的数据接口
- 用户认证:JWT令牌认证系统
- 数据管理:监测数据CRUD操作
- 统计分析:数据聚合和统计功能
- 权限控制:基于角色的访问控制
- Vue.js 3 + Composition API
- Element Plus UI组件库
- Cesium.js 三维地理可视化
- ECharts 数据图表
- DataV 数据可视化组件
- Vite 构建工具
- Flask Python Web框架
- SQLite 数据库(可升级到PostgreSQL)
- JWT 用户认证
- Gunicorn 生产服务器
- Flask-CORS 跨域支持
smartwater-platform/
├── frontend/ # 前端Vue应用
│ ├── src/
│ │ ├── api/ # API接口
│ │ ├── components/ # 组件
│ │ ├── pages/ # 页面
│ │ ├── router/ # 路由
│ │ └── styles/ # 样式
│ ├── public/ # 静态资源
│ └── package.json # 依赖配置
├── flask_backend/ # Flask后端
│ ├── app_with_auth.py # 主应用
│ ├── requirements.txt # Python依赖
│ ├── auth/ # 认证模块
│ └── data_import.py # 数据导入
├── backend/ # 原始Spring Boot后端
├── app_spec.yaml # DigitalOcean部署配置
└── README.md # 项目说明
- 后端启动
cd flask_backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app_with_auth.py- 前端启动
cd frontend
npm install
npm run dev- 访问应用
- 管理员:admin / admin123
- 普通用户:user / user123
- 将代码推送到GitHub仓库
- 在DigitalOcean创建App Platform应用
- 配置环境变量:
SECRET_KEY: Flask应用密钥JWT_SECRET_KEY: JWT令牌密钥VITE_API_URL: 前端API地址
项目包含 app_spec.yaml 文件,DigitalOcean会自动识别并配置:
- 后端服务:Flask + Gunicorn
- 前端服务:Vue.js构建 + Nginx
- 健康检查:自动监控服务状态
| 变量名 | 说明 | 示例值 |
|---|---|---|
| SECRET_KEY | Flask应用密钥 | 随机字符串 |
| JWT_SECRET_KEY | JWT令牌密钥 | 随机字符串 |
| DATABASE_URL | 数据库连接 | sqlite:///data/monitoring.db |
| VITE_API_URL | 前端API地址 | https://backend-xxx.ondigitalocean.app/api |
GET /api/health- 健康检查GET /api/types- 监测类型列表GET /api/instruments- 仪器列表GET /api/measurements- 测量数据GET /api/statistics- 统计数据POST /api/auth/login- 用户登录POST /api/auth/register- 用户注册
所有API端点(除登录注册外)需要JWT令牌:
Authorization: Bearer <token>
- id: 类型ID
- name: 类型名称(水位、位移、应力等)
- unit: 测量单位
- id: 记录ID
- type_id: 监测类型ID
- instrument_id: 仪器编号
- measure_time: 测量时间
- value: 测量值
- water_level: 水位值(仅引张线)
- id: 用户ID
- username: 用户名
- password_hash: 密码哈希
- name: 姓名
- email: 邮箱
- role: 角色(admin/user)
- 在
backend/data/monitoring.db的monitoring_type表中添加记录 - 重启后端服务
- 在
flask_backend/app_with_auth.py中添加路由 - 使用适当的权限装饰器:
@read_permission_required: 需要读取权限@write_permission_required: 需要写入权限
- 在
frontend/src/components/创建Vue组件 - 在
frontend/src/api/中添加对应的API调用 - 在页面中导入和使用组件
-
CORS错误
- 检查后端CORS配置
- 验证前端API地址
-
数据库连接失败
- 检查数据库文件路径
- 验证文件权限
-
构建失败
- 清理node_modules重新安装
- 检查Node.js版本(需要18+)
-
3D模型不显示
- 检查Cesium访问令牌
- 验证模型文件路径
# 后端日志
cd flask_backend
python app_with_auth.py
# 前端构建日志
cd frontend
npm run buildMIT License
如有问题,请提交GitHub Issue或联系项目维护者。