|
|
c35ec9a659
|
feat(records): 出库/借还记录统一高级搜索版式
三个记录页(出库/借还/报废)此前搜索区形态各异:出库用裸 div + 分散样式,
借还缺日期范围,报废只有 SKU 输入框。现统一为 el-form :inline="true" +
.filter-form 版式,并补齐缺失的过滤维度。
借还记录(新增日期范围能力):
· 后端 get_records 增加 start_date/end_date 参数,按「借出时间」过滤;
· 边界补全时分秒(YYYY-MM-DD → 当日 00:00:00 / 23:59:59),
与出库记录同口径,解决零点截断导致当天记录漏查的问题;
· API 层透传两个新参数。
出库记录:
· 版式统一为 inline 表单,日期选择器加 label;
· 新增「重置」按钮;
· 搜索类型切换由 500ms 防抖改为立即查询。
借还记录:
· 新增「重置」按钮;搜索类型/状态切换改为立即查询(取消防抖)。
实测(SUPER_ADMIN):
报废 全部/单号/SKU/操作人/物料名/日期 六类过滤均 200 且命中正确;
借还 无过滤 52 单 / 本月 18 单 / 空区间 0 单(日期过滤生效);
出库 无过滤 395 单 / SKU 277 / 姓名 7 / 物料名 16 / 单号 OUT-2026 命中 395。
|
2026-09-10 12:06:08 +08:00 |
|
|
|
a12fcea86d
|
fix(borrow,outbound): 库管弹窗必显审批人 + HTTP400去重toast
- 审批人 el-form-item 显隐加入 role==WAREHOUSE_MGR 判断
- 提交 catch 仅对无响应(网络)弹错,HTTP错误由全局拦截器按后端 data.msg 弹一次,避免重复
|
2026-09-09 16:19:45 +08:00 |
|
|
|
6bdc8a82f2
|
feat(borrow,outbound): 申请预检按需显示审批人——默认不显示,命中需审批才出现并必选
- 后端新增 /borrow/request/check-approval 与 /outbound/request/check-approval 预检接口
- 申请弹窗默认隐藏审批人;提交前预检:命中需审批→显示审批人并红字列物料、未选拦截;未命中→隐藏并直接提交(approver=null)
- 申请 items 补传 base_id 供后端 ID 精确判定
|
2026-09-09 10:47:29 +08:00 |
|
|
|
2abac8b3f9
|
feat(borrow,outbound): 申请页审批人改可选(默认免审批),提示语更新
- 出库/借库申请不再强制选审批人;命中需审批且未选人时由后端提示补选
- 成功提示改为:含需审批物料将进入审批,否则直接交库管执行
|
2026-09-09 09:31:28 +08:00 |
|
|
|
9fc6ff00f9
|
feat(bom): 出库/借库清单头部 BOM 号后显示父件物料名
- selectedBomLabel 追加父件名(优先候选列表 parent_name,回退最近详情 parent_name)
- 主清单与欠料待补清单两处头部同时生效;取不到名称时退回原格式
|
2026-09-08 11:13:42 +08:00 |
|
|
|
7d9828e403
|
feat: BOM套餐添加弹窗齐套清单显示自制件子件版本号
|
2026-09-07 18:03:43 +08:00 |
|
|
|
3dd8458de0
|
feat: BOM 子件展示自制件 BOM 版本号——子件列表与出库/借库 BOM 清单打印均显示
|
2026-09-07 18:01:16 +08:00 |
|
|
|
803e8a1532
|
fix: 出库申请的出库类型改为不默认、必填校验(不能为空提交)
|
2026-09-07 14:04:34 +08:00 |
|
|
|
478b90fe50
|
feat: 出库类型贯穿申请→扫码出库——申请单加 outbound_type,申请时选类型、扫码出库自动带出
|
2026-09-07 14:01:13 +08:00 |
|
|
|
eaafeaf24e
|
feat: 出库类型新增「维修出库(REPAIR)」下拉选项与记录类型/标签映射
|
2026-09-07 13:51:38 +08:00 |
|
|
|
1527d552d4
|
feat: 出库/借库记录记录并展示库位快照(DB加列+后端写入+记录页展示)
|
2026-09-04 11:42:44 +08:00 |
|
|
|
129cb1119f
|
fix: 出库选单 BOM 下拉唯一值修复,打印模板补齐欠料待补区与借库对齐
|
2026-09-02 18:39:17 +08:00 |
|
|
|
c3637e0c25
|
fix: 出库备注欠料改用实时库存计算,不再自动填历史欠料
- buildRemarkWithShortage 改用 bomDetailList 实时 shortage(需量-当前库存)
- 库存补足后,欠料不再自动拼进出库备注(原 localStorage 历史记录一直带出)
|
2026-09-01 16:35:32 +08:00 |
|
|
|
5bd6fc6272
|
fix(web): 出库记录类型映射补充 LOSS(盘亏出库) 中文显示
扫码出库下拉存在「盘亏出库 LOSS」选项,历史记录中已存在 LOSS 类型数据,
但出库记录页 formatType/getTagType 翻译表缺失 LOSS 映射,导致记录原样显示英文 LOSS。
补充映射后 LOSS 显示为中文「盘亏出库」黄色标签,与其他出库类型口径一致。
|
2026-08-31 16:12:18 +08:00 |
|
|
|
f5aa2f481b
|
feat(scan): 出库/借库扫码增加未扫清单弹窗
- 扫码进度条旁新增「未扫清单 (N)」按钮(有未扫满物料时显示)
- 弹窗列出计划中未扫满的物料:名称/规格/计划数量/已扫数量/待扫数量
- 提供「去扫码」快捷跳转,方便补扫漏掉的物料
- 未扫满 = 计划数量 > 已扫数量(含完全未扫和扫了一部分的情况)
|
2026-08-31 14:53:20 +08:00 |
|
|
|
e026c00a85
|
refactor(outbound): 移除扫码出库页的强制完结按钮
- 删除 create.vue 中「强制完结此单」按钮及对应逻辑
- 完结功能保留在出库审批列表页(approval/index.vue)
- 出库执行页聚焦扫码作业
|
2026-08-31 14:38:51 +08:00 |
|
|
|
e492000c3e
|
feat(scan): 出库/借库扫码进度显示 + 重复扫码确认
- 出库 create.vue + 借库 borrow.vue 均增加扫码进度条
显示: 已扫/总数 种 + 已扫/总数 件 + 进度百分比
- 重复扫码时不再直接 +1,改为弹窗确认「确认 +1 / 取消」
防止手滑重复扫或误操作
- 扫码进度条选中审批单后显示
|
2026-08-31 14:35:26 +08:00 |
|
|
|
5abc504619
|
feat(outbound): 审批列表页增加完结按钮 + 优化缺货提示文案
- 去掉缺货提醒末尾的『是否查看?』(纯文案,保持强提醒但不承诺展示清单)
- approval/index.vue 对已通过(status=1)的审批单新增「完结」按钮
库管/主管/超管可见,完结后从已通过列表移除
- 筛选区新增「已完结」状态选项,状态标签支持 status=4
|
2026-08-31 10:46:33 +08:00 |
|
|
|
39f3f8af45
|
feat(outbound): 审批单手动完结/作废功能
- 后端: outbound_service 新增 close_request 方法(状态 1-已通过 → 4-已完结)
- 后端: 新增 POST /api/v1/outbound/request/<id>/close 接口
- 模型: status_text 数组增加「已完结」
- 前端: create.vue 审批单选择区新增「强制完结此单」按钮
完结后刷新列表,该单从已通过下拉中移除
- 权限: 超级管理员/审批人/拥有 outbound_create:operation 的用户可完结(库管可操作)
|
2026-08-31 10:15:33 +08:00 |
|
|
|
b6ec45a8b8
|
feat(outbound): 出库流程强化(缺料防漏 + 完全移除直接出库)
① BOM 清单 SKU 改为规格型号(getBomWithStock 返回 children 无 sku,只有 child_spec)
② 缺货清单自动写入出库申请备注(借鸡生蛋:历史欠料永久留存在申请单)
③ 打印单底部增加欠料待补签收区(补料人签字/日期)
④ 有缺料时阻断式二次确认,防手快漏看
⑤ 完全移除直接出库模式,所有出库必须按单出库
- create.vue 删除 radio 切换、direct 相关逻辑
- 提交前强制校验已选择审批申请单
|
2026-08-31 09:37:14 +08:00 |
|
|
|
a4bd6f54d4
|
feat(outbound): BOM 出库增加清单打印与缺货持久化提醒
- BOM 弹窗物料清单增加「本次结果」列(可出/缺货未出)
- 增加「打印 BOM 清单」按钮,可打印当前 BOM 的完整出库清单
- 缺货物料持久化到 localStorage,下次打开同一 BOM 时自动提示历史缺货记录
防止重复出库或漏出
- 打印区域使用与 A4 出库单一致的 iframe 打印机制
|
2026-08-31 09:26:53 +08:00 |
|
|
|
57a6ab38d1
|
fix(outbound): 修复选单列表移除按钮排序后索引错位导致删错行
- 表格绑定 sortedSelectedItems(按库位排序),但移除按钮用 $index 操作原始 selectedItems
- 排序后索引与原始数组不一致,导致删除错误的行
- 改为按 uniqueKey 精确定位删除
|
2026-08-13 17:17:54 +08:00 |
|
|
|
9c0414b802
|
fix(outbound): 出库备注改为必填,按单出库自动填充申请原因
- 备注字段新增 required 校验规则
- placeholder 从「可选填」改为「请填写出库原因」
- 按单出库模式选择申请单后,自动将申请原因填入备注
|
2026-08-07 15:58:59 +08:00 |
|
|
|
a8a0290cd8
|
fix: outbound total_amount 改为需权限 outbound_list:total_amount,库管无此权限则隐藏总金额
|
2026-07-21 09:49:46 +08:00 |
|
|
|
35690c5b8f
|
fix: 出库列表 permissionMap 基础列改为 null(始终可见),对齐 inbound 模式;单价/小计保留权限控制
|
2026-07-21 09:39:16 +08:00 |
|
|
|
5b1cd4d8d0
|
fix: 扫码出库类型改为必选,移除默认值SALES
- outbound_type 默认值: SALES → '' (空)
- el-select 新增 clearable
- rules 新增 outbound_type required 校验
|
2026-07-16 13:13:08 +08:00 |
|
|
|
329820117f
|
perf: 消除 outbound/borrow BOM 匹配的 while(true) 全量加载
## 后端
- outbound.py: 新增 POST /api/v1/outbound/bom-match-stock 端点
接收 child_ids[],服务端按 base_id IN 查询三表有库存记录并返回
## 前端
- outbound.ts: 新增 bomMatchStock(childIds) API 函数
- Selection.vue: loadAllStockForBom (while(true) 全量) → loadStockForBom (单次 API)
- borrow/apply/index.vue: 同上
## 效果
- BOM 匹配从 ~90 次 HTTP 请求降为 1 次
- 浏览器内存从 ~18000 条降为 ~8-50 条
|
2026-07-15 17:52:08 +08:00 |
|
|
|
2556b77530
|
perf: 系统级性能优化与并发安全修复
## 并发安全修复 (4处)
- scrap.py: 报废执行添加 SELECT FOR UPDATE 悲观锁,消除 TOCTOU 竞态
- stock.py (adjust_stock): 盘点调整添加 for_update=True 行锁
- outbound_service.py: 低库存预警 SMTP 调用移到 commit 之后,避免长事务
- trans_service.py: execute_dispatch 按 (source_table, id) 排序 items,消除死锁风险
## N+1 查询优化 (2处)
- inventory_task.py: _prefetch_inventory_map 单条 UNION ALL+GROUP BY 替代循环内逐条查询(N*4次→2次)
- stock.py (export_stocktake): get_borrowed_qty 批量 GROUP BY 替代逐条 TransBorrow 查询(~18000次→1次)
## BOM 列表性能重构
- bom_service.py: get_bom_list 单条 GROUP BY+string_agg+分页,消除 N+1 循环查询
- bom_service.py: 新增 get_bom_summary (轻量 GROUP BY category+COUNT)
- bom.py: 新增 /api/v1/bom/summary 路由,/list 支持 category 过滤
## Odoo 基础信息懒加载
- base_service.py: 新增 get_odoo_summary (GROUP BY category+COUNT)
- base.py: 新增 /api/v1/inbound/base/odoo-summary 路由
- buyOdoo.vue: 懒加载分组架构 (fetchOdooSummary + loadGroupItems)
- material_base.ts: 新增 getOdooSummary API
## 前端 Bug 修复
- BomManage.vue: 懒加载分组 (fetchBomSummary + loadGroupItems + collapse)
- BomManage.vue: 适配新 API 格式 (res.data.items 替代 res.data)
- buyOdoo.vue: 移除 "点击展开加载" 文字
- Selection.vue + borrow/apply/index.vue: openBomSelect 适配新 API 格式
|
2026-07-15 17:37:57 +08:00 |
|
|
|
4934cd4d8f
|
feat: 采购管理税率+分开单价总价列 + 按单出/借库锁定扫描 + 含税法计算
- purchase: 新增tax_rate字段(model+service+frontend), 表格拆分为不含税单价/总价/税率三列
- buy.vue: 含税法计算(含税总价=数量×含税单价), 含税总价自动计算可手动覆盖
- create.vue: 按单出库模式下未选审批单时锁定摄像头和SKU输入
- borrow.vue: 未选审批单时锁定摄像头和SKU输入
- deploy_production.sql: 整合全部数据库变更(表结构+权限码+角色分配)
|
2026-07-15 16:07:59 +08:00 |
|
|
|
8d78ed9306
|
feat: 全局跨域公司选择器 + 权限页crossDomain开关
- 新增CompanySelector组件: 仅crossDomain权限或SUPER_ADMIN可见
- 权限分配页: 全局系统特权下新增"允许全局跨域"操作权限checkbox
- 入库汇总/出库记录搜索栏嵌入CompanySelector
- PermissionConfig: transformData识别crossDomain为操作权限码
|
2026-07-15 11:11:49 +08:00 |
|
|
|
6a895347d0
|
V3.51
|
2026-06-25 15:44:31 +08:00 |
|
|
|
c1092407ad
|
V3.50
|
2026-06-25 15:21:43 +08:00 |
|
|
|
f27488e693
|
V3.39版本推送,出库选单依据BOM子件0的逻辑修改
|
2026-06-01 09:28:22 +08:00 |
|
|
|
c0ab3ce6d2
|
perf: 消除 BOM 齐套分析的全量库存拉取和 O(N·M) 嵌套循环,改为使用后端返回的 current_stock
|
2026-05-19 10:07:05 +08:00 |
|
|
|
f9dd8b6536
|
版本变更3.22
|
2026-05-15 13:03:13 +08:00 |
|
|
|
857ff958bc
|
版本变更3.19
|
2026-05-14 18:01:28 +08:00 |
|
|
|
3c9d7a999d
|
fix(purchase): 审批人下拉隐藏角色/物料搜索下拉/价格弹窗确认/图片必填校验
|
2026-05-12 17:27:51 +08:00 |
|
|
|
e1e0bc1104
|
版本变更3.17
|
2026-05-12 14:07:26 +08:00 |
|
|
|
048317ee5e
|
feat(branding): 更新系统名称为 MOM / Manufacturing Operations Management
|
2026-05-12 14:01:20 +08:00 |
|
|
|
183b93012e
|
4.28
|
2026-04-28 16:07:11 +08:00 |
|
|
|
62c0e3738e
|
fix(outbound+trans): 修复POST接口错误数据清洗导致的sku/quantity字段被清除Bug,并新增出库审批工作流全链路
|
2026-04-28 16:02:34 +08:00 |
|
|
|
e08eaff40a
|
feat(outbound): 库存列表按规格+库位聚合 + BOM明细类型修复
|
2026-04-28 09:23:59 +08:00 |
|
|
|
2006b7275f
|
fix(outbound): 终极护航版confirmPrint,iframe克隆样式+强制分页CSS
|
2026-04-21 14:39:48 +08:00 |
|
|
|
dd54e047dd
|
fix(outbound): 重构confirmPrint为iframe打印模式,彻底粉碎全局CSS高度锁死
|
2026-04-21 14:35:34 +08:00 |
|
|
|
f53b16f512
|
fix(outbound): 重构@media print,解除el-container/el-main/el-scrollbar父级裁剪锁定
|
2026-04-21 14:26:11 +08:00 |
|
|
|
8583b811e1
|
fix(outbound): 将@media print移至非scoped样式,解除body/html高度锁死实现自由分页
|
2026-04-21 14:01:20 +08:00 |
|
|
|
6f5a7cf0db
|
fix(outbound): #print-area改为absolute解除高度锁死,新增行防断裂保护
|
2026-04-21 13:55:26 +08:00 |
|
|
|
01ce9c1432
|
fix(outbound): 修复预览弹窗el-table打印分页截断问题
|
2026-04-21 13:25:15 +08:00 |
|
|
|
0ab7050e03
|
feat(outbound): 批量模式下支持点击整行切换选中状态
|
2026-04-21 13:20:13 +08:00 |
|
|
|
cd714d0c16
|
feat(outbound): 优化批量操作UX,改为进入/退出批量模式设计
|
2026-04-21 13:14:50 +08:00 |
|