From b93a565c826ae129a575b9eee1eec12274f8192e Mon Sep 17 00:00:00 2001 From: dxc Date: Thu, 12 Feb 2026 10:10:37 +0800 Subject: [PATCH] feat: add material spec to BOM responses and UI Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) --- inventory-backend/app/services/bom_service.py | 21 ++++++++++++++----- inventory-web/src/views/bom/BomManage.vue | 6 ++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/inventory-backend/app/services/bom_service.py b/inventory-backend/app/services/bom_service.py index 500947e..cadc9fc 100644 --- a/inventory-backend/app/services/bom_service.py +++ b/inventory-backend/app/services/bom_service.py @@ -34,7 +34,8 @@ class BomService: subq.c.parent_id, subq.c.version, subq.c.child_count, - MaterialBase.name.label('parent_name') + MaterialBase.name.label('parent_name'), + MaterialBase.spec_model.label('parent_spec') ).join(MaterialBase, subq.c.parent_id == MaterialBase.id) results = query.all() @@ -42,6 +43,7 @@ class BomService: 'bom_no': row.bom_no, 'parent_id': row.parent_id, 'parent_name': row.parent_name, + 'parent_spec': row.parent_spec or '', 'version': row.version, 'child_count': row.child_count } for row in results] @@ -54,7 +56,8 @@ class BomService: """ rows = db.session.query( BomTable, - MaterialBase.name.label('child_name') + MaterialBase.name.label('child_name'), + MaterialBase.spec_model.label('child_spec') ).join( MaterialBase, BomTable.child_id == MaterialBase.id ).filter( @@ -66,14 +69,21 @@ class BomService: first = rows[0] parent_id = first.BomTable.parent_id - parent_name = db.session.query(MaterialBase.name)\ - .filter(MaterialBase.id == parent_id).scalar() or '' + # 获取父件的名称和规格 + parent_material = MaterialBase.query.filter(MaterialBase.id == parent_id).first() + if parent_material: + parent_name = parent_material.name + parent_spec = parent_material.spec_model or '' + else: + parent_name = '' + parent_spec = '' children = [] - for bom, child_name in rows: + for bom, child_name, child_spec in rows: children.append({ 'child_id': bom.child_id, 'child_name': child_name, + 'child_spec': child_spec or '', 'dosage': float(bom.dosage) if bom.dosage else 0.0, 'remark': bom.remark or '' }) @@ -82,6 +92,7 @@ class BomService: 'bom_no': bom_no, 'parent_id': parent_id, 'parent_name': parent_name, + 'parent_spec': parent_spec, 'version': first.BomTable.version, 'children': children } diff --git a/inventory-web/src/views/bom/BomManage.vue b/inventory-web/src/views/bom/BomManage.vue index c15ea98..b098477 100644 --- a/inventory-web/src/views/bom/BomManage.vue +++ b/inventory-web/src/views/bom/BomManage.vue @@ -13,6 +13,7 @@ + @@ -39,7 +40,7 @@ @@ -61,7 +62,7 @@ @@ -120,6 +121,7 @@ interface BomItem { interface MaterialBase { id: number name: string + spec: string } interface ChildRow {