基础信息和采购件页面返回值读取正确
This commit is contained in:
@ -10,53 +10,75 @@ class MaterialBase(db.Model):
|
||||
"""
|
||||
__tablename__ = 'material_base'
|
||||
|
||||
# 1. 基础字段 (必须与 SQL 建表语句完全一致)
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(255), nullable=False, comment='基础信息名称')
|
||||
category = db.Column(db.String(100), comment='类别') # 例如: 采购件, 自制件
|
||||
material_type = db.Column(db.String(100), comment='类型') # 例如: 电子料, 结构件 (对应前端 type)
|
||||
spec_model = db.Column(db.String(255), comment='规格型号') # (对应前端 spec)
|
||||
|
||||
# 类别 (对应 SQL: category)
|
||||
category = db.Column(db.String(100), comment='类别')
|
||||
|
||||
# 类型 (对应 SQL: material_type) -> 前端 prop="type"
|
||||
material_type = db.Column(db.String(100), comment='类型')
|
||||
|
||||
# 规格型号 (对应 SQL: spec_model) -> 前端 prop="spec"
|
||||
spec_model = db.Column(db.String(255), comment='规格型号')
|
||||
|
||||
unit = db.Column(db.String(50), comment='计量单位')
|
||||
|
||||
# 根据你提供的代码,可见等级设为 Integer,默认为 0
|
||||
# 可见等级
|
||||
visibility_level = db.Column(db.Integer, default=0, comment='信息可见等级')
|
||||
|
||||
manual_link = db.Column(db.Text, comment='通用说明书链接') # (对应前端 generalManual)
|
||||
product_image = db.Column(db.Text, comment='通用产品图链接') # (对应前端 generalImage)
|
||||
# 链接与图片
|
||||
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='是否启用')
|
||||
|
||||
# 时间字段(建议加上,用于排序或记录)
|
||||
create_time = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
update_time = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
# ============================================================
|
||||
# ⚠️ 注意:你之前提供的 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)
|
||||
|
||||
# 【核心关联】
|
||||
# 关联采购库存表,lazy='dynamic' 允许使用 .count() 等查询方法
|
||||
# 关联采购库存表 (StockBuy),lazy='dynamic' 允许后续做 .count() 统计
|
||||
# 确保 app/models/stock.py 中有 back_populates='material'
|
||||
stock_buys = db.relationship('StockBuy', back_populates='material', lazy='dynamic')
|
||||
|
||||
def to_dict(self):
|
||||
"""
|
||||
序列化方法:将模型转换为字典,供API返回JSON使用
|
||||
此处进行了字段名的映射,以适配 list.vue 前端的 prop 属性
|
||||
这里是解决【前端表格空白】最关键的地方
|
||||
"""
|
||||
return {
|
||||
'id': self.id,
|
||||
'name': self.name,
|
||||
'category': self.category,
|
||||
|
||||
# --- 字段映射区域 (后端字段 -> 前端字段) ---
|
||||
'type': self.material_type, # 前端 prop="type"
|
||||
'spec': self.spec_model, # 前端 prop="spec"
|
||||
# =========================================
|
||||
# 关键映射区 (解决前后端字段名不一致问题)
|
||||
# =========================================
|
||||
# 数据库叫 material_type -> 前端叫 type
|
||||
'type': self.material_type,
|
||||
|
||||
# 数据库叫 spec_model -> 前端叫 spec
|
||||
'spec': self.spec_model,
|
||||
|
||||
'unit': self.unit,
|
||||
|
||||
# 转为驼峰命名,适配前端习惯
|
||||
# 驼峰命名适配
|
||||
'visibilityLevel': self.visibility_level,
|
||||
'generalManual': self.manual_link,
|
||||
'generalImage': self.product_image,
|
||||
|
||||
# Element Plus Switch 组件通常接受 1/0 或 true/false
|
||||
# 这里转为 1/0 方便前端 el-switch :active-value="1" :inactive-value="0"
|
||||
# 状态处理:前端 Switch 通常接受 boolean 或 1/0
|
||||
# 数据库里的 true -> 返回 1 (启用)
|
||||
# 数据库里的 false/None -> 返回 0 (禁用)
|
||||
'isEnabled': 1 if self.is_enabled else 0,
|
||||
|
||||
# 补充时间信息
|
||||
'createTime': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if self.create_time else None
|
||||
# 如果上方注释了 create_time,这里也要注释,否则会报错
|
||||
# 'createTime': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if hasattr(self, 'create_time') and self.create_time else None
|
||||
}
|
||||
Reference in New Issue
Block a user