| // import { store } from '@/store'; | 
| // import { defineStore } from 'pinia'; | 
| // import { formatAreaListToTree } from '@/utils'; | 
| // import * as areaServices from '@/services/api/Area'; | 
|   | 
| // export interface AreaState { | 
| //   /** | 
| //    * 完整的地区数据树 | 
| //    */ | 
| //   completeAreaTree: API.AreaTreeNode[]; | 
| //   /** | 
| //    * 打平的完整的地区 | 
| //    */ | 
| //   completeAreaList: API.AreaDto[]; | 
| //   completeAreaTreeDone: boolean; | 
| //   /** | 
| //    * 多个select分步获取地区数据 | 
| //    */ | 
| //   provinceList: API.AreaDto[]; | 
| //   /** | 
| //    * 储存areaCode下面的子集 | 
| //    */ | 
| //   areaMap: Record<API.AreaDto['areaCode'], API.AreaDto[]>; | 
| //   /** | 
| //    * 根据areaCode储存单个area数据 | 
| //    */ | 
| //   areaItemMap: Record<API.AreaDto['areaCode'], API.AreaDto>; | 
| // } | 
|   | 
| // export const useAreaStore = defineStore({ | 
| //   id: 'area', | 
| //   state: (): AreaState => ({ | 
| //     completeAreaTree: [], | 
| //     completeAreaTreeDone: false, | 
| //     completeAreaList: [], | 
| //     //---------------------------------- | 
| //     provinceList: [], | 
| //     areaMap: {}, | 
| //     areaItemMap: {}, | 
| //   }), | 
| //   getters: { | 
| //     getAreaFromCompleteAreaList(state) { | 
| //       return (areaCode: number) => state.completeAreaList.find((x) => x.areaCode === areaCode); | 
| //     }, | 
| //     getAreaByAreaCode(state) { | 
| //       return (areaCode: number) => state.areaItemMap[areaCode]; | 
| //     }, | 
| //     getAreaNameByAreaCode() { | 
| //       return (areaCode: number) => { | 
| //         const area = this.getAreaByAreaCode(areaCode); | 
| //         return area ? area.areaName : ''; | 
| //       }; | 
| //     }, | 
| //     getAreaNameByAreaCodeWithParentName() { | 
| //       return (areaCode: number) => { | 
| //         const area = this.getAreaByAreaCode(areaCode); | 
| //         if (area?.parentCode) { | 
| //           const parent = this.getAreaByAreaCode(area.parentCode); | 
| //           return parent ? `${parent.areaName}${area.areaName}` : ''; | 
| //         } else { | 
| //           return area ? area.areaName : ''; | 
| //         } | 
| //       }; | 
| //     }, | 
| //   }, | 
|   | 
| //   actions: { | 
| //     async getCompleteAreaTree() { | 
| //       try { | 
| //         if (!this.completeAreaList.length) { | 
| //           const res = await areaServices.getAreaList({ | 
| //             showLoading: false, | 
| //           }); | 
| //           this.completeAreaTreeDone = true; | 
| //           const completeAreaList = res; | 
| //           this.completeAreaTree = formatAreaListToTree(completeAreaList, 0); | 
| //           this.completeAreaList = completeAreaList; | 
| //           this.provinceList = res.filter((x) => !x.parentCode); | 
| //           this.setAreaMap(res); | 
| //         } | 
| //         return this.completeAreaList; | 
| //       } catch (error) { | 
| //         throw error; | 
| //       } | 
| //     }, | 
|   | 
| //     setAreaMap(areaList: API.AreaDto[]) { | 
| //       areaList.forEach((item) => { | 
| //         this.areaItemMap[item.areaCode] = item; | 
| //       }); | 
| //     }, | 
| //   }, | 
| // }); | 
|   | 
| // export function useAreaStoreHook() { | 
| //   return useAreaStore(store); | 
| // } |