Blame view

common/utils/dict.js 2.3 KB
83208d2e   刘淇   字典翻译
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  import globalConfig from '@/common/config/global';
  import cache from '@/common/utils/cache';
  import { useUserStore } from '@/pinia/user';
  
  /**
   * 内部辅助函数:获取完整字典数据(优先从userStore,其次缓存)
   * @returns {Array} 字典数组
   */
  const getDictData = () => {
    const userStore = useUserStore();
    // 优先取userStore中的字典,无则从缓存取,兜底空数组
    return userStore.dictData || cache.get(globalConfig.cache.dictDataKey) || [];
  };
  
  /**
   * 获取指定dictType的所有字典项
   * @param {string} dictType 字典类型(如:ai_image_status
   * @returns {Array} 对应字典类型的[{value, label, ...}]数组
   */
  export const getDictList = (dictType) => {
    if (!dictType) return [];
    const dictData = getDictData();
    // 过滤时增加空值保护,避免filter报错
    return Array.isArray(dictData) ? dictData.filter(item => item?.dictType === dictType) : [];
  };
  
  /**
   * 根据dictTypevalue获取对应的label
   * @param {string} dictType 字典类型
   * @param {string|number} value 字典值
   * @returns {string} 对应的label(未找到返回空字符串)
   */
  export const getDictLabel = (dictType, value) => {
    if (!dictType || value === undefined || value === null) return '';
    const dictData = getDictData();
    if (!Array.isArray(dictData)) return '';
  
    const targetItem = dictData.find(
      item => item?.dictType === dictType && String(item?.value) === String(value)
    );
    return targetItem?.label || '';
  };
  
  /**
   * 根据dictTypelabel获取对应的value
   * @param {string} dictType 字典类型
   * @param {string} label 字典标签
   * @returns {string} 对应的value(未找到返回空字符串)
   */
  export const getDictValue = (dictType, label) => {
    if (!dictType || !label) return '';
    const dictData = getDictData();
    if (!Array.isArray(dictData)) return '';
  
    const targetItem = dictData.find(
      item => item?.dictType === dictType && item?.label === label
    );
    return targetItem?.value || '';
  };
  
  /**
   * 获取指定dictType的字典项,仅返回{value, label}结构的简化数组
   * @param {string} dictType 字典类型
   * @returns {Array} 简化后的[{value, label}]数组
   */
  export const getDictSimpleList = (dictType) => {
    return getDictList(dictType).map(item => ({
      value: item.value || '',
      label: item.label || ''
    }));
  };