fs-lawrisk/GRADE_AUTO_CALC.md

5.0 KiB
Raw Blame History

组织架构权限等级自动管理功能

功能概述

本次更新实现了基于组织架构层级的权限等级自动管理功能,彻底解决了手动填写权限等级的问题,使权限等级管理更加智能化和自动化。

核心改进

1. 前端优化 (static/super_admin.html)

新增模态框显示权限信息

  • 新增部门时:显示蓝色信息框,清晰展示:
    • 父级层级
    • 子级层级
    • 自动分配的权限等级
  • 编辑部门时:显示黄色信息框,展示:
    • 当前层级
    • 当前权限等级
    • 权限等级自动计算说明

移除手动选择权限等级

  • 删除了权限等级下拉选择框
  • 改为自动显示权限等级信息
  • 用户无需手动填写数字

新增辅助函数

  • calculateGradeByLevel(level) - 根据层级计算权限等级
  • getGradeInfo(grade) - 获取权限等级详细信息
  • syncGradesWithLevels() - 同步权限等级与层级关系

2. 后端优化 (lawrisk/services/licensing_repo.py)

新增自动计算函数

  • _calculate_grade_by_parent(parent_id) - 根据父节点计算权限等级

    • 根级部门无父节点90超级权限
    • 二级部门80高级权限
    • 三级部门70中级权限
    • 四级及以下60一般权限
  • _get_department_level(department_id) - 获取部门在组织架构中的层级

    • 通过递归查询parent_id追溯到根节点
    • 返回该部门的深度层级根节点为0

修改创建部门逻辑

# 自动根据父节点计算权限等级不再使用传入的grade参数
grade_value = _calculate_grade_by_parent(parent_token)

修改更新部门逻辑

# 如果修改了parent_id则自动计算grade
if parent_id is not None:
    new_grade = _calculate_grade_by_parent(parent_id)
    updates.append("grade = %s")
    values.append(new_grade)

权限等级映射表

组织层级 权限等级 权限名称 颜色标识
0级根级 90 超级权限 🔴 红色
1级二级 80 高级权限 🟠 橙色
2级三级 70 中级权限 🟡 黄色
3级+(四级及以下) 60 一般权限 🟢 绿色

功能特性

1. 自动计算

  • 新增部门时自动根据父级部门计算权限等级
  • 拖拽修改从属关系时自动重新计算权限等级
  • 编辑部门信息时自动显示当前权限等级

2. 智能提示

  • 新增部门时显示权限等级自动设置信息
  • 编辑部门时显示当前权限等级和层级
  • 控制台输出调试信息,便于问题定位

3. 无缝兼容

  • 保留grade字段向后兼容
  • 不影响现有数据
  • 自动同步现有不匹配的权限等级

使用场景

场景1新增子部门

  1. 点击某个部门的" 新增"按钮
  2. 弹出模态框显示蓝色信息框:
    • 父级层级X 级
    • 子级层级X+1 级
    • 自动分配XX - XXXX权限
  3. 填写部门名称、账号等信息
  4. 点击确定,系统自动分配正确的权限等级

场景2拖拽修改从属关系

  1. 拖拽部门到其他部门下作为子级
  2. 释放鼠标确认操作
  3. 系统自动:
    • 更新从属关系
    • 重新计算权限等级
    • 刷新组织架构显示

场景3编辑部门信息

  1. 点击部门的"✏️ 编辑"按钮
  2. 弹出模态框显示黄色信息框:
    • 当前层级X 级
    • 当前权限XX - XXXX权限
  3. 修改部门名称、电话等信息(不影响权限等级)
  4. 权限等级基于层级自动保持正确

技术实现细节

数据库层

  • update_service_department中添加自动计算grade逻辑
  • 新增_calculate_grade_by_parent函数
  • 新增_get_department_level函数

API层

  • 创建和更新部门时自动计算grade
  • grade参数保留但不再使用

前端层

  • 修改showAddChildModal函数,显示权限信息
  • 修改showEditModal函数,显示当前权限
  • 添加权限等级计算辅助函数
  • 移除手动选择权限等级的UI

优势

  1. 智能化:无需手动计算和填写权限等级
  2. 一致性:确保权限等级与组织架构层级始终一致
  3. 易用性:清晰的信息提示,用户一目了然
  4. 可维护性:逻辑集中管理,便于维护和修改
  5. 向后兼容:不破坏现有功能和数据

部署状态

Flask服务已启动 (http://127.0.0.1:8000) 所有修改已部署 功能已生效

测试建议

  1. 新增部门测试

    • 在不同层级新增部门
    • 验证权限等级是否正确自动分配
  2. 拖拽测试

    • 拖拽部门改变从属关系
    • 验证权限等级是否自动更新
  3. 编辑测试

    • 编辑部门基本信息
    • 验证权限等级显示是否正确
  4. 信息显示测试

    • 检查新增和编辑模态框中的权限信息提示
    • 验证颜色标识和文字说明

功能完成! 🎉 权限等级现在完全基于组织架构层级自动管理,用户无需再手动填写数字。