# app/utils/constants.py class UserRole: """ 用户角色定义 """ SUPER_ADMIN = 'SUPER_ADMIN' # 超级管理员 (IRIS) SUPERVISOR = 'SUPERVISOR' # 主管 FINANCE = 'FINANCE' # 财务 WAREHOUSE_MGR = 'WAREHOUSE_MGR' # 库管 INBOUND = 'INBOUND' # 入库员 OUTBOUND = 'OUTBOUND' # 出库员 PURCHASER = 'PURCHASER' # 采购员 SALES = 'SALES' # 销售 # 角色中文映射(用于前端展示或日志) # 注意:这个字典在 auth_service 遍历时需要被过滤掉 ROLE_MAP = { SUPER_ADMIN: '超级管理员', SUPERVISOR: '主管', FINANCE: '财务', WAREHOUSE_MGR: '库管', INBOUND: '入库员', OUTBOUND: '出库员', PURCHASER: '采购员', SALES: '销售' } class OutboundType: """ 出库类型(trans_outbound.outbound_type)。 ★ 前端 views/outbound/index.vue 的 formatType() 里另有一份同名映射, 两份是手工同步的副本。日报(后端)需要同一份口径,故在此定义; **改这里时请一并改前端**,或后续像审计标签那样改为接口下发。 """ SALES = 'SALES' # 销售出库 USE = 'USE' # 内部领用 PRODUCTION = 'PRODUCTION' # 生产出库 SCRAP = 'SCRAP' # 报废 LOSS = 'LOSS' # 盘亏出库 REPAIR = 'REPAIR' # 维修出库 LABELS = { SALES: '销售出库', USE: '内部领用', PRODUCTION: '生产出库', SCRAP: '报废', LOSS: '盘亏出库', REPAIR: '维修出库', } @classmethod def label(cls, code): """未命中时原样返回,避免报表上出现空白""" return cls.LABELS.get((code or '').strip(), (code or '').strip())