import { getMenuList, assignRoleMenus, getUserList } from '@/api/permission.js'; import { ElMessage } from 'element-plus'; /** * 为超级管理员账户分配所有菜单权限 * @param {string} mobile 手机号,默认为 '15900000000' * @returns {Promise} 是否成功 */ export async function assignAllPermissionsToSuperAdmin(mobile = '15900000000') { try { console.log(`=== 开始为超级管理员 ${mobile} 分配所有菜单权限 ===`); // 1. 获取用户列表,找到目标用户 const userListRes = await getUserList(); if (userListRes.code !== 200) { throw new Error('获取用户列表失败'); } const targetUser = userListRes.data.find(user => user.mobile === mobile); if (!targetUser) { throw new Error(`未找到手机号为 ${mobile} 的用户`); } console.log('=== 找到目标用户 ===', targetUser); // 2. 获取所有菜单列表 const menuListRes = await getMenuList(); if (menuListRes.code !== 200) { throw new Error('获取菜单列表失败'); } const allMenus = menuListRes.data || []; const allMenuIds = allMenus.map(menu => menu.id); console.log('=== 获取到所有菜单 ===', { totalMenus: allMenus.length, menuIds: allMenuIds }); // 3. 为超级管理员角色分配所有菜单权限 const assignRes = await assignRoleMenus({ roleId: targetUser.roleId, menuIds: allMenuIds }); if (assignRes.code === 200) { console.log('=== 权限分配成功 ==='); ElMessage.success(`成功为超级管理员 ${mobile} 分配了 ${allMenuIds.length} 个菜单权限`); return true; } else { throw new Error(assignRes.msg || '权限分配失败'); } } catch (error) { console.error('=== 权限分配失败 ===', error); ElMessage.error(`权限分配失败: ${error.message}`); return false; } } /** * 检查超级管理员权限状态 * @param {string} mobile 手机号,默认为 '15900000000' * @returns {Promise} 权限状态信息 */ export async function checkSuperAdminPermissions(mobile = '15900000000') { try { console.log(`=== 检查超级管理员 ${mobile} 的权限状态 ===`); // 1. 获取用户列表,找到目标用户 const userListRes = await getUserList(); if (userListRes.code !== 200) { throw new Error('获取用户列表失败'); } const targetUser = userListRes.data.find(user => user.mobile === mobile); if (!targetUser) { throw new Error(`未找到手机号为 ${mobile} 的用户`); } // 2. 获取该用户当前已分配的菜单权限 const { getRoleMenuIds } = await import('@/api/permission.js'); const roleMenuRes = await getRoleMenuIds(targetUser.roleId); if (roleMenuRes.code !== 200) { throw new Error('获取角色菜单权限失败'); } const assignedMenuIds = roleMenuRes.data || []; // 3. 获取所有菜单数量 const menuListRes = await getMenuList(); if (menuListRes.code !== 200) { throw new Error('获取菜单列表失败'); } const totalMenus = menuListRes.data.length; const status = { user: targetUser, totalMenus: totalMenus, assignedMenus: assignedMenuIds.length, isComplete: assignedMenuIds.length === totalMenus, missingMenus: totalMenus - assignedMenuIds.length }; console.log('=== 权限状态检查结果 ===', status); return status; } catch (error) { console.error('=== 权限状态检查失败 ===', error); throw error; } } /** * 一键为超级管理员分配所有权限(包含UI提示) * @param {string} mobile 手机号,默认为 '15900000000' */ export async function quickAssignAllPermissions(mobile = '15900000000') { try { // 先检查当前状态 const status = await checkSuperAdminPermissions(mobile); if (status.isComplete) { ElMessage.info(`超级管理员 ${mobile} 已经拥有所有菜单权限`); return true; } // 确认操作 const confirmed = await new Promise((resolve) => { ElMessageBox.confirm( `确定要为超级管理员 ${mobile} 分配所有菜单权限吗?\n\n当前状态:\n- 总菜单数:${status.totalMenus}\n- 已分配:${status.assignedMenus}\n- 缺失:${status.missingMenus}`, '确认分配权限', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', } ).then(() => resolve(true)).catch(() => resolve(false)); }); if (!confirmed) { ElMessage.info('已取消权限分配'); return false; } // 执行分配 const success = await assignAllPermissionsToSuperAdmin(mobile); if (success) { // 重新检查状态 const newStatus = await checkSuperAdminPermissions(mobile); ElMessage.success(`权限分配完成!现在拥有 ${newStatus.assignedMenus}/${newStatus.totalMenus} 个菜单权限`); } return success; } catch (error) { console.error('=== 快速分配权限失败 ===', error); ElMessage.error(`操作失败: ${error.message}`); return false; } }