新建Enum.ts
在系统公共模块如common文件夹下新建一个Enum.ts文件,代码如下:
export interface EnumValueTag {
color?: string;
type?: string;
}
/**
* 枚举值类
*/
export class EnumValue {
/**
* 枚举值
*/
value: any;
/**
* 枚举描述
*/
label: string;
/**
* 展示的标签信息
*/
tag: EnumValueTag;
constructor(value: any, label: string) {
this.value = value;
this.label = label;
}
/**
* tag相关的方法主要用于PageTable.vue公共分页组件对枚举值进行el-tag标签展示
*/
setTagType(type: string = 'primary'): EnumValue {
this.tag = { type };
return this;
}
tagTypeInfo(): EnumValue {
return this.setTagType('info');
}
tagTypeSuccess(): EnumValue {
return this.setTagType('success');
}
tagTypeDanger(): EnumValue {
return this.setTagType('danger');
}
tagTypeWarning(): EnumValue {
return this.setTagType('warning');
}
setTagColor(color: string): EnumValue {
this.tag = { color };
return this;
}
public static of(value: any, label: string): EnumValue {
return new EnumValue(value, label);
}
/**
* 根据枚举值获取指定枚举值对象
*
* @param enumValues 所有枚举值
* @param value 需要匹配的枚举值
* @returns 枚举值对象
*/
static getEnumByValue(enumValues: EnumValue[], value: any): EnumValue | null {
for (let enumValue of enumValues) {
if (enumValue.value == value) {
return enumValue;
}
}
return null;
}
/**
* 根据枚举值获取枚举描述
*
* @param enums 枚举对象
* @param value 枚举值
* @returns 枚举描述
*/
static getLabelByValue(enums: any, value: any) {
const enumValues = Object.values(enums) as any;
for (let enumValue of enumValues) {
if (enumValue['value'] == value) {
return enumValue['label'];
}
}
return '';
}
}
export default EnumValue;