2025-06-25 16:04:02 +08:00

163 lines
4.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 字典 util
* author: scott
* date: 20190109
*/
import { ajaxGetDictItems, getDictItemsByCode } from './index';
/**
* 获取字典数组
* 【目前仅表单设计器页面使用该方法】
* @param dictCode 字典Code
* @param isTransformResponse 是否转换返回结果
* @return List<Map>
*/
export async function initDictOptions(dictCode, isTransformResponse = true) {
if (!dictCode) {
return '字典Code不能为空!';
}
//优先从缓存中读取字典配置
if (getDictItemsByCode(dictCode)) {
let res = {};
res.result = getDictItemsByCode(dictCode);
res.success = true;
if (isTransformResponse) {
return res.result;
} else {
return res;
}
}
//获取字典数组
return await ajaxGetDictItems(dictCode, {}, { isTransformResponse });
}
/**
* 字典值替换文本通用方法
* @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) {
// update-begin--author:liaozhiyang---date:20240524---for【TV360X-469】兼容数据null值防止报错
if (dictItem == null) continue;
if (dictItem.value == null) continue;
// update-end--author:liaozhiyang---date:20240524---for【TV360X-469】兼容数据null值防止报错
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 (let dictItem of dictOptions) {
if (text == dictItem.value) {
return dictItem.text;
}
}
}
}
if (!text || text == 'undefined' || text == 'null' || !dictOptions || dictOptions.length == 0) {
return '';
}
let re = '';
text = text.toString();
let 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);
}
/**
* 翻译字段值对应的文本
* @param children
* @returns string
*/
export function filterDictTextByCache(dictCode, key) {
if (key == null || key.length == 0) {
return;
}
if (!dictCode) {
return '字典Code不能为空!';
}
//优先从缓存中读取字典配置
if (getDictItemsByCode(dictCode)) {
let item = getDictItemsByCode(dictCode).filter((t) => t['value'] == key);
if (item && item.length > 0) {
return item[0]['text'];
}
}
}
/** 通过code获取字典数组 */
export async function getDictItems(dictCode, params) {
// update-begin--author:liaozhiyang---date:20230809---for【issues/668】JDictSelectUtil数据字典工具类中的getDictItems方法出错
//优先从缓存中读取字典配置
if (getDictItemsByCode(dictCode)) {
let desformDictItems = getDictItemsByCode(dictCode).map((item) => ({
...item,
label: item.text,
}));
return Promise.resolve(desformDictItems);
}
//缓存中没有,就请求后台
return await ajaxGetDictItems(dictCode, params)
.then((result) => {
if (result.length) {
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);
return Promise.resolve([]);
}
})
.catch((res) => {
console.error('getDictItems error: ', res);
return Promise.resolve([]);
});
// update-end--author:liaozhiyang---date:20230809---for【issues/668】JDictSelectUtil数据字典工具类中的getDictItems方法出错
}