feat:增强模板的用户界面和功能
- 在 scanner.js 中为用户操作添加了 toast 通知。 - 更新 box.html 以包含额外的导航选项和改进的布局。 - 增强 edit.html,提供更清晰的说明和改进表单的可访问性。 - 修改了 error.html,以提供有关输入错误的用户指导。 - 改进了 index.html,以优化导航并添加了关键指标显示。 - 增强了 scan.html,优化了搜索输入和操作按钮。 - 引入了 stats.html,用于详细的库存统计和趋势。 - 创建了 types.html,用于分类概述库存类型。
This commit is contained in:
108
README.md
108
README.md
@@ -7,6 +7,7 @@
|
||||
- `28格小盒大盒`:常见 4 连排小盒(竖向 7 排)。
|
||||
- `14格中盒大盒`:中等盒子,无固定摆放图。
|
||||
- `袋装清单`:防静电袋列表模式(每行一个袋位,支持批量新增)。
|
||||
- `袋装清单` 为固定容器(系统内置一个大盒),不需要新增/删除盒子。
|
||||
|
||||
v1.1 新增能力:
|
||||
|
||||
@@ -30,7 +31,8 @@ inventory/
|
||||
│ ├── index.html
|
||||
│ ├── box.html
|
||||
│ ├── edit.html
|
||||
│ └── scan.html
|
||||
│ ├── scan.html
|
||||
│ └── stats.html
|
||||
└── static/
|
||||
├── css/
|
||||
│ └── style.css
|
||||
@@ -66,16 +68,26 @@ python app.py
|
||||
|
||||
### 3.1 首页 `/`
|
||||
|
||||
- 按容器类型显示 3 个列表。
|
||||
- 每个列表都可新增盒子。
|
||||
- 每个盒子可在首页直接改名、修改前缀和起始序号、删除。
|
||||
- 每个盒子有概览按钮,快速查看已启用条目。
|
||||
- 首页已改为入口跳转到 `分类总览` 页面。
|
||||
|
||||
### 3.1.1 分类总览 `/types`
|
||||
|
||||
- 展示三类独立界面入口:`28格小盒大盒`、`14格中盒大盒`、`袋装清单`。
|
||||
- 每类入口显示当前容器数量,点击进入单独分类页面。
|
||||
|
||||
### 3.1.2 分类独立页 `/type/<box_type>`
|
||||
|
||||
- 每个分类使用独立页面,避免容器变多后的长页翻找。
|
||||
- 页面内支持新增、设置、删除,并在操作后停留在当前分类页。
|
||||
|
||||
### 3.2 盒子详情 `/box/<box_id>`
|
||||
|
||||
- `28格/14格`:格子视图,点格子进入编辑。
|
||||
- `袋装清单`:表格视图,支持单条新增和批量新增。
|
||||
- 页面显示自动编号范围(由前缀+起始序号生成)。
|
||||
- `袋装清单` 仅使用编号前缀(如 `BAG`),不设置编号范围。
|
||||
- `28格/14格` 支持快速入库:多行粘贴后自动分配空位。
|
||||
- 支持按当前盒子导出打标 CSV(仅导出启用记录),可用于热敏打标机导入。
|
||||
- 打标 CSV 列名为中英双语格式(如 `料号(part_no)`、`打标文本(label_text)`),便于直接识别。
|
||||
|
||||
### 3.3 编辑页 `/edit/<box_id>/<slot>`
|
||||
|
||||
@@ -88,6 +100,18 @@ python app.py
|
||||
- 可按料号或名称搜索。
|
||||
- 支持扫码枪输入后回车触发搜索。
|
||||
|
||||
### 3.5 统计页 `/stats`
|
||||
|
||||
- 独立统计页,仅展示核心指标:`库存总量 / 分类占比 / 变动趋势`。
|
||||
- 支持 `7天` 与 `30天` 视图切换:`/stats?days=7`、`/stats?days=30`。
|
||||
- 支持分类筛选:`/stats?days=30&box_type=small_28`(可选值:`small_28`、`medium_14`、`bag`、`all`)。
|
||||
- 趋势图基于库存变动日志实时计算,来源包括:新增、快速入库、启用/停用、删除。
|
||||
- 说明:升级前的历史操作不会自动回溯写入日志,趋势从启用该版本后开始逐步真实化。
|
||||
- 新增最近操作时间线(最新 20 条),便于追踪库存变化来源。
|
||||
- 筛选到单一分类后,指标会切换为更有意义的数据:`分类库存占比 / 周期操作次数 / 活跃天数 / 分类内元件Top`。
|
||||
- 支持趋势数据导出 CSV:`/stats/export?days=7&box_type=all`(包含 `daily_delta` 日增减列)。
|
||||
- 支持清除统计日志(当前筛选或全部),仅影响统计与趋势,不影响库存数据本体。
|
||||
|
||||
## 4. 袋装批量新增格式
|
||||
|
||||
在袋装清单页面的批量输入框里,每行一条,可用英文逗号或 Tab 分隔:
|
||||
@@ -109,7 +133,21 @@ python app.py
|
||||
- `数量` 需为大于等于 0 的整数(留空按 0)。
|
||||
- 无效行会跳过并提示。
|
||||
|
||||
## 5. 自动编号规则(新增)
|
||||
## 5. 快速入库(28格/14格)
|
||||
|
||||
在盒子页面使用“快速入库”,每行一条:
|
||||
|
||||
```text
|
||||
料号, 名称, 数量, 规格, 位置备注, 备注
|
||||
```
|
||||
|
||||
规则:
|
||||
|
||||
- 自动放入当前盒子的空位。
|
||||
- 同料号已存在时自动累加数量(不重复占位)。
|
||||
- 格子满了会跳过并提示具体行号。
|
||||
|
||||
## 6. 自动编号规则(新增)
|
||||
|
||||
新增盒子时只需填写:
|
||||
|
||||
@@ -131,7 +169,7 @@ python app.py
|
||||
- 基础名称 `电阻盒` + 范围 `A1-A28` -> `电阻盒 A1-A28`
|
||||
- 若发生重名会自动变为:`电阻盒 A1-A28 #2`
|
||||
|
||||
## 6. 元器件命名建议(简洁版)
|
||||
## 7. 元器件命名建议(简洁版)
|
||||
|
||||
为避免命名过长又保证可检索,建议:
|
||||
|
||||
@@ -151,13 +189,57 @@ python app.py
|
||||
规格: 50V X7R
|
||||
```
|
||||
|
||||
## 7. 数据库说明
|
||||
### 7.1 轻量入库规范(推荐)
|
||||
|
||||
目标:字段尽量少,但保证后续能搜索、能区分、能补货。
|
||||
|
||||
最少必填(3项):
|
||||
|
||||
- `料号(part_no)`:优先填厂家型号(如 `STM32F103C8T6`)。
|
||||
- `名称(name)`:`品类 + 型号/关键值`(如 `MCU STM32F103C8T6`)。
|
||||
- `数量(quantity)`:当前实际库存数量。
|
||||
|
||||
建议选填(2-3项):
|
||||
|
||||
- `规格(specification)`:只写 2-4 个关键参数(如 `Cortex-M3 / 64KB Flash / LQFP-48`)。
|
||||
- `位置备注(location)`:盒位或袋位(如 `A12`、`BAG4`)。
|
||||
- `备注(note)`:来源或追溯信息(如 `LCSC item 9243` 或商品链接)。
|
||||
|
||||
不建议录入(避免复杂且易过期):
|
||||
|
||||
- 实时单价、促销价、交期、商城库存等动态信息。
|
||||
|
||||
推荐录入模板:
|
||||
|
||||
```text
|
||||
料号: <厂家型号>
|
||||
名称: <品类 + 型号/关键值>
|
||||
规格: <封装 + 关键参数>
|
||||
数量: <整数>
|
||||
位置备注: <盒位/袋位>
|
||||
备注: <来源编号或链接>
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
料号: STM32F103C8T6
|
||||
名称: MCU STM32F103C8T6
|
||||
规格: Cortex-M3 / 64KB Flash / LQFP-48
|
||||
数量: 10
|
||||
位置备注: BAG4
|
||||
备注: LCSC item 9243
|
||||
```
|
||||
|
||||
## 8. 数据库说明
|
||||
|
||||
- 使用 SQLite,文件路径:`data/inventory.db`
|
||||
- 库存变动日志表:`inventory_events`(用于统计页趋势计算)
|
||||
- `inventory_events` 主要字段:`box_type`、`part_no`、`event_type`、`delta`、`created_at`
|
||||
- 首次发布执行一次 `python init_db.py`
|
||||
- 后续通常不需要重复初始化
|
||||
|
||||
## 8. 服务器部署(宝塔)
|
||||
## 9. 服务器部署(宝塔)
|
||||
|
||||
建议流程:
|
||||
|
||||
@@ -171,7 +253,7 @@ python app.py
|
||||
|
||||
建议 Gunicorn 仅监听内网:`127.0.0.1:5000`
|
||||
|
||||
## 9. 日常发布流程
|
||||
## 10. 日常发布流程
|
||||
|
||||
本地开发后:
|
||||
|
||||
@@ -192,7 +274,7 @@ pip install -r requirements.txt
|
||||
|
||||
最后在宝塔里重启 Python 项目。
|
||||
|
||||
## 10. 备份建议
|
||||
## 11. 备份建议
|
||||
|
||||
重点备份:`data/inventory.db`
|
||||
|
||||
@@ -202,7 +284,7 @@ pip install -r requirements.txt
|
||||
cp /www/wwwroot/inventory/data/inventory.db /www/backup/inventory_$(date +%F).db
|
||||
```
|
||||
|
||||
## 11. 常见问题
|
||||
## 12. 常见问题
|
||||
|
||||
### Q1: VS Code 提示无法解析 `flask` 导入
|
||||
|
||||
|
||||
Reference in New Issue
Block a user