物料-采购件入库页面功能实现

This commit is contained in:
dxc
2026-01-27 15:50:23 +08:00
parent 2f8a5c55b1
commit 3afea217b7
45 changed files with 1522 additions and 2756 deletions

View File

@ -1,34 +1,32 @@
#material.py
from app.extensions import db
from datetime import datetime
class MaterialBase(db.Model):
__tablename__ = 'material_base'
id = db.Column(db.Integer, primary_key=True)
# 核心字段
sku_code = db.Column(db.String(100), unique=True, nullable=False) # 唯一编码
name = db.Column(db.String(255), nullable=False) # 名称
spec_model = db.Column(db.String(255)) # 规格型号
unit = db.Column(db.String(50)) # 单位
category = db.Column(db.String(100)) # 分类
name = db.Column(db.String(255), nullable=False) # 名称
category = db.Column(db.String(100)) # 类别
material_type = db.Column(db.String(100)) # 类型
spec_model = db.Column(db.String(255)) # 规格型号
unit = db.Column(db.String(50)) # 计量单位
visibility_level = db.Column(db.Integer, default=0) # 信息可见等级
manual_link = db.Column(db.Text) # 通用说明书
product_image = db.Column(db.Text) # 通用产品图
is_enabled = db.Column(db.Boolean, default=True) # 是否启用
# 审计字段 (自动记录时间)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 关联关系 (让 StockBuy 可以反向找到 Material)
# 这里的 dynamic 允许在 material.stock_buys 时进行进一步过滤
# 【核心关联】
# 这里定义了反向关系lazy='dynamic' 允许我们后续做 count() 查询
# cascade='all, delete-orphan' 并不是在这里用的,因为我们是手动控制逻辑
stock_buys = db.relationship('StockBuy', back_populates='material', lazy='dynamic')
def to_dict(self):
"""将对象转换为字典,方便接口返回"""
return {
'id': self.id,
'sku_code': self.sku_code,
'name': self.name,
'spec_model': self.spec_model,
'unit': self.unit,
'category': self.category,
'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None
'material_type': self.material_type,
'spec_model': self.spec_model,
'unit': self.unit
}