| | |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | import * as standardServiceServices from '@12333/services/apiV2/standardService'; |
| | | import { computed, MaybeRef, unref } from 'vue'; |
| | | import * as standardOrderServices from '@12333/services/apiV2/standardOrder'; |
| | | import { computed, MaybeRef, reactive, unref } from 'vue'; |
| | | import { groupBy } from 'lodash'; |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { |
| | | EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus, |
| | | EnumGetStandardOrdersQueryScene, |
| | | EnumGetStandardOrdersQuerySupplierEnterpriseOrderStatus, |
| | | EnumStandardOrderAppointmentStatus, |
| | | EnumStandardOrderPayStatus, |
| | | } from '@12333/constants'; |
| | | |
| | | type UseStandardServiceDetailOptions = { |
| | | id: MaybeRef<string>; |
| | |
| | | minPrice, |
| | | }; |
| | | } |
| | | |
| | | type UseStandardServiceListOptions = { |
| | | params?: MaybeRef<API.GetOpenStandardServiceListQuery>; |
| | | onSuccess?: (data: API.GetStandardServicesQueryResultItem[]) => any; |
| | | }; |
| | | |
| | | export function useStandardServiceList(options: UseStandardServiceListOptions = {}) { |
| | | const { params = {}, onSuccess } = options; |
| | | const { |
| | | data: standardServiceList, |
| | | refetch, |
| | | isLoading, |
| | | isError, |
| | | } = useQuery({ |
| | | queryKey: ['standardServiceServices/getOpenStandardServiceList', params], |
| | | queryFn: async () => { |
| | | return await standardServiceServices.getOpenStandardServiceList(unref(params), { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => [] as API.GetStandardServicesQueryResultItem[], |
| | | onSuccess(data) { |
| | | onSuccess?.(data); |
| | | }, |
| | | }); |
| | | |
| | | const standardServiceListForCategory = computed(() => { |
| | | return standardServiceList.value.map((x) => ({ |
| | | ...x, |
| | | catName: x.name, |
| | | })); |
| | | }); |
| | | |
| | | const standardServiceListForCategoryMap = computed(() => { |
| | | const group = groupBy(standardServiceListForCategory.value, 'jobCode'); |
| | | return group; |
| | | }); |
| | | |
| | | const queryClient = useQueryClient(); |
| | | |
| | | function ensureStandardServiceList() { |
| | | return queryClient.ensureQueryData<API.GetStandardServicesQueryResultItem[]>({ |
| | | queryKey: ['standardServiceServices/getOpenStandardServiceList', params], |
| | | }); |
| | | } |
| | | |
| | | return { |
| | | standardServiceList, |
| | | ensureStandardServiceList, |
| | | standardServiceListForCategory, |
| | | standardServiceListForCategoryMap, |
| | | }; |
| | | } |
| | | |
| | | export function useGetStandardOrders() { |
| | | const queryState = reactive({ |
| | | appointmentStatus: 0 as any as EnumStandardOrderAppointmentStatus, |
| | | payStatus: 0 as any as EnumStandardOrderPayStatus, |
| | | partAEnterpriseOrderStatus: 0 as any as EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus, |
| | | supplierEnterpriseOrderStatus: |
| | | 0 as any as EnumGetStandardOrdersQuerySupplierEnterpriseOrderStatus, |
| | | }); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetStandardOrdersQuery = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | }, |
| | | }; |
| | | |
| | | if (queryState.appointmentStatus) { |
| | | params.appointmentStatus = queryState.appointmentStatus; |
| | | } |
| | | if (queryState.payStatus) { |
| | | params.payStatus = queryState.payStatus; |
| | | } |
| | | if (queryState.partAEnterpriseOrderStatus) { |
| | | params.partAEnterpriseOrderStatus = queryState.partAEnterpriseOrderStatus; |
| | | } |
| | | if (queryState.supplierEnterpriseOrderStatus) { |
| | | params.supplierEnterpriseOrderStatus = queryState.supplierEnterpriseOrderStatus; |
| | | } |
| | | |
| | | return standardOrderServices.getStandardOrders(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['standardOrderServices/getStandardOrders', queryState], |
| | | } |
| | | ); |
| | | |
| | | return { |
| | | queryState, |
| | | infiniteLoadingProps, |
| | | }; |
| | | } |
| | | |
| | | type UseStandardOrderOptions = { |
| | | id: MaybeRef<string>; |
| | | scene?: EnumGetStandardOrdersQueryScene; |
| | | onSuccess?: (data: API.GetStandardOrderQueryResult) => any; |
| | | refetchInterval?: MaybeRef<number | false>; |
| | | }; |
| | | |
| | | export function useStandardOrder({ |
| | | id, |
| | | scene, |
| | | onSuccess, |
| | | refetchInterval = false, |
| | | }: UseStandardOrderOptions) { |
| | | const { |
| | | isLoading, |
| | | isError, |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['standardOrderServices/getStandardOrder', id, scene], |
| | | queryFn: async () => { |
| | | const params: API.APIgetStandardOrderParams = { |
| | | id: unref(id), |
| | | scene: scene, |
| | | }; |
| | | return await standardOrderServices.getStandardOrder(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => ({} as API.GetStandardOrderQueryResult), |
| | | onSuccess(data) { |
| | | onSuccess?.(data); |
| | | }, |
| | | refetchInterval: unref(refetchInterval), |
| | | }); |
| | | |
| | | return { detail, isLoading, isError, refetch }; |
| | | } |