| | |
| | | import { flattenAreaTree, formatAreaListToTree } from '@12333/utils'; |
| | | import * as areaServices from '@12333/services/api/Area'; |
| | | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | import { computed, onMounted, onUnmounted, ref } from 'vue'; |
| | | import { AreaType } from '@12333/constants'; |
| | |
| | | const queryClient = useQueryClient(); |
| | | |
| | | const { data: areaStore } = useQuery({ |
| | | queryKey: ['areaServices/getRegionalManagementList'], |
| | | queryKey: ['flexWorkerServices/getAreaList'], |
| | | queryFn: async () => { |
| | | return await areaServices.getRegionalManagementList({ showLoading: false }); |
| | | return await flexWorkerServices.getAreaList({}, { showLoading: false }); |
| | | }, |
| | | placeholderData: () => [] as API.AreaInfo[], |
| | | placeholderData: () => [] as API.AreaDto[], |
| | | staleTime: Infinity, |
| | | select(data) { |
| | | const areaItemMap: Record<API.AreaInfo['areaCode'], API.AreaInfo> = {}; |
| | | const areaItemMap: Record<API.AreaDto['areaCode'], API.AreaDto> = {}; |
| | | data.forEach((item) => { |
| | | areaItemMap[item.areaCode] = item; |
| | | }); |
| | |
| | | return { |
| | | completeAreaList: computed(() => areaStore.value.completeAreaList), |
| | | completeAreaTree: computed(() => areaStore.value.completeAreaTree), |
| | | // cityAreaTree: computed(() => areaStore.value.cityAreaTree), |
| | | cityAreaTree: computed(() => |
| | | areaStore.value.completeAreaTree.map((x) => ({ |
| | | ...x, |
| | | children: x.children.map((y) => ({ |
| | | ...y, |
| | | children: undefined, |
| | | })), |
| | | })) |
| | | ), |
| | | provinceList: computed(() => areaStore.value.provinceList), |
| | | areaItemMap: computed(() => areaStore.value.areaItemMap), |
| | | getAreaFromCompleteAreaList, |
| | |
| | | } |
| | | |
| | | export function useAllAreaList() { |
| | | const { completeAreaTree, provinceList, completeAreaList } = useArea(); |
| | | const { completeAreaTree, provinceList, completeAreaList, cityAreaTree } = useArea(); |
| | | |
| | | const findAreaCodeFromName = (areaName: string) => { |
| | | const areaItem = completeAreaList.value.find((x) => x.areaName === areaName); |
| | |
| | | findAreaItemFromCode, |
| | | areaTreeList: completeAreaTree, |
| | | provinceList, |
| | | cityAreaTree, |
| | | }; |
| | | } |
| | | |