Skip to content

工具函数

@anyfu/dict-core 提供了一些工具函数,用于字典数据处理。

getDictItems<TDictItem, CKey>(dict, options?)

获取某一字典配置的具体字典列表数据。

范型

  • TDictItem: 字典项数据类型
  • CKey: 子项数字段名

参数

参数说明类型默认值
dict字典数据Record<string, TDictItem>
options.childrenKey数据字段名stringchildren
options.disabledKey禁用字段名stringdisabled
options.enabledKey可用字段名stringenabled
options.enabledOnly只返回启用项booleanfalse
options.enabledOn自定义启用判断(item) => booleanitem[enabledKey]='1' || item[disabledKey] === true

示例:

下面示例中, getDictItems实际获取的数据是children下的数据。

loading

getDictLabel<TDictItem>(value, dictList, options?)

根据字典的编码获取 label 文本。

参数说明类型默认值
value字典编码值string | number
dictList字典列表数据TDictItem
options.labelKey标签 keystringlabel
options.valueKey字典编码 keystringvalue
options.placeholder空值占位符string-

示例

loading

listToTree<TDictItem, TNodeItem>(list, options?)

扁平列表数据转树结构数据。

范型

  • TDictItem: 字典项数据类型
  • TNodeItem: 树节点数据类型

参数

参数说明类型默认值
list数据列表TDictItem[]
options.idKeyid 源字段名stringid
options.parentIdKey父级 id 源字段名stringparentId
options.labelRawKeylabel 源字段名stringlabel
options.valueRawKeyvalue 源字段名stringvalue
options.enabledRawKey可用源字段名stringenabled
options.disabledRawKey禁用源字段名stringdisabled
options.labelKeylabel 结果字段名stringlabel
options.valueKeyvalue 结果字段名stringvalue
options.disabledKey输出启用字段名stringdisabled
options.childrenKey子项数据结果字段名stringchildren
options.enabledOn自定义启用判断(item: TDictItem) => booleanitem[enabledRawKey]='1' || item[disabledRawKey] === true
options.maxLevel最大层级, 不设置表示无限制number
options.cleanSource映射后删除源字段booleantrue

示例

loading

treeToArray<TNodeItem, TDictItem>(list, options?)

树结构数据转扁平数组数据。

范型

  • TNodeItem: 树节点数据类型
  • TDictItem: 返回字典结果数据类型

参数

参数说明类型默认值
tree树结构数据TNodeItem[]
options.idKeyid 字段名stringid
options.labelRawKeylabel 源字段名stringlabel
options.valueRawKeyvalue 源字段名stringvalue
options.disabledRawKeydisabled 源字段名stringdisabled
options.childrenRawKeychildren 源字段名stringchildren
options.labelKeylabel 结果字段名stringlabel
options.valueKeyvalue 结果字段名stringvalue
options.disabledKeydisabled 结果字段名stringdisabled
options.childrenKeychildren 结果字段名stringchildren
options.levelKeylevel 结果字段名stringlevel
options.parentKeyparent 结果字段名stringparentId
options.idKeyid 字段名stringid
options.transformer转换器, 可扩展处理(node: TNodeItem, dictItem: TDictItem, cleanSource?: boolean) => void
options.maxLevel最大层级number
options.cleanSource映射后删除源字段booleantrue

示例

loading

transformToOptions<TData, KLabel, KValue>(data, options?)

将枚举 或 普通对象转换为选项数据列表数据。

范型

  • TData: 源数据类型
  • KLabel: label 结果字段名
  • KValue: value 结果字段名
  • TExtra: 额外属性

参数

参数说明类型默认值
data树结构数据TData | Record<string, any>
options.labelKeylabel 字段名KLabel | stringlabel
options.valueKeyvalue 字段名KValue | stringvalue
options.transformLabellabel 转换函数(key, value) => string
options.transformValuevalue 转换函数(可选)(value, key) => string
options.extra额外属性(value, key) => Record<string, any>

示例

loading

TIP

transformLabel, transformValue 在需要转换 label 或 value 的值时使用, 甚至添加额外的属性。

如下面示例代码, 通过transformLabellabel禁用的文案改成停用, 通过transformValuevalue改为数字类型, 通过extra添加额外的属性。

ts
const STATUS_OBJ = {
  启用: '1',
  禁用: '0',
};

const options = transformToOptions(STATUS_OBJ, {
  transformLabel: (key, value) => {
    if (key === '禁用') {
      return '停用';
    }
    return key;
  },
  transformValue: (value, key) => {
    return Number(value);
  },
  extra: (key, value) => {
    return {
      disabled: value === '0',
    };
  }
});


// 没加转换器的结果:
// [
//   { label: '启用', value: '1' },
//   { label: '禁用', value: '0' },
// ]

// 加转换器的结果:
// [
//   { label: '启用', value: 1, disabled: false },
//   { label: '停用', value: 0}, disabled: true },
// ]

getOptionLabel<TData>(value, list, options?)

获取选项的 label 文案。

范型

  • TData: 源数据类型

参数

参数说明类型默认值
valuestring | number
list数据列表(TData | Record<string, any>)[]
options.labelKeylabel 转换函数keyof TDatalabel
options.valueKeylabel 转换函数keyof TDatavalue
options.placeholder空值占位符string-

示例

ts
const options = [
  { label: '启用', value: '1' },
  { label: '禁用', value: '0' },
];

const label = getOptionLabel('1', options);
console.log(label);
// 打印结果是: 启用

示例代码可以查看 API - transformToOptions中的示例。