/** * 权限管理工具 * 用于处理应用中的权限控制逻辑 */ // 权限信息 F1.核销 F2.配送 F3.推广 F4.量房 F5.家政 F6.维修 // 权限映射对象:将前端菜单/功能类型映射到权限代码 export const permissionMap = { // 功能权限映射 'verification': 'F1', // 商品核销 - F1.核销 'delivery': 'F2', // 配送 - F2.配送 'invite': 'F3', // 推广 - F3.推广 'measure': 'F4', // 量房 - F4.量房 'repair': 'F6', // 维修 - F6.维修 // 可以根据需要添加更多菜单与权限的映射关系 } /** * 判断当前用户是否拥有指定功能的权限 * @param {String} featureType - 功能/菜单类型 * @param {Array} userPermissions - 用户拥有的权限数组 * @returns {Boolean} - 是否拥有权限 */ export function hasPermission(featureType, userPermissions) { // 如果功能类型不在权限映射中,表示不需要权限控制,直接显示 if (!permissionMap[featureType]) return true; // 如果没有权限数组或权限数组为空,则没有权限 if (!userPermissions || userPermissions.length === 0) return false; // 检查权限数组中是否包含该功能所需的权限 return userPermissions.includes(permissionMap[featureType]); } /** * 过滤菜单或功能列表,只返回用户有权限访问的项 * @param {Array} menuList - 菜单或功能列表 * @param {Array} userPermissions - 用户拥有的权限数组 * @param {String} typeKey - 菜单项中表示功能类型的键名,默认为'type' * @returns {Array} - 过滤后的菜单列表 */ export function filterByPermission(menuList, userPermissions, typeKey = 'type') { if (!menuList || !Array.isArray(menuList)) return []; return menuList.filter(item => { const featureType = item[typeKey]; return hasPermission(featureType, userPermissions); }); } /** * 根据权限代码获取对应的功能类型列表 * @param {String} permissionCode - 权限代码 * @returns {Array} - 拥有该权限的功能类型列表 */ export function getFeaturesByPermission(permissionCode) { return Object.entries(permissionMap) .filter(([_, code]) => code === permissionCode) .map(([featureType]) => featureType); }