feat: 采购申请字段级价格权限 — 库管看不到采购价格

## permission_service.py
- init_all_menus: 新增3个采购权限元素
  inbound_purchase:unit_price, :total_price, :tax_rate

## purchase.py
- _filter_purchase_prices(): 无价格权限则pop价格字段
- GET /purchase (列表): 应用价格过滤
- GET /purchase/<id> (详情): 应用价格过滤
- approved-unstocked: 保留价格(入库数据源,前端按inbound_buy权限控制)

## purchase/index.vue
- 列表: 单价/总价/税率列 v-if hasPermission
- 详情: 单价/总价 v-if hasPermission
This commit is contained in:
yueli
2026-07-16 17:34:24 +08:00
parent 6e064064d5
commit 754c46bd59
3 changed files with 48 additions and 18 deletions

View File

@ -638,19 +638,23 @@ class PermissionService:
db.session.add(new_perm)
db.session.commit()
# ★ 采购申请操作权限元素
purchase_op = SysElement.query.filter_by(
menu_code='inbound_purchase',
code='inbound_purchase:operation'
).first()
if not purchase_op:
db.session.add(SysElement(
menu_code='inbound_purchase',
name='可编辑',
code='inbound_purchase:operation',
element_type='operation'
))
print(f"✅ 采购申请操作权限元素已创建")
# ★ 采购申请权限元素
purchase_elements = [
('inbound_purchase:operation', '可编辑', 'operation'),
('inbound_purchase:unit_price', '采购单价', 'column'),
('inbound_purchase:total_price', '采购总价', 'column'),
('inbound_purchase:tax_rate', '税率', 'column'),
]
for code, name, etype in purchase_elements:
existing = SysElement.query.filter_by(
menu_code='inbound_purchase', code=code
).first()
if not existing:
db.session.add(SysElement(
menu_code='inbound_purchase', name=name,
code=code, element_type=etype
))
print(f"✅ 采购申请元素已创建: {code}")
print(f"✅ 所有菜单初始化完成")
return True