From 4876d8805d029702be92ec397bc5e9d6c9c25503 Mon Sep 17 00:00:00 2001 From: star Date: Thu, 10 Sep 2026 16:57:25 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20README=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c99788 --- /dev/null +++ b/README.md @@ -0,0 +1,134 @@ +# 博特维采购订单管理系统 + +> 苏州博特维智能科技有限公司 · 本地采购订单管理系统(采购单 / 委外生产订单) +> +> 制单 → 主管审核 → 经理批准 → 导出 PDF 的全流程本地化工具,按贵司现有 Excel 单据模板套打。 + +--- + +## 功能特性 + +- **两种单据**:采购单、委外生产订单共用同一套数据,按原模板版式分别套打。 +- **两级审核**:制单员提交 → 主管审核 → 经理批准,每个动作写入审核记录,可追溯、可驳回。 +- **Excel 导入明细**:编辑页上传 `.xls` / `.xlsx`,自动识别表头(代码/规格/单位/数量/单价/交期/备注),行数不限,PDF 自动分页。 +- **供应商库 / 物料库**:制单时下拉带入名称、联系人、税号、单价等信息;支持行内编辑、停用/启用、删除,以及 Excel 批量导入(带模板下载)。 +- **金额大写**:合计自动转人民币大写(壹万贰仟叁佰肆拾伍元整)。 +- **审核盖章**:主管审核前须先「加盖审核章」,服务端二次校验,防止绕过;PDF 渲染红色审核专用章。 +- **历史查询与统计**:按单号 / 供应商 / 状态 / 单据类型 / 日期区间筛选;按状态、供应商、月份汇总金额。 +- **台账导出**:一键导出全部订单为 Excel。 +- **PDF 套打**:完全复刻原 Excel 模板版式,草稿/待审核状态带水印防止误用,已批准状态导出无水印正式版。 + +## 技术栈 + +| 层 | 技术 | +|---|---| +| 后端 | Python 3 + Flask 3 | +| ORM | SQLAlchemy 2 | +| 数据库 | SQLite(单文件 `po.db`,免部署) | +| PDF | reportlab 4(中文套打 + 印章绘制) | +| Excel | openpyxl 3 / xlrd 2 | +| 打包 | PyInstaller(单文件版 / 文件夹版,免 Python 环境) | + +## 目录结构 + +``` +po_app/ +├── app.py # 主程序(路由 / 业务逻辑 / 审核流程) +├── models.py # 数据库模型(用户 / 订单 / 明细 / 供应商 / 物料) +├── pdf_export.py # PDF 套打 + 审核章绘制 +├── amount_cn.py # 金额转人民币大写 +├── requirements.txt # 源码运行依赖 +├── 启动.bat # 双击即启(源码方式) +├── templates/ # Jinja2 模板 +├── static/ # CSS / JS / 资源 +├── 博特维采购订单系统.spec # 文件夹版打包配置 +├── 博特维采购订单系统_单文件版.spec # 单文件版打包配置 +├── 使用说明.md # 详细使用手册 +├── instance/ # 运行时数据库(.gitignore 排除,不入库) +├── exports/ # 导出的 PDF(忽略) +└── uploads/ # 上传的明细文件(忽略) +tools/ # 开发期脚本:测试 / 打包验证 / git 推送 +``` + +> 仓库仅含**源码与配置**;数据库、构建产物、运行时数据均经 `.gitignore` 排除,不入库。 + +## 快速开始 + +三种运行方式任选其一: + +1. **单文件 EXE(推荐分发)** + `po_app/dist/博特维采购订单系统_单文件版.exe`,拷贝到任意文件夹双击即用,免 Python 环境。 + +2. **文件夹版 EXE(启动最快)** + 复制 `po_app/dist/博特维采购订单系统/` 整个文件夹,双击其中的 exe 秒开。 + +3. **源码运行** + 安装依赖后双击 `po_app/启动.bat`,或命令行: + + ```bash + cd po_app + pip install -r requirements.txt + python app.py 8080 + ``` + +访问地址 ;局域网其他电脑把 `127.0.0.1` 换成宿主机的局域网 IP(需放行 8080 端口)。 +EXE 版数据落在 exe 同级的 `instance/po.db`,备份即复制该文件夹。 + +## 初始账号 + +| 账号 | 密码 | 角色 | 权限 | +|---|---|---|---| +| admin | admin123 | 系统管理员 | 全部功能,含用户 / 供应商 / 物料维护 | +| maker | 123456 | 制单员 | 新建、编辑、提交订单 | +| reviewer | 123456 | 主管审核 | 审核通过或驳回 | +| approver | 123456 | 经理批准 | 批准后订单生效,可出正式 PDF | + +> ⚠️ 正式使用前请在「用户」页改掉默认密码。 + +## 业务流程 + +``` +制单员新建订单 → 填写抬头与明细 → 提交 + ↓ +主管审核(通过 / 驳回并填原因) + ↓ +经理批准(通过 / 驳回并填原因) + ↓ +状态 = 已批准 → 导出 PDF(无水印,带审核人姓名与时间) +``` + +- 草稿 / 待审核 / 待批准状态导出的 PDF 带斜向水印,避免误用。 +- 被驳回的订单回到制单员名下,可修改后再次提交。 + +## PDF 套打版式 + +完全复刻原 Excel 模板: + +1. 公司名 + 单据名称(采购单 / 委外生产订单) +2. 抬头区:左供方、右需方(含采购单号、采购日期、税点、税号等) +3. 明细表 9 列:序号 / 物料代码 / 物料规格 / 单位 / 数量 / 含税单价 / 金额 / 交期 / 备注(列宽取自原模板) +4. 合计:小写 + 人民币大写 + 元整 +5. 备注条款 + 交货地点(苏州工业园区星汉街 5 号腾飞新苏工业坊 B 幢 5 楼 05-06 单元) +6. 签署区:制单 / 主管审核 / 经理批准(含姓名与时间)+ 双方盖章栏 +7. 页脚:单据类型、单号、页码、打印时间 + +明细超过一页时自动分页并重复表头,合计与条款跟随在最后一页。 + +## 数据文件与备份 + +| 文件 | 说明 | +|---|---| +| `instance/po.db` | SQLite 主数据库,整个文件夹复制即备份 | +| `exports/` | 导出的 PDF | +| `uploads/` | 上传的明细文件 | + +## 重新打包说明(开发) + +```bash +# 打包前务必先备份 instance/ 与 exports/,PyInstaller 重建文件夹版会清空 dist +python -m PyInstaller "博特维采购订单系统[_单文件版].spec" --noconfirm --clean +``` + +## 许可 + +本仓库为苏州博特维智能科技有限公司内部业务系统源码,仅供公司内部使用与维护。