"feat: 1-实现动态层级树形库位管理功能

2 - 首页新增库位设置按钮和树形管理弹窗
     3 - 后端添加 SysWarehouseLocation 模型和 CRUD API
     4 - 树形结构支持无限层级,自动计算 full_path
     5 - 修复 product.vue 中 defaultColumns 未定义 bug
This commit is contained in:
dxc
2026-03-06 14:33:13 +08:00
parent cc26f91b50
commit 359b8a8345
4 changed files with 272 additions and 5 deletions

View File

@ -130,6 +130,19 @@ def create_app():
except ImportError as e:
print(f"❌ 错误: Permission 模块导入失败 (请检查 app/api/v1/permission.py 是否存在): {e}")
# -----------------------------------------------------
# 2.8 注册库位管理模块 (Warehouse)
# -----------------------------------------------------
try:
from app.api.v1.warehouse import warehouse_bp
# 标准: /api/v1/warehouse/tree
app.register_blueprint(warehouse_bp, url_prefix='/api/v1/warehouse')
# 兼容: /api/warehouse/tree
app.register_blueprint(warehouse_bp, url_prefix='/api/warehouse', name='warehouse_legacy')
print("✅ Warehouse 模块注册成功")
except ImportError as e:
print(f"❌ 错误: Warehouse 模块导入失败: {e}")
# =========================================================
# 3. 预加载数据模型
# =========================================================
@ -145,7 +158,7 @@ def create_app():
from app.models.outbound import TransOutbound
# 系统与业务模型 (SysRolePermission 等在 models.system 中)
from app.models.system import SysUser, SysLog, SysMenu, SysElement, SysRolePermission
from app.models.system import SysUser, SysLog, SysMenu, SysElement, SysRolePermission, SysWarehouseLocation
# 确保借还模型被加载
from app.models.transaction import TransBorrow, TransRepair, TransScrap

View File

@ -148,4 +148,39 @@ class SysRolePermission(db.Model):
id = db.Column(db.Integer, primary_key=True)
role_code = db.Column(db.String(50), nullable=False)
target_code = db.Column(db.String(100), nullable=False) # menu_code 或 element_code
type = db.Column(db.String(20), nullable=False) # 'menu' 或 'element'
type = db.Column(db.String(20), nullable=False) # 'menu' 或 'element'
# ==========================================
# 4. 库位管理模型
# ==========================================
class SysWarehouseLocation(db.Model):
"""
库位字典表(支持无限层级树形结构)
对应数据库: sys_warehouse_location
"""
__tablename__ = 'sys_warehouse_location'
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey('sys_warehouse_location.id'), nullable=True)
name = db.Column(db.String(100), nullable=False)
full_path = db.Column(db.String(500)) # 完整路径,如 "A区/货架1/第3层"
level = db.Column(db.Integer, default=0) # 层级深度顶级为0
is_enabled = db.Column(db.Boolean, default=True)
created_at = db.Column(db.DateTime, default=datetime.now)
updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)
# 自关联
children = db.relationship('SysWarehouseLocation', backref=db.backref('parent', remote_side=[id]), lazy='dynamic')
def to_dict(self):
return {
'id': self.id,
'parent_id': self.parent_id,
'name': self.name,
'full_path': self.full_path,
'level': self.level,
'is_enabled': self.is_enabled,
'created_at': self.created_at.isoformat() if self.created_at else None,
'updated_at': self.updated_at.isoformat() if self.updated_at else None
}