import { getStore } from '@utils/store';

export const formatDict = (dict, dictValue) => {
  try {
    for (let i in dict) {
      if (dict[i].value === dictValue.toString()) {
        return dict[i].label;
      }
    }
    return dictValue;
  } catch (e) {
    return dictValue;
  }
};

export const selectDict = (dict, dictName, filter = []) => {
  let filterSet = new Set(filter);
  return dict[dictName].filter((o) => {
    return !filterSet.has(o.value);
  });
};
/**
 * 时间格式化
 * @param fmt  要格式化的格式
 * @param time  时间
 */
export const dateFormater = (fmt, time) => {
  if (time === '' || time === null || time === undefined) {
    return '';
  }
  let ret;
  let date = new Date(time);
  const opt = {
    'Y+': date.getFullYear().toString(), // 年
    'M+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'm+': date.getMinutes().toString(), // 分
    's+': date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  };
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt);
    if (ret) {
      fmt = fmt.replace(ret[1], ret[1].length === 1 ? opt[k] : opt[k].padStart(ret[1].length, '0'));
    }
  }
  return fmt;
};

/**
 * 数组扁平化
 * @param tree  要转换的树结构
 */
export const treeToArray = (tree) => {
  return tree.reduce((res, item) => {
    const { children, ...i } = item;
    return res.concat(i, children && children.length ? treeToArray(children) : []);
  }, []);
};
/**
 * 判断是否有权限
 * @param code
 */
export const hasAuthCode = (code) => {
  let permissions = getStore('permissions');
  return permissions.some(item => item === code);
};
