|  |  |  | 
|---|
|  |  |  | import { useInfiniteLoading } from '@12333/hooks'; | 
|---|
|  |  |  | import { useQuery, useQueryClient } from '@tanstack/vue-query'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | EnumEnterpriseWalletAccessTextForSettle, | 
|---|
|  |  |  | EnumPagedListOrder, | 
|---|
|  |  |  | EnumSettlementCycle, | 
|---|
|  |  |  | EnumTaskCheckReceiveStatus, | 
|---|
|  |  |  | 
|---|
|  |  |  | } from '@12333/constants'; | 
|---|
|  |  |  | import _ from 'lodash'; | 
|---|
|  |  |  | import { trim } from '@12333/utils'; | 
|---|
|  |  |  | import { MaybeRef, reactive, ref, unref } from 'vue'; | 
|---|
|  |  |  | import { computed, MaybeRef, reactive, ref, unref } from 'vue'; | 
|---|
|  |  |  | import * as taskServices from '@12333/services/apiV2/task'; | 
|---|
|  |  |  | import * as enterpriseWalletServices from '@12333/services/apiV2/enterpriseWallet'; | 
|---|
|  |  |  | import dayjs from 'dayjs'; | 
|---|
|  |  |  | import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export enum HomeOrderType { | 
|---|
|  |  |  | Recommend = 'Recommend', | 
|---|
|  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @description 仅C端使用 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | export function useTaskList(options: UseTaskListOptions = {}) { | 
|---|
|  |  |  | const { cityCode = '', enabled = true, defaultQueryMenuState = {} } = options; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | settlementCycle: '' as any as EnumSettlementCycle, | 
|---|
|  |  |  | benefitCodes: '', | 
|---|
|  |  |  | status: '' as any as EnumTaskStatus, | 
|---|
|  |  |  | releaseStatus: EnumTaskReleaseStatus.InProcess, | 
|---|
|  |  |  | releaseStatus: '' as any as EnumTaskReleaseStatus, | 
|---|
|  |  |  | checkReceiveStatus: '' as any as EnumTaskCheckReceiveStatus, | 
|---|
|  |  |  | enterpriseId: '', | 
|---|
|  |  |  | time: '' as any as Date, | 
|---|
|  |  |  | 
|---|
|  |  |  | rows: 20, | 
|---|
|  |  |  | page: pageParam, | 
|---|
|  |  |  | orderInput: [ | 
|---|
|  |  |  | queryState.orderType === HomeOrderType.Recommend | 
|---|
|  |  |  | ? { property: 'recommendStatus', order: EnumPagedListOrder.Desc } | 
|---|
|  |  |  | : { property: 'createdTime', order: EnumPagedListOrder.Desc }, | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | { property: 'releaseStatus', order: EnumPagedListOrder.Asc }, | 
|---|
|  |  |  | queryState.orderType === HomeOrderType.Recommend && { | 
|---|
|  |  |  | property: 'recommendTime', | 
|---|
|  |  |  | order: EnumPagedListOrder.Desc, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { property: 'createdTime', order: EnumPagedListOrder.Desc }, | 
|---|
|  |  |  | ].filter(Boolean), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | keywords: queryState.searchValueTrim, | 
|---|
|  |  |  | cityCode: unref(cityCode), | 
|---|
|  |  |  | 
|---|
|  |  |  | : '', | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return taskServices.getTaskInfos(params, { | 
|---|
|  |  |  | return taskServices.getOpenTaskInfos(params, { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | queryKey: ['taskServices/getTaskInfos', queryState, queryMenuState, cityCode], | 
|---|
|  |  |  | queryKey: ['taskServices/getOpenTaskInfos', queryState, queryMenuState, cityCode], | 
|---|
|  |  |  | enabled: enabled, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | 
|---|
|  |  |  | invalidateQueries, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export function useCheckReceiveTasks() { | 
|---|
|  |  |  | const queryState = reactive({ | 
|---|
|  |  |  | date: dayjs().toDate(), | 
|---|
|  |  |  | checkReceiveStatus: EnumTaskCheckReceiveStatus.WaitSubmit, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { infiniteLoadingProps } = useInfiniteLoading( | 
|---|
|  |  |  | ({ pageParam }) => { | 
|---|
|  |  |  | let params: API.GetCheckReceiveTasksQuery = { | 
|---|
|  |  |  | pageModel: { | 
|---|
|  |  |  | rows: 20, | 
|---|
|  |  |  | page: pageParam, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | date: dayjs(queryState.date).format('YYYY-MM-DD'), | 
|---|
|  |  |  | checkReceiveStatus: queryState.checkReceiveStatus, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return taskCheckReceiveServices.getCheckReceiveTasks(params, { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | queryKey: ['taskCheckReceiveServices/getCheckReceiveTasks', queryState], | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | queryState, | 
|---|
|  |  |  | infiniteLoadingProps, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | type UseCheckReceiveTaskUserSubmitsOptions = { | 
|---|
|  |  |  | id?: string; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export function useCheckReceiveTaskUserSubmits( | 
|---|
|  |  |  | options: UseCheckReceiveTaskUserSubmitsOptions = {} | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | const { id } = options; | 
|---|
|  |  |  | const { infiniteLoadingProps } = useInfiniteLoading( | 
|---|
|  |  |  | ({ pageParam }) => { | 
|---|
|  |  |  | let params: API.GetCheckReceiveTaskUserSubmitsQuery = { | 
|---|
|  |  |  | pageModel: { | 
|---|
|  |  |  | rows: 20, | 
|---|
|  |  |  | page: pageParam, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | taskInfoId: id, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return taskCheckReceiveServices.getCheckReceiveTaskUserSubmits(params, { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits'], | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | infiniteLoadingProps, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export function useEnterpriseWalletAccessSelect() { | 
|---|
|  |  |  | const { data } = useQuery({ | 
|---|
|  |  |  | queryKey: ['enterpriseWalletServices/getEnterpriseWalletAccessSelect'], | 
|---|
|  |  |  | queryFn: () => { | 
|---|
|  |  |  | return enterpriseWalletServices.getEnterpriseWalletAccessSelect( | 
|---|
|  |  |  | {}, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | placeholderData: () => [] as API.SelectOptionGuidGetEnterpriseWalletAccessSelectQueryOption[], | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const enterpriseWalletAccessSelect = computed(() => data.value?.map((x) => x.data)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const settlementAccessList = computed(() => { | 
|---|
|  |  |  | return enterpriseWalletAccessSelect.value?.length > 0 | 
|---|
|  |  |  | ? enterpriseWalletAccessSelect.value.map((x) => ({ | 
|---|
|  |  |  | label: EnumEnterpriseWalletAccessTextForSettle[x.access], | 
|---|
|  |  |  | value: x.access, | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | : []; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return { settlementAccessList }; | 
|---|
|  |  |  | } | 
|---|