# 组织架构权限等级自动管理功能 ## 功能概述 本次更新实现了基于组织架构层级的权限等级自动管理功能,彻底解决了手动填写权限等级的问题,使权限等级管理更加智能化和自动化。 ## 核心改进 ### 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) #### 修改创建部门逻辑 ```python # 自动根据父节点计算权限等级,不再使用传入的grade参数 grade_value = _calculate_grade_by_parent(parent_token) ``` #### 修改更新部门逻辑 ```python # 如果修改了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. **信息显示测试** - 检查新增和编辑模态框中的权限信息提示 - 验证颜色标识和文字说明 --- **功能完成!** 🎉 权限等级现在完全基于组织架构层级自动管理,用户无需再手动填写数字。