import { useQuery, useQueryClient } from '@tanstack/vue-query';
|
import * as dictionaryServices from '@12333/services/apiV2/dictionary';
|
import { MaybeRef, unref, computed } from 'vue';
|
import { CategoryCode } from '@12333/constants';
|
|
export function useGetDictionaryCategorySelect() {
|
const { data: dictionaryCategoryList, refetch } = useQuery({
|
queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
|
queryFn: async () => {
|
let res = await dictionaryServices.getDictionaryCategorySelect({}, { showLoading: false });
|
return res.map((x) => ({
|
...x,
|
fieldNamesMap: x.data.fieldNames ? JSON.parse(x.data.fieldNames) : {},
|
}));
|
},
|
placeholderData: () => [] as API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[],
|
});
|
|
const queryClient = useQueryClient();
|
|
function ensureQueryData() {
|
return queryClient.ensureQueryData<
|
API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[]
|
>({
|
queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
|
});
|
}
|
|
function getDictionaryCategoryById(id: string) {
|
return dictionaryCategoryList.value.find((x) => x.data?.id === id);
|
}
|
|
function getDictionaryCategoryByCode(code: string) {
|
return dictionaryCategoryList.value.find((x) => x.data?.code === code);
|
}
|
|
function getDictionaryCategoryNameByCode(code: string) {
|
return getDictionaryCategoryByCode(code)?.label ?? '';
|
}
|
|
return {
|
dictionaryCategoryList,
|
ensureQueryData,
|
getDictionaryCategoryById,
|
getDictionaryCategoryNameByCode,
|
getDictionaryCategoryByCode,
|
};
|
}
|
|
type UseDictionaryDataSelectOptions = {
|
categoryId?: MaybeRef<string>;
|
categoryCode?: MaybeRef<CategoryCode>;
|
parentId?: MaybeRef<string>;
|
staleTime?: number;
|
/** 关键字 */
|
keywords?: MaybeRef<string>;
|
/** 查询所有 */
|
all?: MaybeRef<boolean>;
|
maxDeep?: number;
|
};
|
|
export function useDictionaryDataSelect({
|
categoryId,
|
categoryCode,
|
parentId,
|
staleTime,
|
keywords,
|
all,
|
maxDeep,
|
}: UseDictionaryDataSelectOptions) {
|
const params = computed(() => ({
|
categoryId: unref(categoryId),
|
categoryCode: unref(categoryCode),
|
parentId: unref(parentId),
|
keywords: unref(keywords),
|
all: unref(all),
|
maxDeep: maxDeep,
|
}));
|
const { data: dictionaryDataList, refetch } = useQuery({
|
queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
|
queryFn: async () => {
|
let res = await dictionaryServices.getDictionaryDataSelect(params.value, {
|
showLoading: false,
|
});
|
return res.map((x) => ({
|
...x,
|
code: x.data?.code ?? '',
|
}));
|
},
|
placeholderData: () => [] as API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[],
|
staleTime,
|
});
|
|
function getDictionaryDataNameById(id: string) {
|
return dictionaryDataList.value?.find((x) => x.data?.id === id)?.label;
|
}
|
|
function getDictionaryDataByCode(code: string) {
|
return dictionaryDataList.value?.find((x) => x.data?.code === code);
|
}
|
|
function getDictionaryDataNameByCode(code: string) {
|
return getDictionaryDataByCode(code)?.label ?? '';
|
}
|
|
const queryClient = useQueryClient();
|
|
function ensureQueryData() {
|
return queryClient.ensureQueryData<
|
API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]
|
>({
|
queryKey: ['dictionaryServices/getDictionaryDataSelect'],
|
});
|
}
|
|
function updateDictionaryDataSelect(categoryId?: string) {
|
queryClient.invalidateQueries({
|
queryKey: ['dictionaryServices/getDictionaryDataSelect'],
|
});
|
}
|
|
return {
|
dictionaryDataList,
|
ensureQueryData,
|
refetch,
|
getDictionaryDataNameById,
|
getDictionaryDataNameByCode,
|
getDictionaryDataByCode,
|
updateDictionaryDataSelect,
|
};
|
}
|