Files
smt-used-car-h5/common/role.js
T
2026-03-11 11:15:33 +08:00

83 lines
1.8 KiB
JavaScript

/**
* 角色管理工具
* 统一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
}