/** * 字典 util * author: scott * date: 20190109 */ import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api' // import { getAction } from '@/api/manage' /** * 获取字典数组 * @param dictCode 字典Code * @return List */ export async function initDictOptions (dictCode) { if (!dictCode) { return '字典Code不能为空!' } // 优先从缓存中读取字典配置 if (getDictItemsFromCache(dictCode)) { const res = {} res.result = getDictItemsFromCache(dictCode) res.success = true return res } // 获取字典数组 return (await ajaxGetDictItems(dictCode)) } /** * 字典值替换文本通用方法 * @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)) { const result = [] // 允许多个逗号分隔,允许传数组对象 let splitText if (Array.isArray(text)) { splitText = text } else { splitText = text.toString().trim().split(',') } for (const txt of splitText) { let dictText = txt for (const 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为空,所以做提前处理 if (text === 0 || text === '0') { if (dictOptions) { for (const dictItem of dictOptions) { if ((text + '') === (dictItem.value + '')) { return dictItem.text } } } } if (!text || text === 'null' || !dictOptions || dictOptions.length === 0) { return '' } let re = '' text = text.toString() const arr = text.split(',') dictOptions.forEach(function (option) { if (option) { for (let i = 0; i < arr.length; i++) { if (arr[i] === option.value) { re += option.text + ',' break } } } }) if (re === '') { return text } return re.substring(0, re.length - 1) } /** * 翻译字段值对应的文本 * @returns string * @param dictCode * @param key */ export function filterDictTextByCache (dictCode, key) { if (key === null || key === undefined || key.length === 0) { return '' } if (!dictCode) { return '字典Code不能为空!' } // 优先从缓存中读取字典配置 if (getDictItemsFromCache(dictCode)) { const item = getDictItemsFromCache(dictCode).filter(t => t.value + '' === key + '') if (item && item.length > 0) { return item[0].text } } } /** 通过code获取字典数组 */ export async function getDictItems (dictCode, params) { // 优先从缓存中读取字典配置 if (getDictItemsFromCache(dictCode)) { return getDictItemsFromCache(dictCode).map(item => ({ ...item, label: item.text })) } // 缓存中没有,就请求后台 return await ajaxGetDictItems(dictCode, params).then(({ success, result }) => { if (success) { const res = result.map(item => ({ ...item, label: item.text })) console.log('------- 从DB中获取到了字典-------dictCode : ', dictCode, res) return Promise.resolve(res) } else { console.error('getDictItems error: : ', result) return Promise.resolve([]) } }).catch((res) => { console.error('getDictItems error: ', res) return Promise.resolve([]) }) }