// import { useAreaStore } from '@/store/modules/area';
|
// import { AreaType } from '@/constants';
|
// import { CascaderProps } from 'element-plus';
|
// import { splitAreaTree } from '@/utils';
|
|
// /**
|
// * 获取完整的地区数据树
|
// */
|
// export function useCompleteArea() {
|
// const useArea = useAreaStore();
|
// const { completeAreaTree } = storeToRefs(useArea);
|
|
// onMounted(() => {
|
// useArea.getCompleteAreaTree();
|
// });
|
|
// const areaTreeProps = {
|
// children: 'children',
|
// label: 'areaName',
|
// value: 'areaCode',
|
// };
|
|
// return {
|
// areaTree: completeAreaTree,
|
// areaTreeProps,
|
// getAreaTree: useArea.getCompleteAreaTree,
|
// getAreaNameByAreaCodeWithParentName: useArea.getAreaNameByAreaCodeWithParentName,
|
// };
|
// }
|
|
// type UseAreaByCascaderOptions = {
|
// layer?: AreaType;
|
// };
|
|
// /**
|
// * @description 联级选择中使用
|
// */
|
// export function useAreaByCascader(options: UseAreaByCascaderOptions = {}) {
|
// const { layer = AreaType.Area } = options;
|
|
// const areaStore = useAreaStore();
|
|
// // const { completeAreaList } = storeToRefs(areaStore);
|
|
// // onMounted(() => {
|
// // areaStore.getCompleteAreaTree();
|
// // });
|
|
// return computed(() => ({
|
// // options: layer
|
// // ? (formatAreaListToTree(completeAreaList.value, 0, layer) as any[])
|
// // : completeAreaTree.value,
|
// // props: {
|
// // label: 'areaName',
|
// // value: 'areaCode',
|
// // },
|
// props: {
|
// label: 'areaName',
|
// value: 'areaCode',
|
// lazy: true,
|
// async lazyLoad(node, resolve) {
|
// const { level, data } = node;
|
// const completeAreaList = await areaStore.getCompleteAreaTree();
|
// let areas = completeAreaList.filter((x) =>
|
// level ? x.parentCode === data.areaCode : !x.parentCode
|
// );
|
// return resolve(
|
// areas.map((x) => ({
|
// ...x,
|
// leaf: x.layer >= layer,
|
// }))
|
// );
|
// },
|
// } as CascaderProps,
|
// }));
|
// }
|
|
// export type UseAllAreaListOptions = {
|
// immediate?: boolean;
|
// };
|
|
// export function useAllAreaList(options: UseAllAreaListOptions = {}) {
|
// const { immediate = true } = options;
|
// const areaStore = useAreaStore();
|
|
// onMounted(() => {
|
// if (immediate) {
|
// areaStore.getCompleteAreaTree();
|
// }
|
// });
|
|
// const findAreaCodeFromName = (areaName: string) => {
|
// const areaItem = areaStore.completeAreaList.find((x) => x.areaName === areaName);
|
// return areaItem?.areaCode ?? 0;
|
// };
|
|
// const findAreaNameFromCode = (areaCode: number) => {
|
// const areaItem = areaStore.completeAreaList.find((x) => x.areaCode === areaCode);
|
// return areaItem?.areaName ?? '';
|
// };
|
|
// const findAreaItemFromCode = (areaCode: number) => {
|
// const areaItem = areaStore.completeAreaList.find((x) => x.areaCode === areaCode);
|
// return areaItem;
|
// };
|
|
// return {
|
// findAreaCodeFromName,
|
// findAreaNameFromCode,
|
// findAreaItemFromCode,
|
// };
|
// }
|
|
// export function useProvinceList() {
|
// const areaStore = useAreaStore();
|
|
// const { provinceList } = storeToRefs(areaStore);
|
|
// onMounted(() => {
|
// areaStore.getCompleteAreaTree();
|
// });
|
|
// return {
|
// provinceList,
|
// };
|
// }
|
|
// type UseAreaByTreeSelectOptions = {
|
// maxLevel?: number;
|
// };
|
|
// export function useAreaByTreeSelect(options: UseAreaByTreeSelectOptions = {}) {
|
// const { maxLevel = 2 } = options;
|
// const useArea = useAreaStore();
|
// const { completeAreaTree } = storeToRefs(useArea);
|
|
// onMounted(() => {
|
// useArea.getCompleteAreaTree();
|
// });
|
|
// const areaTree = computed(() => splitAreaTree(completeAreaTree.value, maxLevel));
|
|
// const treeSelectProps = computed(() => ({
|
// data: areaTree.value,
|
// props: {
|
// label: 'areaName',
|
// children: 'children',
|
// isLeaf: 'leaf',
|
// },
|
// renderAfterExpand: false,
|
// valueKey: 'areaCode',
|
// }));
|
|
// return {
|
// treeSelectProps: treeSelectProps,
|
// areaTree,
|
// };
|
// }
|
|
// export function useAreaSelect(provinceId: Ref<number>, cityId: Ref<number>, countyId: Ref<number>) {
|
// const useArea = useAreaStore();
|
// const { completeAreaList } = storeToRefs(useArea);
|
|
// const { provinceList } = useProvinceList();
|
|
// watch(provinceId, async () => {
|
// await nextTick();
|
// if (cityList.value.every((city) => city.areaCode !== cityId.value)) {
|
// cityId.value = '' as any as number;
|
// }
|
// });
|
|
// watch(cityId, async () => {
|
// await nextTick();
|
// if (countyList.value.every((area) => area.areaCode !== countyId.value)) {
|
// countyId.value = '' as any as number;
|
// }
|
// });
|
|
// const cityList = computed(() =>
|
// completeAreaList.value.filter((x) => x.parentCode === provinceId.value)
|
// );
|
// const countyList = computed(() =>
|
// completeAreaList.value.filter((x) => x.parentCode === cityId.value)
|
// );
|
|
// return {
|
// provinceList: provinceList,
|
// cityList: cityList,
|
// countyList: countyList,
|
// };
|
// }
|