83 lines
1.8 KiB
JavaScript
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
|
|
}
|