/** * 角色管理工具 * 统一H5端和PC端的角色控制逻辑 */ // 角色常量 export const ROLE_TYPES = { SUPPLIER: 'supplier', // 供应商 BUSINESS: 'business', // 买家 PROCUREMENT: 'procurement' // 卖家 } /** * 生成角色数组(与PC端保持一致) * @param {number} role - 基础角色 (0=供应商, 1=买家, 2=卖家) * @param {number} role_wp - 附加角色 (1/2/3=供应商身份) * @returns {string[]} 角色数组 */ export function getRoles(role, role_wp) { const roleMap = { 0: ROLE_TYPES.SUPPLIER, 1: ROLE_TYPES.BUSINESS, 2: ROLE_TYPES.PROCUREMENT } const baseRole = roleMap[role] || ROLE_TYPES.BUSINESS const roles = [baseRole] // role_wp 有值表示供应商身份 if (role_wp && role_wp > 0) { roles.push(ROLE_TYPES.SUPPLIER) } return roles } /** * 获取用户角色列表 * @returns {string[]} 角色数组 */ export function getUserRoles() { try { const rolesStr = uni.getStorageSync('roles') if (rolesStr) { return JSON.parse(rolesStr) } } catch (e) { console.error('[getUserRoles] 解析角色失败:', e) } return [] } /** * 获取主角色(基础角色) * @returns {string} 主角色名称 */ export function getPrimaryRole() { const roles = getUserRoles() return roles.length > 0 ? roles[0] : ROLE_TYPES.BUSINESS } /** * 判断是否有供应商身份 * @returns {boolean} 是否有供应商身份 */ export function isSupplier() { const roles = getUserRoles() return roles.includes(ROLE_TYPES.SUPPLIER) } /** * 保存角色信息 * @param {number} role - 基础角色 * @param {number} role_wp - 附加角色 * @returns {string[]} 保存后的角色数组 */ export function saveRoles(role, role_wp) { const roles = getRoles(role, role_wp) uni.setStorageSync('role', String(role)) uni.setStorageSync('roles', JSON.stringify(roles)) return roles }