/**
 * 通用状态配置
 */

// 通用状态枚举
export enum CommonStatus {
  DISABLED = 0, // 禁用
  ENABLED = 1 // 启用/正常
}

// 通用状态选项（完整版）
export const STATUS_OPTIONS = [
  {
    label: '启用',
    value: CommonStatus.ENABLED,
    type: 'success' as const,
    color: '#67C23A',
    text: '正常'
  },
  {
    label: '禁用',
    value: CommonStatus.DISABLED,
    type: 'danger' as const,
    color: '#F56C6C',
    text: '禁用'
  }
]

// 通用状态选项（精简版，用于搜索表单和下拉选择）
export const STATUS_SELECT_OPTIONS = [
  { label: '启用', value: CommonStatus.ENABLED },
  { label: '禁用', value: CommonStatus.DISABLED }
]

// 状态映射
export const STATUS_MAP = STATUS_OPTIONS.reduce(
  (map, item) => {
    map[item.value] = item
    return map
  },
  {} as Record<
    CommonStatus,
    {
      label: string
      value: CommonStatus
      type: 'success' | 'danger'
      color: string
      text: string
    }
  >
)

// 获取状态标签
export function getStatusLabel(status: number): string {
  return STATUS_MAP[status as CommonStatus]?.label || '未知'
}

// 获取状态文本（用于 ElSwitch）
export function getStatusText(status: number): string {
  return STATUS_MAP[status as CommonStatus]?.text || '未知'
}

// 获取状态类型（用于 ElTag）
export function getStatusType(status: number) {
  return STATUS_MAP[status as CommonStatus]?.type || 'info'
}

// 获取状态颜色
export function getStatusColor(status: number): string {
  return STATUS_MAP[status as CommonStatus]?.color || '#909399'
}

// ========== 权限类型相关 ==========

// 权限类型枚举
export enum PermissionType {
  MENU = 1, // 菜单权限
  BUTTON = 2 // 按钮权限
}

// 权限类型选项（完整版，用于表格显示等）
export const PERMISSION_TYPE_OPTIONS = [
  {
    label: '菜单权限',
    value: PermissionType.MENU,
    type: '' as const,
    text: '菜单'
  },
  {
    label: '按钮权限',
    value: PermissionType.BUTTON,
    type: 'success' as const,
    text: '按钮'
  }
]

// 权限类型选项（精简版，用于搜索表单和下拉选择）
export const PERMISSION_TYPE_SELECT_OPTIONS = [
  { label: '菜单权限', value: PermissionType.MENU },
  { label: '按钮权限', value: PermissionType.BUTTON }
]

// 权限类型映射
export const PERMISSION_TYPE_MAP = PERMISSION_TYPE_OPTIONS.reduce(
  (map, item) => {
    map[item.value] = item
    return map
  },
  {} as Record<
    PermissionType,
    {
      label: string
      value: PermissionType
      type: '' | 'success'
      text: string
    }
  >
)

// 获取权限类型标签
export function getPermissionTypeLabel(type: number): string {
  return PERMISSION_TYPE_MAP[type as PermissionType]?.label || '未知'
}

// 获取权限类型文本
export function getPermissionTypeText(type: number): string {
  return PERMISSION_TYPE_MAP[type as PermissionType]?.text || '未知'
}

// 获取权限类型标签类型（用于 ElTag）
export function getPermissionTypeTag(type: number) {
  return PERMISSION_TYPE_MAP[type as PermissionType]?.type || 'info'
}
