diff --git a/src/store/modules/app.js b/src/store/modules/app.js index fc34125..456ea78 100644 --- a/src/store/modules/app.js +++ b/src/store/modules/app.js @@ -1,6 +1,5 @@ import Cookies from 'js-cookie' - const useAppStore = defineStore( 'app', { diff --git a/src/store/modules/dict.js b/src/store/modules/dict.js new file mode 100644 index 0000000..7e62a67 --- /dev/null +++ b/src/store/modules/dict.js @@ -0,0 +1,57 @@ +const useDictStore = defineStore( + 'dict', + { + state: () => ({ + dict: new Array() + }), + actions: { + // 获取字典 + getDict(_key) { + if (_key == null && _key == "") { + return null; + } + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].key == _key) { + return this.dict[i].value; + } + } + } catch (e) { + return null; + } + }, + // 设置字典 + setDict(_key, value) { + if (_key !== null && _key !== "") { + this.dict.push({ + key: _key, + value: value + }); + } + }, + // 删除字典 + removeDict(_key) { + var bln = false; + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].key == _key) { + this.dict.splice(i, 1); + return true; + } + } + } catch (e) { + bln = false; + } + return bln; + }, + // 清空字典 + cleanDict() { + this.dict = new Array(); + }, + // 初始字典 + initDict() { + } + } + }) + +export default useDictStore diff --git a/src/utils/dict.js b/src/utils/dict.js index 0f9144a..40d0691 100644 --- a/src/utils/dict.js +++ b/src/utils/dict.js @@ -1,3 +1,4 @@ +import useDictStore from '@/store/modules/dict' import { getDicts } from '@/api/system/dict/data' /** @@ -6,11 +7,17 @@ import { getDicts } from '@/api/system/dict/data' export function useDict(...args) { const res = ref({}); return (() => { - args.forEach((d, index) => { - res.value[d] = []; - getDicts(d).then(resp => { - res.value[d] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })) - }) + args.forEach((dictType, index) => { + res.value[dictType] = []; + const dicts = useDictStore().getDict(dictType); + if (dicts) { + res.value[dictType] = dicts; + } else { + getDicts(dictType).then(resp => { + res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })) + useDictStore().setDict(dictType, res.value[dictType]); + }) + } }) return toRefs(res.value); })() diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data.vue index 37242f3..12c6492 100644 --- a/src/views/system/dict/data.vue +++ b/src/views/system/dict/data.vue @@ -185,6 +185,7 @@