RuoYi
2022-07-20 cafff38a6e86e7f6db12d3b4405b0c0d52082e52
优化字典数据使用store存取
已修改4个文件
已添加1个文件
81 ■■■■■ 文件已修改
src/store/modules/app.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/dict.js 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/dict.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dict/data.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dict/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/app.js
@@ -1,6 +1,5 @@
import Cookies from 'js-cookie'
const useAppStore = defineStore(
  'app',
  {
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
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 @@
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);
  })()
src/views/system/dict/data.vue
@@ -185,6 +185,7 @@
</template>
<script setup name="Data">
import useDictStore from '@/store/modules/dict'
import { optionselect as getDictOptionselect, getType } from "@/api/system/dict/type";
import { listData, getData, delData, addData, updateData } from "@/api/system/dict/data";
@@ -319,12 +320,14 @@
    if (valid) {
      if (form.value.dictCode != undefined) {
        updateData(form.value).then(response => {
          useDictStore().removeDict(queryParams.value.dictType);
          proxy.$modal.msgSuccess("淇敼鎴愬姛");
          open.value = false;
          getList();
        });
      } else {
        addData(form.value).then(response => {
          useDictStore().removeDict(queryParams.value.dictType);
          proxy.$modal.msgSuccess("鏂板鎴愬姛");
          open.value = false;
          getList();
@@ -341,6 +344,7 @@
  }).then(() => {
    getList();
    proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
    useDictStore().removeDict(queryParams.value.dictType);
  }).catch(() => {});
}
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
src/views/system/dict/index.vue
@@ -182,6 +182,7 @@
</template>
<script setup name="Dict">
import useDictStore from '@/store/modules/dict'
import { listType, getType, delType, addType, updateType, refreshCache } from "@/api/system/dict/type";
const { proxy } = getCurrentInstance();
@@ -313,6 +314,7 @@
function handleRefreshCache() {
  refreshCache().then(() => {
    proxy.$modal.msgSuccess("鍒锋柊鎴愬姛");
    useDictStore().cleanDict();
  });
}