Blame view

ant-design-vue-jeecg/src/components/dict/JDictSelectUtil.js 3.81 KB
肖超群 authored
1
2
3
4
5
6
/**
 * 字典 util
 * author: scott
 * date: 20190109
 */
肖超群 authored
7
import {ajaxGetDictItems, getDictItemsFromCache} from '@/api/api'
肖超群 authored
8
9
10
11
12
13
14
15
16
17
18
19
import {getAction} from '@/api/manage'

/**
 * 获取字典数组
 * @param dictCode 字典Code
 * @return List<Map>
 */
export async function initDictOptions(dictCode) {
  if (!dictCode) {
    return '字典Code不能为空!';
  }
  //优先从缓存中读取字典配置
肖超群 authored
20
  if (getDictItemsFromCache(dictCode)) {
肖超群 authored
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
    let res = {}
    res.result = getDictItemsFromCache(dictCode);
    res.success = true;
    return res;
  }
  //获取字典数组
  let res = await ajaxGetDictItems(dictCode);
  return res;
}

/**
 * 字典值替换文本通用方法
 * @param dictOptions  字典数组
 * @param text  字典值
 * @return String
 */
export function filterDictText(dictOptions, text) {
  // --update-begin----author:sunjianlei---date:20200323------for: 字典翻译 text 允许逗号分隔 ---
  if (text != null && Array.isArray(dictOptions)) {
    let result = []
    // 允许多个逗号分隔,允许传数组对象
    let splitText
    if (Array.isArray(text)) {
      splitText = text
    } else {
      splitText = text.toString().trim().split(',')
    }
    for (let txt of splitText) {
      let dictText = txt
      for (let dictItem of dictOptions) {
        if (txt.toString() === dictItem.value.toString()) {
          dictText = (dictItem.text || dictItem.title || dictItem.label)
          break
        }
      }
      result.push(dictText)
    }
    return result.join(',')
  }
  return text
  // --update-end----author:sunjianlei---date:20200323------for: 字典翻译 text 允许逗号分隔 ---
}

/**
 * 字典值替换文本通用方法(多选)
 * @param dictOptions  字典数组
 * @param text  字典值
 * @return String
 */
export function filterMultiDictText(dictOptions, text) {
  //js “!text” 认为0为空,所以做提前处理
肖超群 authored
72
73
  if (text === 0 || text === '0') {
    if (dictOptions) {
肖超群 authored
74
75
76
77
78
79
80
81
      for (let dictItem of dictOptions) {
        if (text == dictItem.value) {
          return dictItem.text
        }
      }
    }
  }
肖超群 authored
82
  if (!text || text == 'null' || !dictOptions || dictOptions.length == 0) {
肖超群 authored
83
84
85
86
87
88
    return ""
  }
  let re = "";
  text = text.toString()
  let arr = text.split(",")
  dictOptions.forEach(function (option) {
肖超群 authored
89
90
    if (option) {
      for (let i = 0; i < arr.length; i++) {
肖超群 authored
91
        if (arr[i] === option.value) {
肖超群 authored
92
          re += option.text + ",";
肖超群 authored
93
94
95
96
97
          break;
        }
      }
    }
  });
肖超群 authored
98
  if (re == "") {
肖超群 authored
99
100
    return text;
  }
肖超群 authored
101
  return re.substring(0, re.length - 1);
肖超群 authored
102
103
104
105
106
107
108
109
}

/**
 * 翻译字段值对应的文本
 * @param children
 * @returns string
 */
export function filterDictTextByCache(dictCode, key) {
肖超群 authored
110
  if (key == null || key.length == 0) {
肖超群 authored
111
112
113
114
115
    return;
  }
  if (!dictCode) {
    return '字典Code不能为空!';
  }
肖超群 authored
116
117
  //优先从缓存中读取字典配置
  if (getDictItemsFromCache(dictCode)) {
肖超群 authored
118
    let item = getDictItemsFromCache(dictCode).filter(t => t["value"] == key)
肖超群 authored
119
    if (item && item.length > 0) {
肖超群 authored
120
121
122
123
124
125
126
      return item[0]["text"]
    }
  }
}

/** 通过code获取字典数组 */
export async function getDictItems(dictCode, params) {
肖超群 authored
127
128
129
130
131
  //优先从缓存中读取字典配置
  if (getDictItemsFromCache(dictCode)) {
    let desformDictItems = getDictItemsFromCache(dictCode).map(item => ({...item, label: item.text}))
    return desformDictItems;
  }
肖超群 authored
132
肖超群 authored
133
134
135
136
137
138
139
140
  //缓存中没有,就请求后台
  return await ajaxGetDictItems(dictCode, params).then(({success, result}) => {
    if (success) {
      let res = result.map(item => ({...item, label: item.text}))
      console.log('------- 从DB中获取到了字典-------dictCode : ', dictCode, res)
      return Promise.resolve(res)
    } else {
      console.error('getDictItems error: : ', res)
肖超群 authored
141
      return Promise.resolve([])
肖超群 authored
142
143
144
145
146
    }
  }).catch((res) => {
    console.error('getDictItems error: ', res)
    return Promise.resolve([])
  })
肖超群 authored
147
}