添加半成品页面进行数据

This commit is contained in:
dxc
2026-01-28 17:44:39 +08:00
parent cd55a6aee1
commit b0df5c7458
16 changed files with 1649 additions and 71 deletions

View File

@ -10,7 +10,7 @@ class MaterialBase(db.Model):
"""
__tablename__ = 'material_base'
# 1. 基础字段 (必须与 SQL 建表语句完全一致)
# 1. 基础字段 (保持不变)
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False, comment='基础信息名称')
@ -32,26 +32,31 @@ class MaterialBase(db.Model):
manual_link = db.Column(db.Text, comment='通用说明书链接')
product_image = db.Column(db.Text, comment='通用产品图链接')
# 启用状态 (注意SQL中是 boolean)
# 启用状态
is_enabled = db.Column(db.Boolean, default=True, comment='是否启用')
# ============================================================
# ⚠️ 注意:你之前提供的 SQL 建表语句中【没有】下面这两个时间字段。
# 如果数据库里没有这两列,代码运行到这里会报错 (UndefinedColumn)。
# 我先将其注释掉。如果你确认数据库已经 Alter Table 加了这两列,请取消注释。
# 时间字段 (保持你原本的注释状态,以免报错)
# ============================================================
# create_time = db.Column(db.DateTime, default=datetime.utcnow)
# update_time = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 【核心关联】
# 关联采购库存表 (StockBuy)lazy='dynamic' 允许后续做 .count() 统计
# 确保 app/models/stock.py 中有 back_populates='material'
# ============================================================
# 关联关系区域 (修改重点)
# ============================================================
# 1. 关联采购库存 (StockBuy) - 保持不变
# 注意:确保 app/models/inbound/buy.py 中的 StockBuy 定义了 back_populates='material'
stock_buys = db.relationship('StockBuy', back_populates='material', lazy='dynamic')
# 2. 【新增】关联半成品库存 (StockSemi)
# 注意:确保 app/models/inbound/semi.py 中的 StockSemi 定义了 back_populates='material'
# 这样以后可以通过 material.stock_semis 来访问该物料下的所有半成品库存记录
stock_semis = db.relationship('StockSemi', back_populates='material', lazy='dynamic')
def to_dict(self):
"""
序列化方法将模型转换为字典供API返回JSON使用
这里是解决【前端表格空白】最关键的地方
"""
return {
'id': self.id,
@ -59,7 +64,7 @@ class MaterialBase(db.Model):
'category': self.category,
# =========================================
# 关键映射区 (解决前后端字段名不一致问题)
# 关键映射区 (保持不变)
# =========================================
# 数据库叫 material_type -> 前端叫 type
'type': self.material_type,
@ -74,11 +79,9 @@ class MaterialBase(db.Model):
'generalManual': self.manual_link,
'generalImage': self.product_image,
# 状态处理:前端 Switch 通常接受 boolean 或 1/0
# 数据库里的 true -> 返回 1 (启用)
# 数据库里的 false/None -> 返回 0 (禁用)
# 状态处理
'isEnabled': 1 if self.is_enabled else 0,
# 如果上方注释了 create_time这里也要注释否则会报错
# 时间字段保持注释
# 'createTime': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if hasattr(self, 'create_time') and self.create_time else None
}