一个基于 Flask 的装箱记录管理系统,用于记录、删除和查询装箱信息。
-
用户认证系统
- 管理员和访客双重身份认证
- 基于角色的权限控制(RBAC)
- 会话安全管理和保护
- 访客免登录只读访问
-
查询月度装箱记录
- 按月份查询装箱记录
- 显示每条记录的箱数统计
- 显示月度总箱数、记录数和佣金信息
- 日期显示采用中文格式
-
添加新的装箱记录(管理员权限)
- 支持日期选择
- 支持箱号区间输入(智能识别单个数字和区间格式)
- 自动生成唯一记录ID
- 自动记录创建时间
- 严格的权限验证保护
-
删除装箱记录(管理员权限)
- 支持删除指定记录ID的装箱记录
- 双重确认防止误操作
- 完整的权限验证保护
-
本月佣金计算
- 显示本月佣金统计信息
- 可自定义箱单价设置
- 自动计算总箱数 × 单价
- 右上角齿轮图标快速设置
-
箱数信息快捷复制
- 一键复制月度箱数统计信息
- 自动合并连续箱号区间
- 优雅的三行式格式显示:
2024年3月 总箱数:17 箱号区间:1-10、12、14-20 - 复制成功时显示优雅的提示
-
现代化UI界面
- 优雅的渐变色主题
- 响应式卡片设计
- 平滑的动画效果
- 美化的确认弹窗
- 统一的设计语言
- 后端框架:Flask 3.x
- 数据存储:SQLite(通过SQLAlchemy ORM)
- 安全框架:
- Flask Session(用户会话管理)
- Werkzeug Security(密码哈希加密)
- RBAC(基于角色的访问控制)
- 前端框架:
- Bootstrap 5(布局和基础组件)
- SweetAlert2(美化的弹窗)
- Font Awesome 6(图标库)
- JavaScript(动态权限控制)
- 数据处理:Pandas
- 日期处理:Python-dateutil
- 配色方案:
- 主色调:现代感绿色和蓝色渐变
- 强调色:优雅的深色调
- 统一的阴影效果
- 交互设计:
- 卡片悬浮效果
- 按钮点击反馈
- 平滑的状态转换
- 响应式布局:
- 完美适配移动设备
- 自适应的字体大小
- 优化的移动端间距
ContainerPackingSystem/
├── app/
│ ├── static/
│ │ └── style.css
│ ├── templates/
│ │ ├── index.html
│ │ └── login.html
│ ├── __init__.py # Flask应用工厂和配置
│ ├── routes.py # 路由和API接口
│ ├── models.py # 数据库模型和用户认证
│ └── utils.py # 工具函数和错误处理
├── config.py # 应用程序配置
├── package_config.py # 打包配置文件
├── requirements.txt # Python依赖包
├── run.py # 应用程序入口
├── migrate_data.py # 数据迁移工具
├── SECURITY_GUIDE.md # 安全功能使用指南
系统使用 SQLite 数据库进行数据存储,主要优势:
- 更好的数据一致性和完整性
- 更高效的查询性能
- 更好的并发处理能力
- 更容易进行数据备份和恢复
如果你之前使用的是CSV存储,可以使用数据迁移脚本进行迁移:
python migrate_data.py迁移脚本会:
- 读取原有的CSV文件
- 将所有记录迁移到SQLite数据库
- 保持原有的ID和创建时间
- 验证数据的完整性
python run.py- 修改 run.py 中的 host 和 port
- 关闭 debug 模式
- 运行程序
-
查询记录:
- 选择月份(格式:YYYY-MM)
- 点击查询按钮
- 查看结果表格和统计信息(包括总记录数、总箱数和本月佣金)
-
访客访问:
- 直接访问系统即为访客模式
- 可浏览所有数据和统计信息
- 无法进行添加、删除等操作
-
管理员登录:
- 点击右上角"管理员登录"按钮
- 输入管理员用户名和密码
- 登录后可进行所有操作
- 使用完毕后点击"退出登录"
-
添加记录(需要管理员权限):
- 管理员登录后才可看到添加表单
- 选择日期(添加后日期会自动保留)
- 输入箱号区间(支持格式:A001-A100 或单个数字 1200)
- 点击添加按钮
-
设置佣金单价(需要管理员权限):
- 查询记录后,只有管理员才能看到齿轮设置图标
- 点击本月佣金卡片右上角的齿轮图标
- 输入每箱的佣金单价(支持小数)
- 系统自动计算本月佣金:总箱数 × 单价
-
删除记录(需要管理员权限):
- 管理员登录后才能看到删除按钮
- 选择要删除的记录行
- 点击删除按钮进行确认
- 系统会要求二次确认防止误操作
使用 auto-py-to-exe 打包:
- 安装打包工具
pip install auto-py-to-exe-
安装 UPX 压缩工具(用于减小程序体积)
- 下载 UPX: https://github.com/upx/upx/releases
- 将 upx.exe 放入系统 PATH 或与打包程序同目录
-
配置打包选项
- Script Location: run.py
- Onefile: One Directory
- Console Window: Console Based
- Additional Files:
- app/templates -> templates
- app/static -> static
- config.py -> .
- package_config.py -> .
- Advanced Options:
- --upx-dir: UPX可执行文件所在目录
- --clean: 清理打包目录
- --strip: 移除调试符号
- 打包优化
- 使用 UPX 压缩可以显著减小程序体积
- 压缩后的程序运行速度基本不受影响
- 支持的文件类型:EXE、DLL、SYS 等
- 压缩率通常可达到 50%-70%
- 打包后注意事项
- 数据库文件(app.db)将在程序所在目录创建
- 日志文件将在程序所在目录的 logs 文件夹中创建
- 首次运行时会自动初始化数据库和日志目录
- 如需迁移数据,请将 migrate_data.py 和原 CSV 文件复制到程序目录运行
- 首次使用时访问登录页面会自动创建管理员账户
- 管理员密码应足够复杂,定期更换
- 离开系统时及时退出登录
- 不要在公共电脑上保存登录状态
- 确保 logs 目录存在且有写入权限
- 箱号区间格式支持区间格式(如:A001-A100)或单个数字(如:1200)
- 日期选择不能为空
- 数据库文件(app.db)会自动创建
- 访客用户只能查看数据,无法修改
- 只有管理员可以添加、删除记录和设置佣金
- 系统会对所有操作进行权限验证
- 建议定期备份数据库和用户信息
- Python 3.7+
- 支持现代浏览器
- 操作系统:Windows/Linux/MacOS
- 位置:logs/app.log
- 记录内容:操作日志和错误信息
- 格式:时间 - 名称 - 级别 - 消息