From bf7b2cc6d376d1ae1576ac7c7a1189519247d2d9 Mon Sep 17 00:00:00 2001 From: yueli Date: Wed, 2 Sep 2026 18:39:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20BOM=20=E5=BA=93=E5=AD=98=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=E6=8C=89=E7=89=88=E6=9C=AC=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=90=8C=E4=B8=80=E7=BC=96?= =?UTF-8?q?=E5=8F=B7=E5=A4=9A=E7=89=88=E6=9C=AC=E4=B8=8B=E6=8B=89=E5=9B=9E?= =?UTF-8?q?=E6=98=BE=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory-backend/app/api/v1/bom.py | 5 +++-- inventory-backend/app/services/bom_service.py | 6 +++--- inventory-web/src/api/bom.ts | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/inventory-backend/app/api/v1/bom.py b/inventory-backend/app/api/v1/bom.py index b867440..6b29d7f 100644 --- a/inventory-backend/app/api/v1/bom.py +++ b/inventory-backend/app/api/v1/bom.py @@ -198,9 +198,10 @@ def save_bom(): @jwt_required() @permission_required('bom_manage') def get_bom_with_stock_by_no(bom_no): - """根据 BOM 编号获取配方详情及库存信息""" + """根据 BOM 编号 (和可选 version) 获取配方详情及库存信息""" try: - data = BomService.get_bom_with_stock_by_bom_no(bom_no) + version = request.args.get('version') + data = BomService.get_bom_with_stock_by_bom_no(bom_no, version=version) if not data: return jsonify({'code': 404, 'msg': 'BOM 不存在'}), 404 # 字段级脱敏 diff --git a/inventory-backend/app/services/bom_service.py b/inventory-backend/app/services/bom_service.py index d6e0cf0..f556103 100644 --- a/inventory-backend/app/services/bom_service.py +++ b/inventory-backend/app/services/bom_service.py @@ -422,11 +422,11 @@ class BomService: return bom_no @staticmethod - def get_bom_with_stock_by_bom_no(bom_no): + def get_bom_with_stock_by_bom_no(bom_no, version=None): """ - 根据 bom_no 获取配方详情,并计算(已修复 N+1 性能问题) + 根据 bom_no (和可选 version) 获取配方详情,并计算(已修复 N+1 性能问题) """ - detail = BomService.get_bom_detail(bom_no) + detail = BomService.get_bom_detail(bom_no, version=version) if not detail or not detail.get('children'): return detail diff --git a/inventory-web/src/api/bom.ts b/inventory-web/src/api/bom.ts index efa1b00..82c06af 100644 --- a/inventory-web/src/api/bom.ts +++ b/inventory-web/src/api/bom.ts @@ -19,12 +19,13 @@ export function getBomSummary(params?: { keyword?: string }) { } // 获取BOM详情(含库存信息) -export function getBomWithStock(bomNo: string) { +export function getBomWithStock(bomNo: string, version?: string) { const trimmed = bomNo.replace(/^\/+|\/+$/g, ''); const encoded = encodeURIComponent(trimmed); return request({ url: `/v1/bom/stock/${encoded}`, - method: 'get' + method: 'get', + params: version ? { version } : {} }) }