dic.js 1.84 KB
import { getDicByCodeApi } from '@/api/base.js';

/**
 * 获取单个字典数据(无缓存版本)
 * @param {string} code
 * @returns {Promise<Array>}
 */
export function getDicByCode(code) {
  return getDicByCodeApi(code);
}

/**
 * 批量获取多个字典数据(无缓存版本)
 * @param {string[]} codes
 * @returns {Promise<Object>}
 */
export function getDicByCodes(codes) {
  const list = Array.isArray(codes) ? codes : [];
  const promises = list.map(code => getDicByCodeApi(code));
  return Promise.all(promises).then(results => {
    const result = {};
    list.forEach((code, index) => {
      result[code] = results[index] || [];
    });
    return result;
  });
}

/**
 * 获取字典项的名称(需要传入字典项数组)
 * @param {string} code 字典编码(仅用于标识,实际不使用)
 * @param {string} value 字典值
 * @param {Array} items 字典项数组
 * @returns {string}
 */
export function getDicName(code, value, items = []) {
  const list = Array.isArray(items) ? items : [];
  const item = list.find(it => it && it.code === value);
  return item ? item.name : value;
}

export function getAuditStatusName(value, items = []) {
  return getDicName('AUDIT_STATUS', value, items);
}

export async function getAuditStatusOptions() {
  const results = await getDicByCodes(['AUDIT_STATUS']);
  return (results.AUDIT_STATUS && results.AUDIT_STATUS.data) || [];
}

export async function fillStandardApprovedName(detail = {}) {
  const items = await getAuditStatusOptions();
  const name = getAuditStatusName(detail && detail.standardApproved, items);
  return { ...detail, standardApprovedName: name };
}

export async function fillFormalApprovedName(detail = {}) {
  const items = await getAuditStatusOptions();
  const name = getAuditStatusName(detail && detail.formalApproved, items);
  return { ...detail, formalApprovedName: name };
}