From f2025539d8bf4798b90a5ab8a47c5a379ab68e9b Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期二, 11 三月 2025 17:51:43 +0800 Subject: [PATCH] fix: 二期需求 --- packages/components/src/hooks/index.ts | 142 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 139 insertions(+), 3 deletions(-) diff --git a/packages/components/src/hooks/index.ts b/packages/components/src/hooks/index.ts index 1849770..6862870 100644 --- a/packages/components/src/hooks/index.ts +++ b/packages/components/src/hooks/index.ts @@ -7,8 +7,12 @@ LifeRechargeConstants, ElectricParValueResponse, ElectricSupportAreaResponse, + QueryUserAccountAllListInput, + UserAccountListOutput, + AddUpdateUserAccountInput, + GasParValueResponse, } from '@life-payment/core-vue'; -import { useQuery } from '@tanstack/vue-query'; +import { useQuery, useQueryClient } from '@tanstack/vue-query'; import { computed, MaybeRef, reactive, unref } from 'vue'; import { useInfiniteLoading } from './infiniteLoading'; import { OrderInputType } from '../constants'; @@ -28,20 +32,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, }; } @@ -127,3 +139,127 @@ 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, + }; +} -- Gitblit v1.9.1