# 出国登记审批权限配置总结 ## 📋 配置概览 **菜单名称**: 出国登记审批 **权限标识规范**: 二段式(`模块:操作`) **按钮数量**: 4个 **最后更新**: 2025-10-08 v1.1 --- ## 🔐 完整权限清单 ### 1️⃣ 菜单权限(1个) | 菜单名称 | 权限标识 | 说明 | |---------|---------|------| | 出国登记审批 | `rs:registration:list` | 菜单访问权限 | --- ### 2️⃣ 按钮权限(4个) | 序号 | 按钮名称 | 权限标识 | 说明 | |-----|---------|---------|------| | 1 | 查询/查看详情 | `rs:registration:query` | 查询列表、查看详情 | | 2 | 审批通过 | `rs:registration:approve` | 审批通过操作 | | 3 | 审批拒绝 | `rs:registration:approve` | 审批拒绝操作(复用approve) | | 4 | 导出 | `rs:registration:export` | 导出Excel | **总计**: 1个菜单 + 4个按钮 = **5条sys_menu记录** --- ## 💡 核心设计原则 ### ✅ 二段式权限标识 - **格式**: `模块:操作` - **示例**: `rs:registration:approve` - **优势**: 简洁明了,易于管理 ### ✅ 权限复用策略 **审批通过和拒绝使用同一个权限**:`rs:registration:approve` **原因**: 1. 业务逻辑统一:有审批权限的人,自然可以通过或拒绝 2. 简化权限管理:不需要为每个操作单独配置 3. 降低配置复杂度 ### ✅ 删除批量操作 **已删除**: - ~~批量审批通过~~ - ~~批量审批拒绝~~ **原因**: - 简化权限配置 - 保持菜单简洁 - 后续如需批量操作,可在业务层实现 --- ## 📊 菜单结构 ``` 📁 人事管理 / 出国管理 📄 出国登记审批 (rs:registration:list) 🔘 查询 (rs:registration:query) 🔘 审批通过 (rs:registration:approve) 🔘 审批拒绝 (rs:registration:approve) 🔘 导出 (rs:registration:export) ``` --- ## 🗂️ 数据库配置 ### sys_menu 表记录 | menu_id | menu_name | parent_id | order_num | menu_type | perms | remark | |---------|-----------|-----------|-----------|-----------|-------|--------| | 2001 | 出国登记审批 | 父菜单ID | 1 | C | rs:registration:list | 菜单 | | 2001001 | 出国登记审批查询 | 2001 | 1 | F | rs:registration:query | 查询按钮 | | 2001002 | 审批通过 | 2001 | 2 | F | rs:registration:approve | 审批通过按钮 | | 2001003 | 审批拒绝 | 2001 | 3 | F | rs:registration:approve | 审批拒绝按钮 | | 2001004 | 导出 | 2001 | 4 | F | rs:registration:export | 导出按钮 | **注意**:menu_id 实际使用雪花ID --- ## 🚀 快速部署指南 ### Step 1:查询父菜单ID ```sql SELECT menu_id, menu_name FROM sys_menu WHERE menu_name LIKE '%出国%' OR menu_name LIKE '%人事%'; ``` ### Step 2:修改SQL脚本 打开 `出国登记审批菜单权限配置-快速版.sql` 修改第14行: ```sql SET @parent_menu_id = 2000; -- 改为实际的父菜单ID ``` ### Step 3:执行SQL脚本 在数据库工具中执行快速版SQL脚本 ### Step 4:分配角色权限 1. 登录系统 → 【系统管理】→【角色管理】 2. 编辑需要审批权限的角色(如:人事管理员) 3. 勾选"出国登记审批"菜单及其4个按钮 4. 保存 ### Step 5:验证测试 - ✅ 菜单是否显示 - ✅ 按钮是否显示 - ✅ 审批功能是否正常 --- ## 🎯 前端权限控制 ### Vue组件示例 ```vue ``` --- ## ⚙️ 后端权限控制 ### Controller示例 ```java /** * 查询出国登记审批列表 */ @SaCheckPermission("rs:registration:query") @GetMapping("/list") public TableDataInfo list(RsOverseasRegistrationBo bo, PageQuery pageQuery) { return iRsOverseasRegistrationService.queryPageList(bo, pageQuery); } /** * 审批通过 */ @SaCheckPermission("rs:registration:approve") @Log(title = "出国登记审批", businessType = BusinessType.UPDATE) @PutMapping("/approve/{registrationId}") public R approve(@PathVariable Long registrationId, @RequestBody Map data) { // 审批通过逻辑 return R.ok(); } /** * 审批拒绝 */ @SaCheckPermission("rs:registration:approve") @Log(title = "出国登记审批", businessType = BusinessType.UPDATE) @PutMapping("/reject/{registrationId}") public R reject(@PathVariable Long registrationId, @RequestBody Map data) { // 审批拒绝逻辑 return R.ok(); } /** * 导出 */ @SaCheckPermission("rs:registration:export") @Log(title = "出国登记审批", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(RsOverseasRegistrationBo bo, HttpServletResponse response) { // 导出逻辑 } ``` --- ## 🔍 常见问题排查 ### 问题1:菜单不显示 **可能原因**: - 菜单权限未分配给角色 - 菜单状态为停用或隐藏 **解决方法**: ```sql -- 检查菜单配置 SELECT menu_id, menu_name, perms, visible, status FROM sys_menu WHERE menu_name = '出国登记审批'; -- 检查角色权限 SELECT r.role_name, m.menu_name, m.perms FROM sys_role r INNER JOIN sys_role_menu rm ON r.role_id = rm.role_id INNER JOIN sys_menu m ON rm.menu_id = m.menu_id WHERE m.menu_name = '出国登记审批'; ``` ### 问题2:按钮不显示 **可能原因**: - 按钮权限未分配 - 前端权限标识不匹配 **解决方法**: 1. 检查角色是否勾选了按钮权限 2. 检查 `v-hasPermi` 权限标识是否正确 3. 清除浏览器缓存重新登录 ### 问题3:接口403无权限 **可能原因**: - 后端权限注解不匹配 - Token过期 **解决方法**: 1. 检查 `@SaCheckPermission` 权限标识 2. 重新登录获取新Token --- ## 📚 相关文档 ### SQL配置脚本 - ✅ **出国登记审批菜单权限配置-快速版.sql** ⭐ 推荐 - ✅ **出国登记审批菜单权限配置.sql** - 详细版 ### 说明文档 - ✅ **出国登记审批权限标识对照表.md** - 详细权限说明 - ✅ **出国登记审批权限配置总结.md** - 本文档 ### 前端代码 - `web/src/views/rs/overseas-registration/approval.vue` - 审批页面 - `web/src/api/rs/overseas-registration.ts` - API接口 ### 后端代码 - 待开发 --- ## ✅ 配置检查清单 ### SQL配置 - [ ] 查询父菜单ID - [ ] 修改SQL脚本中的 `@parent_menu_id` - [ ] 执行SQL脚本 - [ ] 检查sys_menu表(应有5条记录) ### 角色权限 - [ ] 分配菜单权限给角色 - [ ] 勾选所有按钮权限 - [ ] 保存配置 ### 前端验证 - [ ] 菜单是否显示 - [ ] 4个按钮是否都显示 - [ ] 权限标识是否正确 ### 后端验证 - [ ] Controller权限注解是否正确 - [ ] 接口是否正常调用 - [ ] 无权限时是否返回403 --- ## 📝 版本记录 | 版本 | 日期 | 说明 | 维护人 | |-----|------|------|--------| | v1.0 | 2025-10-08 | 创建权限配置,采用二段式权限标识 | AI Assistant | | v1.1 | 2025-10-08 | 删除批量审批按钮,保留4个基础按钮 | AI Assistant | --- ## 🎯 配置要点 1. ✅ **权限标识统一为二段式**:`rs:registration:操作` 2. ✅ **审批操作复用权限**:通过和拒绝都使用 `approve` 3. ✅ **菜单结构简洁**:1个菜单 + 4个按钮 4. ✅ **前后端权限一致**:确保权限标识完全匹配 5. ✅ **删除批量操作**:简化权限配置 --- **🎉 配置完成后,出国登记审批菜单即可正常使用!**