Browse Source

优化字典数据使用store存取

RuoYi 2 years ago
parent
commit
cafff38a6e

+ 0 - 1
src/store/modules/app.js

@@ -1,6 +1,5 @@
 import Cookies from 'js-cookie'
 
-
 const useAppStore = defineStore(
   'app',
   {

+ 57 - 0
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

+ 12 - 5
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);
   })()

+ 4 - 0
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 @@ function submitForm() {
     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 @@ function handleDelete(row) {
   }).then(() => {
     getList();
     proxy.$modal.msgSuccess("删除成功");
+    useDictStore().removeDict(queryParams.value.dictType);
   }).catch(() => {});
 }
 /** 导出按钮操作 */

+ 2 - 0
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 handleExport() {
 function handleRefreshCache() {
   refreshCache().then(() => {
     proxy.$modal.msgSuccess("刷新成功");
+    useDictStore().cleanDict();
   });
 }