diff --git a/inventory-backend/app/api/v1/outbound.py b/inventory-backend/app/api/v1/outbound.py index 2616f7c..3fd55a6 100644 --- a/inventory-backend/app/api/v1/outbound.py +++ b/inventory-backend/app/api/v1/outbound.py @@ -35,34 +35,19 @@ def get_current_user_permissions(): def filter_item_by_permissions(item_dict, user_permissions): """ 根据用户权限过滤 item 字典,无权限的字段值置为 None + 与前端 permissionMap 对齐:仅 total_amount/unit_price/subtotal 需权限 """ - # 字段名到权限码的映射(与前端 permissionMap 保持一致) field_to_perm = { - 'outbound_no': 'outbound_list:outbound_no', - 'outbound_time': 'outbound_list:outbound_time', - 'outbound_type': 'outbound_list:outbound_type', 'total_amount': 'outbound_list:total_amount', - 'consumer_name': 'outbound_list:consumer_name', - 'operator_name': 'outbound_list:operator_name', - 'remark': 'outbound_list:remark', - 'signature_path': 'outbound_list:signature_path', - # 明细字段 - 'sku': 'outbound_list:sku', - 'name': 'outbound_list:name', - 'material_type': 'outbound_list:material_type', - 'category': 'outbound_list:category', - 'spec_model': 'outbound_list:spec_model', - 'quantity': 'outbound_list:quantity', 'unit_price': 'outbound_list:unit_price', 'subtotal': 'outbound_list:subtotal', } - # 如果用户是超级管理员且有 'outbound_list:*',则不过滤 if 'outbound_list:*' in user_permissions: return item_dict for field, perm_code in field_to_perm.items(): if field in item_dict and perm_code not in user_permissions: item_dict[field] = None - # 如果 item_dict 中包含 items 列表,递归处理每个子项 + # 递归处理明细子项 if 'items' in item_dict and isinstance(item_dict['items'], list): for sub_item in item_dict['items']: filter_item_by_permissions(sub_item, user_permissions)