export default {
  instance: null,
  init(instance) {
    this.instance = instance
  },
  dicts() {
    return uni.getStorageSync('dicts') || [];
  },
  load(...code) {
    return !!this.instance && this.instance.post('/admin/dictionary/queryValsByCodeList?codeList=' + code.join(','), null, {
      withoutToken: true
    }).then((res) => {
      if (res && res.data) {
        let cacheDicts = {},
            meta = {};
        this.dicts().map((e) => (cacheDicts[e.key] = e));
        res.data.map((e) => (meta[e.key] = e));
        let dicts = {...cacheDicts, ...meta};
        uni.setStorageSync('dicts', Object.values(dicts));
      }
    });
  },
  getDict(key) {
    if (this.dicts().length) {
      let dict = this.dicts().find((e) => e.key == key);
      return dict ? dict.values : [];
    } else return [];
  },
  getValue(key, label) {
    if (this.dicts().length) {
      let dict = this.dicts().find((e) => e.key == key);
      if (dict) {
        let item = dict.values.find((v) => v.dictName == label);
        return item ? item.dictValue : label;
      } else return label;
    } else return label;
  },
  getLabel(key, value) {
    if (this.dicts().length) {
      let dict = this.dicts().find((e) => e.key == key);
      if (dict) {
        let item = dict.values.find((v) => v.dictValue == value);
        return item ? item.dictName : value;
      } else return value ? value : '';
    } else return value ? value : '';
  },
  getColor(key, value) {
    if (this.dicts().length) {
      let dict = this.dicts().find((e) => e.key == key);
      if (dict) {
        let item = dict.values.find((v) => v.dictValue == value);
        return item ? item.dictColor : value;
      } else return value;
    } else return value;
  }
}
