import DataDict from '@/utils/vue-dict' import useBizDictStore from '@/store/modules/bizDict' import { getDicts as getDicts } from '@/api/system/dict/data' function searchDictByKey(dict, key) { if (key == null && key == "") { return null } try { for (let i = 0; i < dict.length; i++) { if (dict[i].key == key) { return dict[i].value } } } catch (e) { return null } } function install(app) { app.use(DataDict, { metas: { '*': { labelField: 'dictLabel', valueField: 'dictValue', request(dictMeta) { const storeDict = searchDictByKey(useBizDictStore().dict, dictMeta.type) if (storeDict) { return new Promise(resolve => { resolve(storeDict) }) } else { return new Promise((resolve, reject) => { getDicts(dictMeta.type).then(res => { useBizDictStore().setDict(dictMeta.type, res.data) resolve(res.data) }).catch(error => { reject(error) }) }) } }, }, }, }) } export default { install, }