web.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import {defineStore} from "pinia";
  2. import {readonly} from "vue";
  3. import {frontGetAllSysLabelsForQd} from "@/api/modules/web/list";
  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. searchAreaIndexMap() {
  28. const map = new Map()
  29. const deep = (arr) => {
  30. arr.forEach(v => {
  31. if (v.children?.length > 0) {
  32. deep(v.children)
  33. } else {
  34. map.set(v.treeId, v)
  35. }
  36. })
  37. }
  38. deep(this.searchAreaTree)
  39. return map
  40. },
  41. },
  42. actions: {
  43. getSearchAreaTree() {
  44. return new Promise(resolve => {
  45. frontGetAllSysLabelsForQd().then(res => {
  46. this.searchAreaTree = readonly(res.data.filter(tag => tag.sysLabels?.length > 0).map(tag => {
  47. tag.treeId = tag.id
  48. tag.treeName = tag.labelName
  49. tag.children = tag.sysLabels?.filter(type => type.sysIndexList?.length > 0).map(type => {
  50. type.treeId = type.id
  51. type.treeName = type.labelName
  52. type.children = type.sysIndexList?.map(index => {
  53. index.treeId = index.indexTableName
  54. index.treeName = index.indexName
  55. return index
  56. })
  57. return type
  58. })
  59. return tag
  60. }).filter(tag => tag.children?.length > 0))
  61. resolve(this.searchAreaTree)
  62. })
  63. })
  64. }
  65. },
  66. })