web.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {defineStore} from "pinia";
  2. import {mockGetSearchArea} from "@/api/modules/mock/mock";
  3. import {readonly} from "vue";
  4. export const useWebStore = defineStore('web', {
  5. state: () => ({
  6. searchAreaTree: []
  7. }),
  8. getters: {
  9. searchAreaIndexTotal() {
  10. let num = 0
  11. this.searchAreaTree.forEach(v => {
  12. v.children?.forEach(c => {
  13. num++
  14. })
  15. })
  16. return num
  17. },
  18. searchAreaTypeMap() {
  19. const map = new Map()
  20. this.searchAreaTree.forEach(v => {
  21. v.children?.forEach(c => {
  22. map.set(c.treeId, c.treeName)
  23. })
  24. })
  25. return map
  26. },
  27. },
  28. actions: {
  29. getSearchAreaTree() {
  30. return new Promise(resolve => {
  31. mockGetSearchArea().then(res => {
  32. this.searchAreaTree = readonly(res.data.map(v => {
  33. v.treeId = v.name
  34. v.treeName = v.name
  35. v.children?.forEach(c => {
  36. c.treeId = c.indexKey
  37. c.treeName = c.indexName
  38. c.children.forEach(s => {
  39. s.treeId = s.indexKey
  40. s.treeName = s.indexName
  41. })
  42. })
  43. return v
  44. }))
  45. resolve(this.searchAreaTree)
  46. })
  47. })
  48. }
  49. },
  50. })