/**
 * 残疾类型枚举
 * 对应数据库 sys_dict 表中的 disability_type 字典类型
 *
 * @remarks
 * 根据 Allin 系统数据库定义，包含7种固定残疾类型
 */
export enum DisabilityType {
  /** 视力残疾 */
  VISION = 'vision',

  /** 听力残疾 */
  HEARING = 'hearing',

  /** 言语残疾 */
  SPEECH = 'speech',

  /** 肢体残疾 */
  PHYSICAL = 'physical',

  /** 智力残疾 */
  INTELLECTUAL = 'intellectual',

  /** 精神残疾 */
  MENTAL = 'mental',

  /** 多重残疾 */
  MULTIPLE = 'multiple'
}

/**
 * 残疾类型显示名称映射
 */
export const DisabilityTypeLabels: Record<DisabilityType, string> = {
  [DisabilityType.VISION]: '视力残疾',
  [DisabilityType.HEARING]: '听力残疾',
  [DisabilityType.SPEECH]: '言语残疾',
  [DisabilityType.PHYSICAL]: '肢体残疾',
  [DisabilityType.INTELLECTUAL]: '智力残疾',
  [DisabilityType.MENTAL]: '精神残疾',
  [DisabilityType.MULTIPLE]: '多重残疾'
};

/**
 * 获取残疾类型显示名称
 * @param type 残疾类型枚举值
 * @returns 对应的中文显示名称
 */
export function getDisabilityTypeLabel(type: DisabilityType): string {
  return DisabilityTypeLabels[type];
}

/**
 * 所有有效的残疾类型值数组
 */
export const DISABILITY_TYPES = Object.values(DisabilityType) as DisabilityType[];