import {defineStore} from "pinia"; import {readonly} from "vue"; import {frontGetAllSysLabelsForQd} from "@/api/modules/web/list"; export const useWebStore = defineStore('web', { state: () => ({ searchAreaTree: [] }), getters: { searchAreaIndexTotal() { let num = 0 this.searchAreaTree.forEach(v => { v.children?.forEach(c => { num++ }) }) return num }, searchAreaTypeMap() { const map = new Map() this.searchAreaTree.forEach(v => { v.children?.forEach(c => { map.set(c.treeId, c.treeName) }) }) return map }, searchAreaIndexMap() { const map = new Map() const deep = (arr) => { arr.forEach(v => { if (v.children?.length > 0) { deep(v.children) } else { map.set(v.treeId, v) } }) } deep(this.searchAreaTree) return map }, }, actions: { getSearchAreaTree() { return new Promise(resolve => { frontGetAllSysLabelsForQd().then(res => { this.searchAreaTree = readonly(res.data.filter(tag => tag.sysLabels?.length > 0).map(tag => { tag.treeId = tag.id tag.treeName = tag.labelName tag.children = tag.sysLabels?.filter(type => type.sysIndexList?.length > 0).map(type => { type.treeId = type.id type.treeName = type.labelName type.children = type.sysIndexList?.map(index => { index.treeId = index.indexTableName index.treeName = index.indexName return index }) return type }) return tag }).filter(tag => tag.children?.length > 0)) resolve(this.searchAreaTree) }) }) } }, })