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 } : {} }) }