zhengyiming
3 天以前 eb01fa3052576eb05faa83bb6b094aa5f85a4408
packages/hooks/task.ts
@@ -1,5 +1,7 @@
import { useInfiniteLoading } from '@12333/hooks';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import {
  EnumEnterpriseWalletAccessTextForSettle,
  EnumPagedListOrder,
  EnumSettlementCycle,
  EnumTaskCheckReceiveStatus,
@@ -10,9 +12,11 @@
} 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',
@@ -35,6 +39,9 @@
  };
};
/**
 * @description 仅C端使用
 */
export function useTaskList(options: UseTaskListOptions = {}) {
  const { cityCode = '', enabled = true, defaultQueryMenuState = {} } = options;
@@ -68,10 +75,13 @@
          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),
@@ -90,12 +100,12 @@
          : '',
      };
      return taskServices.getTaskInfos(params, {
      return taskServices.getOpenTaskInfos(params, {
        showLoading: false,
      });
    },
    {
      queryKey: ['taskServices/getTaskInfos', queryState, queryMenuState, cityCode],
      queryKey: ['taskServices/getOpenTaskInfos', queryState, queryMenuState, cityCode],
      enabled: enabled,
    }
  );
@@ -109,3 +119,95 @@
    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 };
}