import * as searchSettingServices from '@/services/api/SearchSetting';
|
import { useQuery } from '@tanstack/vue-query';
|
import { useQueryClient } from '@tanstack/vue-query';
|
import { SearchType } from '@/constants';
|
|
type UseSearchSettingTypeOptions = {
|
searchType: number;
|
belongType?: number;
|
/**
|
* @deprecated
|
*/
|
isSelf?: boolean;
|
onSuccess?: (data: API.GetTypeSearchSettingList[]) => any;
|
/**不传查全部,true查显示的 */
|
status?: boolean;
|
};
|
|
export function useSearchSettingType({
|
searchType,
|
belongType = null,
|
onSuccess,
|
isSelf,
|
status = true,
|
}: UseSearchSettingTypeOptions) {
|
const { data, refetch } = useQuery({
|
queryKey: [
|
'searchSettingServices/getTypeSearchSettingList',
|
{ searchType, belongType, isSelf },
|
],
|
queryFn: async () => {
|
return await searchSettingServices.getTypeSearchSettingList(
|
{
|
searchType: searchType,
|
belongType: belongType,
|
status,
|
},
|
{ showLoading: false }
|
);
|
},
|
placeholderData: () => [] as API.GetTypeSearchSettingList[],
|
onSuccess(data) {
|
onSuccess?.(data);
|
},
|
});
|
|
const queryClient = useQueryClient();
|
|
async function ensureSearchSettingType() {
|
return await queryClient.ensureQueryData({
|
queryKey: [
|
'searchSettingServices/getTypeSearchSettingList',
|
{ searchType: searchType, belongType: belongType },
|
],
|
});
|
}
|
|
function getSearchSettingTypeNameById(id: string) {
|
return data.value.find((x) => x.id === id)?.name ?? '';
|
}
|
|
return {
|
searchSettingTypeList: data,
|
ensureSearchSettingType,
|
refetchSearchSettingType: refetch,
|
getSearchSettingTypeNameById,
|
};
|
}
|
|
type UseAllSearchSettingList = API.GetSearchSettingListInput & {
|
enabled?: boolean | Ref<boolean>;
|
};
|
|
export function useAllSearchSettingList(options: UseAllSearchSettingList) {
|
const { enabled = true, ...params } = options;
|
|
const { data: allSearchSettingList } = useQuery({
|
queryKey: ['searchSettingServices/getSearchSettingDto', params],
|
queryFn: async () => {
|
return await searchSettingServices.getAllSearchSettingList(params, { showLoading: false });
|
},
|
initialData: () => [] as API.GetSearchSettingList[],
|
enabled,
|
});
|
|
return {
|
allSearchSettingList,
|
};
|
}
|
|
type UseWorkOfTypeOptions = {
|
enabled?: boolean | Ref<boolean>;
|
};
|
|
export function useWorkOfType(options: UseWorkOfTypeOptions = {}) {
|
const { enabled = true } = options;
|
|
const { allSearchSettingList: industryCategoryList } = useAllSearchSettingList({
|
searchType: SearchType.IndustryCategory,
|
enabled,
|
status: true,
|
});
|
|
const { allSearchSettingList: flattenWorkOfTypeList } = useAllSearchSettingList({
|
searchType: SearchType.Work,
|
enabled,
|
status: true,
|
});
|
|
const workOfTypeList = computed<API.GetSearchSettingList[]>(() => {
|
if (industryCategoryList.value?.length > 0) {
|
let list = [];
|
industryCategoryList.value.forEach((x) => {
|
list.push({
|
...x,
|
children: flattenWorkOfTypeList.value.filter((w) => w.parentId === x.id),
|
});
|
});
|
return list;
|
}
|
return [];
|
});
|
|
function getWorkOfTypeNameById(id: string) {
|
return flattenWorkOfTypeList.value.find((x) => x.id === id)?.name ?? '';
|
}
|
|
const MaxSelectWorkOfTypeLimit = 6;
|
|
return {
|
workOfTypeList: workOfTypeList,
|
flattenWorkOfTypeList,
|
getWorkOfTypeNameById,
|
MaxSelectWorkOfTypeLimit,
|
};
|
}
|