Skip to content

BNDou/ContainerPackingSystem

Repository files navigation

装箱记录管理系统 V3.0

一个基于 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

迁移脚本会:

  1. 读取原有的CSV文件
  2. 将所有记录迁移到SQLite数据库
  3. 保持原有的ID和创建时间
  4. 验证数据的完整性

运行方法

开发环境

python run.py

生产环境

  1. 修改 run.py 中的 host 和 port
  2. 关闭 debug 模式
  3. 运行程序

使用说明

  1. 查询记录:

    • 选择月份(格式:YYYY-MM)
    • 点击查询按钮
    • 查看结果表格和统计信息(包括总记录数、总箱数和本月佣金)
  2. 访客访问:

    • 直接访问系统即为访客模式
    • 可浏览所有数据和统计信息
    • 无法进行添加、删除等操作
  3. 管理员登录:

    • 点击右上角"管理员登录"按钮
    • 输入管理员用户名和密码
    • 登录后可进行所有操作
    • 使用完毕后点击"退出登录"
  4. 添加记录(需要管理员权限):

    • 管理员登录后才可看到添加表单
    • 选择日期(添加后日期会自动保留)
    • 输入箱号区间(支持格式:A001-A100 或单个数字 1200)
    • 点击添加按钮
  5. 设置佣金单价(需要管理员权限):

    • 查询记录后,只有管理员才能看到齿轮设置图标
    • 点击本月佣金卡片右上角的齿轮图标
    • 输入每箱的佣金单价(支持小数)
    • 系统自动计算本月佣金:总箱数 × 单价
  6. 删除记录(需要管理员权限):

    • 管理员登录后才能看到删除按钮
    • 选择要删除的记录行
    • 点击删除按钮进行确认
    • 系统会要求二次确认防止误操作

打包说明

使用 auto-py-to-exe 打包:

  1. 安装打包工具
pip install auto-py-to-exe
  1. 安装 UPX 压缩工具(用于减小程序体积)

  2. 配置打包选项

  • 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: 移除调试符号
  1. 打包优化
  • 使用 UPX 压缩可以显著减小程序体积
  • 压缩后的程序运行速度基本不受影响
  • 支持的文件类型:EXE、DLL、SYS 等
  • 压缩率通常可达到 50%-70%
  1. 打包后注意事项
  • 数据库文件(app.db)将在程序所在目录创建
  • 日志文件将在程序所在目录的 logs 文件夹中创建
  • 首次运行时会自动初始化数据库和日志目录
  • 如需迁移数据,请将 migrate_data.py 和原 CSV 文件复制到程序目录运行

注意事项

系统安全

  1. 首次使用时访问登录页面会自动创建管理员账户
  2. 管理员密码应足够复杂,定期更换
  3. 离开系统时及时退出登录
  4. 不要在公共电脑上保存登录状态

数据使用

  1. 确保 logs 目录存在且有写入权限
  2. 箱号区间格式支持区间格式(如:A001-A100)或单个数字(如:1200)
  3. 日期选择不能为空
  4. 数据库文件(app.db)会自动创建

权限管理

  1. 访客用户只能查看数据,无法修改
  2. 只有管理员可以添加、删除记录和设置佣金
  3. 系统会对所有操作进行权限验证
  4. 建议定期备份数据库和用户信息

系统要求

  • Python 3.7+
  • 支持现代浏览器
  • 操作系统:Windows/Linux/MacOS

日志记录

  • 位置:logs/app.log
  • 记录内容:操作日志和错误信息
  • 格式:时间 - 名称 - 级别 - 消息

About

一个基于 Flask 的装箱记录管理系统,用于记录和查询装箱信息。

Resources

License

Stars

Watchers

Forks

Contributors