From cafff38a6e86e7f6db12d3b4405b0c0d52082e52 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期三, 20 七月 2022 19:38:44 +0800
Subject: [PATCH] 优化字典数据使用store存取
---
src/utils/dict.js | 17 ++++++--
src/store/modules/dict.js | 57 ++++++++++++++++++++++++++++
src/views/system/dict/data.vue | 4 ++
src/store/modules/app.js | 1
src/views/system/dict/index.vue | 2 +
5 files changed, 75 insertions(+), 6 deletions(-)
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 @@
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 @@
</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(() => {});
}
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue
index 1e54c29..d1f5d8a 100644
--- a/src/views/system/dict/index.vue
+++ b/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();
});
}
--
Gitblit v1.9.3