dictionary.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { findSysDictionary } from '@/api/sysDictionary'
  2. import { defineStore } from 'pinia'
  3. import { ref } from 'vue'
  4. export const useDictionaryStore = defineStore('dictionary', () => {
  5. const dictionaryMap = ref({})
  6. const setDictionaryMap = (dictionaryRes) => {
  7. dictionaryMap.value = { ...dictionaryMap.value, ...dictionaryRes }
  8. }
  9. const getDictionary = async(type) => {
  10. if (dictionaryMap.value[type] && dictionaryMap.value[type].length) {
  11. return dictionaryMap.value[type]
  12. } else {
  13. const res = await findSysDictionary({ type })
  14. if (res.code === 0) {
  15. const dictionaryRes = {}
  16. const dict = []
  17. res.data.resysDictionary.sysDictionaryDetails && res.data.resysDictionary.sysDictionaryDetails.forEach(item => {
  18. dict.push({
  19. label: item.label,
  20. value: item.value,
  21. extend: item.extend
  22. })
  23. })
  24. dictionaryRes[res.data.resysDictionary.type] = dict
  25. setDictionaryMap(dictionaryRes)
  26. return dictionaryMap.value[type]
  27. }
  28. }
  29. }
  30. return {
  31. dictionaryMap,
  32. setDictionaryMap,
  33. getDictionary
  34. }
  35. })