diff --git a/inventory-backend/app/api/v1/auth.py b/inventory-backend/app/api/v1/auth.py index 075b7de..b5cdca1 100644 --- a/inventory-backend/app/api/v1/auth.py +++ b/inventory-backend/app/api/v1/auth.py @@ -339,11 +339,25 @@ def get_approvers(): from app.models.system import SysUser current_user_id = get_jwt_identity() + me = SysUser.query.get(current_user_id) if current_user_id else None - users = SysUser.query.filter( - SysUser.role.in_(['SUPER_ADMIN', 'SUPERVISOR']), - SysUser.status == 'active' - ).all() + from sqlalchemy import and_, or_ + if me and (me.role or '').upper() == 'SUPER_ADMIN': + # 超管本人:不受部门限制,仍列出全部主管+超管 + users = SysUser.query.filter( + SysUser.role.in_(['SUPER_ADMIN', 'SUPERVISOR']), + SysUser.status == 'active' + ).all() + else: + # 普通/主管:只列“本公司(department)主管” + “所有超管” + my_company = me.department if me else None + users = SysUser.query.filter( + SysUser.status == 'active', + or_( + SysUser.role == 'SUPER_ADMIN', + and_(SysUser.role == 'SUPERVISOR', SysUser.department == my_company) + ) + ).all() return jsonify({ 'msg': '获取成功',