| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /**
- * 字典 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) {
- 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) {
- //优先从缓存中读取字典配置
- if (getDictItemsByCode(dictCode)) {
- let desformDictItems = getDictItemsByCode(dictCode).map((item) => ({
- ...item,
- label: item.text,
- }));
- return desformDictItems;
- }
- //缓存中没有,就请求后台
- 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);
- return Promise.resolve([]);
- }
- })
- .catch((res) => {
- console.error('getDictItems error: ', res);
- return Promise.resolve([]);
- });
- }
|