From 50030f826efe2e1dbf3b3fbcb50cff6ff94c1559 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期日, 19 十月 2025 15:57:34 +0800
Subject: [PATCH] fix: 验收管理
---
packages/hooks/area.ts | 78 ++++++++++++++++++++++++++++-----------
1 files changed, 56 insertions(+), 22 deletions(-)
diff --git a/packages/hooks/area.ts b/packages/hooks/area.ts
index f8bd597..506b61d 100644
--- a/packages/hooks/area.ts
+++ b/packages/hooks/area.ts
@@ -1,24 +1,18 @@
import { flattenAreaTree, formatAreaListToTree } from '@12333/utils';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
-import { computed, onMounted, onUnmounted, ref } from 'vue';
+import { computed, MaybeRef, onMounted, onUnmounted, ref, unref } from 'vue';
import { AreaType, CategoryCode } from '@12333/constants';
import Taro, { EventChannel } from '@tarojs/taro';
import { useDictionaryDataSelect } from './dic';
+import axios from 'axios';
+import * as dictionaryServices from '@12333/services/apiV2/dictionary';
export function useArea() {
const queryClient = useQueryClient();
- const { dictionaryDataList } = useDictionaryDataSelect({
- categoryCode: CategoryCode.Area,
- staleTime: Infinity,
- all: true,
- maxDeep: AreaType.City,
- });
+ const { areaList } = useAllAreaList();
- const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode));
- console.log('areaList: ', areaList);
-
- const areaTree = computed(() => formatAreaListToTree(areaList.value));
+ // const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode));
function getAreaFromCompleteAreaList(areaCode: string) {
return areaList.value.find((x) => x.areaCode === areaCode);
@@ -31,20 +25,48 @@
return {
completeAreaList: areaList,
areaList,
- completeAreaTree: areaTree,
- provinceList: computed(() => areaList.value.filter((x) => x.layer === AreaType.Province)),
+ // completeAreaTree: areaTree,
+ // provinceList: computed(() => areaList.value.filter((x) => x.layer === AreaType.Province)),
getAreaFromCompleteAreaList,
getAreaByAreaCode,
};
+}
+
+type UseAreaTreeOptions = {
+ maxLayer?: MaybeRef<AreaType>;
+};
+
+export function useAreaTree(options = {} as UseAreaTreeOptions) {
+ const { maxLayer = AreaType.Area } = options;
+
+ // const { areaList } = useAllAreaList();
+
+ const { data: areaTree } = useQuery({
+ queryKey: ['dictionaryServices/getAreaSelect', maxLayer],
+ queryFn: () => {
+ return dictionaryServices.getAreaSelect(
+ {
+ maxDeep: unref(maxLayer),
+ },
+ { showLoading: false }
+ );
+ },
+ placeholderData: () => [] as API.GetAreaSelectQueryResultOption[],
+ staleTime: Infinity,
+ });
+
+ // const areaTree = computed(() => formatAreaListToTree(areaList.value, null, unref(maxLayer)));
+ console.log('areaTree: ', areaTree);
+
+ return { areaTree: areaTree };
}
function convertDictionaryToAreaTreeNode(
item: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption
) {
return {
- children: [],
areaCode: item.data?.code,
- parentCode: item.data?.field1,
+ parentCode: item.data?.parentCode,
areaName: item.label,
layer: Number(item.data?.field4),
quickQuery: item.data?.field2,
@@ -54,7 +76,19 @@
}
export function useAllAreaList() {
- const { areaList } = useArea();
+ const { data: areaList } = useQuery({
+ queryKey: ['area.txt'],
+ queryFn() {
+ return axios
+ .get<API.AreaTreeNode[]>(
+ 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/area.txt'
+ )
+ .then((res) => res.data);
+ },
+
+ placeholderData: () => [] as API.AreaTreeNode[],
+ staleTime: Infinity,
+ });
const findAreaCodeFromName = (areaName: string) => {
const areaItem = areaList.value.find((x) => x.areaName === areaName);
@@ -79,13 +113,13 @@
};
}
-export function useProvinceList() {
- const { provinceList } = useArea();
+// export function useProvinceList() {
+// const { provinceList } = useArea();
- return {
- provinceList,
- };
-}
+// return {
+// provinceList,
+// };
+// }
export const globalEventEmitter = new Taro.Events();
--
Gitblit v1.9.1