zhengyiming
2025-03-12 8525b5c780d8855eca89c46790627c00b3d83c79
packages/components/src/hooks/index.ts
@@ -3,9 +3,20 @@
  LifePayRateListOutput,
  PhoneParValueOutput,
  PhoneParValueResponse,
} from '../utils';
import { useQuery } from '@tanstack/vue-query';
import { computed } from 'vue';
  QueryLifePayOrderListInput,
  LifeRechargeConstants,
  ElectricParValueResponse,
  ElectricSupportAreaResponse,
  QueryUserAccountAllListInput,
  UserAccountListOutput,
  AddUpdateUserAccountInput,
  GasParValueResponse,
  GasParValueOutput,
} from '@life-payment/core-vue';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import { computed, MaybeRef, reactive, unref } from 'vue';
import { useInfiniteLoading } from './infiniteLoading';
import { OrderInputType } from '../constants';
export function useGetRate() {
  const { blLifeRecharge } = useLifeRechargeContext();
@@ -22,20 +33,28 @@
    () =>
      lifePayRateList.value.find(
        (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.默认话费折扣
      )?.rate ?? 1
      )?.rate ?? 100
  );
  const lifePayElectricRate = computed(
    () =>
      lifePayRateList.value.find(
        (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.默认电费折扣
      )?.rate ?? 1
      )?.rate ?? 100
  );
  const lifePayGasRate = computed(
    () =>
      lifePayRateList.value.find(
        (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.默认燃气折扣
      )?.rate ?? 100
  );
  return {
    lifePayRateList,
    lifePayPhoneRate,
    lifePayElectricRate,
    lifePayGasRate,
  };
}
@@ -45,10 +64,10 @@
  const { data: phoneParValueList, isLoading } = useQuery({
    queryKey: ['blLifeRecharge/getPhoneParValue'],
    queryFn: async () => {
      return await blLifeRecharge.services.getPhoneParValue({ showLoading: false });
      return await blLifeRecharge.services.getPhoneParValue({}, { showLoading: false });
    },
    select(data) {
      return data.phoneParValue ?? [];
      return data?.phoneParValue ?? [];
    },
    placeholderData: () => ({} as PhoneParValueResponse),
  });
@@ -57,3 +76,191 @@
    phoneParValueList,
  };
}
export function useGetElectricParValue() {
  const { blLifeRecharge } = useLifeRechargeContext();
  const { data: electricParValueList, isLoading } = useQuery({
    queryKey: ['blLifeRecharge/getElectricSupportArea'],
    queryFn: async () => {
      return await blLifeRecharge.services.getElectricSupportArea({}, { showLoading: false });
    },
    select(data) {
      return data.electricAreaList ?? [];
    },
    placeholderData: () => ({} as ElectricSupportAreaResponse),
  });
  return {
    electricParValueList,
  };
}
export type UseGetUserLifePayOrderPageOptions = {
  lifePayOrderType?: MaybeRef<LifeRechargeConstants.LifePayOrderTypeEnum>;
};
export function useGetUserLifePayOrderPage(options: UseGetUserLifePayOrderPageOptions = {}) {
  const { lifePayOrderType } = options;
  const { blLifeRecharge } = useLifeRechargeContext();
  // const queryState = reactive({
  //   lifePayOrderType: LifeRechargeConstants.LifePayOrderTypeEnum,
  // });
  const { infiniteLoadingProps } = useInfiniteLoading(
    ({ pageParam }) => {
      let params: QueryLifePayOrderListInput = {
        pageModel: {
          rows: 20,
          page: pageParam,
          orderInput: [{ property: 'id', order: OrderInputType.Desc }],
        },
        lifePayOrderType: unref(lifePayOrderType),
        userId: blLifeRecharge.accountModel.userId,
      };
      return blLifeRecharge.services.getUserLifePayOrderPage(params, {
        showLoading: false,
      });
    },
    {
      queryKey: [
        'blLifeRecharge/getUserLifePayOrderPage',
        {
          lifePayOrderType,
          userId: blLifeRecharge.accountModel.userId,
        },
      ],
    }
  );
  return {
    infiniteLoadingProps,
  };
}
type UseUserAccountAllListOptions = {
  lifePayOrderType: MaybeRef<LifeRechargeConstants.LifePayOrderTypeEnum>;
  onSuccess?: (data: UserAccountListOutput[]) => any;
};
export function useUserAccountAllList({
  lifePayOrderType,
  onSuccess,
}: UseUserAccountAllListOptions) {
  const { blLifeRecharge } = useLifeRechargeContext();
  const { data: userAccountAllList, isLoading } = useQuery({
    queryKey: [
      'blLifeRecharge/getUserAccountAllList',
      blLifeRecharge.accountModel.userId,
      lifePayOrderType,
    ],
    queryFn: async () => {
      let params: QueryUserAccountAllListInput = {
        userId: blLifeRecharge.accountModel.userId,
        lifePayOrderType: unref(lifePayOrderType),
      };
      return await blLifeRecharge.services.getUserAccountAllList(params, { showLoading: false });
    },
    placeholderData: () => [] as UserAccountListOutput[],
    onSuccess(data) {
      onSuccess?.(data);
    },
  });
  const queryClient = useQueryClient();
  function invalidateQueries() {
    return queryClient.invalidateQueries({
      queryKey: [
        'blLifeRecharge/getUserAccountAllList',
        blLifeRecharge.accountModel.userId,
        lifePayOrderType,
      ],
    });
  }
  return {
    userAccountAllList,
    isLoading,
    invalidateQueries,
  };
}
export function useAddUpdateUserAccount() {
  const { blLifeRecharge } = useLifeRechargeContext();
  const queryClient = useQueryClient();
  function invalidateQueries(lifePayOrderType: LifeRechargeConstants.LifePayOrderTypeEnum) {
    return queryClient.invalidateQueries({
      queryKey: [
        'blLifeRecharge/getUserAccountAllList',
        blLifeRecharge.accountModel.userId,
        lifePayOrderType,
      ],
    });
  }
  async function addUpdateUserAccount(params: AddUpdateUserAccountInput) {
    let res = await blLifeRecharge.services.addUpdateUserAccount(params);
    if (res) {
      invalidateQueries(params.lifePayType);
    }
    return res;
  }
  return { addUpdateUserAccount };
}
type UseSetUserAccountBySelectOptions = {
  lifePayOrderType: MaybeRef<LifeRechargeConstants.LifePayOrderTypeEnum>;
  onSetUserAccount: (currentUserAccount: UserAccountListOutput) => any;
};
export function useSetUserAccountBySelect({
  lifePayOrderType,
  onSetUserAccount,
}: UseSetUserAccountBySelectOptions) {
  const { userAccountAllList } = useUserAccountAllList({
    lifePayOrderType: lifePayOrderType,
    onSuccess(data) {
      if (data.length > 0) {
        const currentUserAccount = data[0];
        onSetUserAccount?.(currentUserAccount);
      }
    },
  });
  function handleUserAccountChange(val: string) {
    const currentUserAccount = userAccountAllList.value.find((x) => x.id === val);
    onSetUserAccount?.(currentUserAccount);
  }
  return {
    handleUserAccountChange,
    userAccountAllList,
  };
}
export function useGetGasParValue() {
  const { blLifeRecharge } = useLifeRechargeContext();
  const { data: gasParValueList, isLoading } = useQuery({
    queryKey: ['blLifeRecharge/getGasParValue'],
    queryFn: async () => {
      return await blLifeRecharge.services.getGasParValue({}, { showLoading: false });
    },
    select(data) {
      return data?.gasParValue ?? [];
    },
    placeholderData: () => ({} as GasParValueResponse),
  });
  return {
    gasParValueList,
  };
}