enum.service.ts 1.1 KB
import Vue from "vue";

import { UseState, USE_STATE } from "./business/use-state.enum";
import { SEX, Sex } from "@/constants/enum/business/sex.enum";

/**
 * @description: 枚举服务
 * @author ChenRui
 * @date 2020/7/29 18:49
 */
class EnumService {
  private static readonly ENUMS = {
    [USE_STATE]: UseState,
    [SEX]: Sex,
  };

  init(): void {
    // Vue.prototype.$permissions = PermissionsEnum;
  }

  get(enumName: string): any {
    return (EnumService.ENUMS as unknown as any)[enumName];
  }

  getValues(enumName: string): any {
    const switchEnum = this.get(enumName);
    if (switchEnum != null) {
      return Object.keys(switchEnum).map((key: string) => {
        return switchEnum[key];
      });
    }
    return null;
  }

  getNameByCode(enumName: string, code: string): any {
    const switchEnumArr = this.getValues(enumName);
    if (switchEnumArr != null) {
      return switchEnumArr.find(function (item: any) {
        return item.code === code;
      });
    }
    return null;
  }
}

const enumService = new EnumService();
export default enumService;