feat: add material spec to BOM responses and UI
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
@ -34,7 +34,8 @@ class BomService:
|
|||||||
subq.c.parent_id,
|
subq.c.parent_id,
|
||||||
subq.c.version,
|
subq.c.version,
|
||||||
subq.c.child_count,
|
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)
|
).join(MaterialBase, subq.c.parent_id == MaterialBase.id)
|
||||||
|
|
||||||
results = query.all()
|
results = query.all()
|
||||||
@ -42,6 +43,7 @@ class BomService:
|
|||||||
'bom_no': row.bom_no,
|
'bom_no': row.bom_no,
|
||||||
'parent_id': row.parent_id,
|
'parent_id': row.parent_id,
|
||||||
'parent_name': row.parent_name,
|
'parent_name': row.parent_name,
|
||||||
|
'parent_spec': row.parent_spec or '',
|
||||||
'version': row.version,
|
'version': row.version,
|
||||||
'child_count': row.child_count
|
'child_count': row.child_count
|
||||||
} for row in results]
|
} for row in results]
|
||||||
@ -54,7 +56,8 @@ class BomService:
|
|||||||
"""
|
"""
|
||||||
rows = db.session.query(
|
rows = db.session.query(
|
||||||
BomTable,
|
BomTable,
|
||||||
MaterialBase.name.label('child_name')
|
MaterialBase.name.label('child_name'),
|
||||||
|
MaterialBase.spec_model.label('child_spec')
|
||||||
).join(
|
).join(
|
||||||
MaterialBase, BomTable.child_id == MaterialBase.id
|
MaterialBase, BomTable.child_id == MaterialBase.id
|
||||||
).filter(
|
).filter(
|
||||||
@ -66,14 +69,21 @@ class BomService:
|
|||||||
|
|
||||||
first = rows[0]
|
first = rows[0]
|
||||||
parent_id = first.BomTable.parent_id
|
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 = []
|
children = []
|
||||||
for bom, child_name in rows:
|
for bom, child_name, child_spec in rows:
|
||||||
children.append({
|
children.append({
|
||||||
'child_id': bom.child_id,
|
'child_id': bom.child_id,
|
||||||
'child_name': child_name,
|
'child_name': child_name,
|
||||||
|
'child_spec': child_spec or '',
|
||||||
'dosage': float(bom.dosage) if bom.dosage else 0.0,
|
'dosage': float(bom.dosage) if bom.dosage else 0.0,
|
||||||
'remark': bom.remark or ''
|
'remark': bom.remark or ''
|
||||||
})
|
})
|
||||||
@ -82,6 +92,7 @@ class BomService:
|
|||||||
'bom_no': bom_no,
|
'bom_no': bom_no,
|
||||||
'parent_id': parent_id,
|
'parent_id': parent_id,
|
||||||
'parent_name': parent_name,
|
'parent_name': parent_name,
|
||||||
|
'parent_spec': parent_spec,
|
||||||
'version': first.BomTable.version,
|
'version': first.BomTable.version,
|
||||||
'children': children
|
'children': children
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
<el-table v-loading="loading" :data="bomList" border style="width: 100%">
|
<el-table v-loading="loading" :data="bomList" border style="width: 100%">
|
||||||
<el-table-column prop="bom_no" label="BOM编号" min-width="180" />
|
<el-table-column prop="bom_no" label="BOM编号" min-width="180" />
|
||||||
<el-table-column prop="parent_name" label="父件名称" min-width="180" />
|
<el-table-column prop="parent_name" label="父件名称" min-width="180" />
|
||||||
|
<el-table-column prop="parent_spec" label="父件规格" min-width="180" />
|
||||||
<el-table-column prop="version" label="版本" width="100" />
|
<el-table-column prop="version" label="版本" width="100" />
|
||||||
<el-table-column prop="child_count" label="子件数量" width="100" />
|
<el-table-column prop="child_count" label="子件数量" width="100" />
|
||||||
<el-table-column label="操作" width="280" align="center" fixed="right">
|
<el-table-column label="操作" width="280" align="center" fixed="right">
|
||||||
@ -39,7 +40,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in materialOptions"
|
v-for="item in materialOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="`${item.name} (${item.spec})`"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -61,7 +62,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in materialOptions"
|
v-for="item in materialOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="`${item.name} (${item.spec})`"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -120,6 +121,7 @@ interface BomItem {
|
|||||||
interface MaterialBase {
|
interface MaterialBase {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
|
spec: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ChildRow {
|
interface ChildRow {
|
||||||
|
|||||||
Reference in New Issue
Block a user