Files
WXProgram/miniprogram/utils/roleUtils.ts

85 lines
2.1 KiB
TypeScript
Raw Normal View History

/**
* -
*/
/**
*
* 使
*/
export enum Role {
DELIVERY_PERSON = 'DELIVERY_PERSON', // 配送员
ADMIN = 'ADMIN' // 管理员
}
/**
*
*
*/
export const RoleMapping = {
0: Role.DELIVERY_PERSON, // 0对应配送员
1: Role.ADMIN // 1对应管理员
} as const;
/**
*
* @param roleValue
* @returns
*/
export function normalizeRole(roleValue: string | number): Role {
if (typeof roleValue === 'number') {
// 如果是数字,使用映射表转换
return RoleMapping[roleValue as keyof typeof RoleMapping] || Role.DELIVERY_PERSON;
}
// 如果是字符串,直接转换为大写进行比较
const normalizedRole = roleValue.toUpperCase();
// 检查是否是有效的角色值
if (normalizedRole === Role.ADMIN) {
return Role.ADMIN;
}
// 默认返回配送员
return Role.DELIVERY_PERSON;
}
/**
*
* @param role
* @returns
*/
export function getRoleText(role: Role): string {
switch (role) {
case Role.ADMIN:
return '管理员';
case Role.DELIVERY_PERSON:
return '配送员';
default:
return '未知角色';
}
}
/**
*
* @param roleValue
* @returns
*/
export function isValidRole(roleValue: string | number): boolean {
try {
const normalized = normalizeRole(roleValue);
return normalized === Role.ADMIN || normalized === Role.DELIVERY_PERSON;
} catch {
return false;
}
}
/**
*
* @returns
*/
export function getRoleOptions(): Array<{ value: Role; label: string }> {
return [
{ value: Role.DELIVERY_PERSON, label: '配送员' },
{ value: Role.ADMIN, label: '管理员' }
];
}