From 9b47d54a72046f3926c5620bfd4c836db5c61147 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期五, 12 九月 2025 13:32:24 +0800 Subject: [PATCH] feat: 公告 --- packages/components/src/hooks/index.ts | 147 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 117 insertions(+), 30 deletions(-) diff --git a/packages/components/src/hooks/index.ts b/packages/components/src/hooks/index.ts index ec903cc..8288b45 100644 --- a/packages/components/src/hooks/index.ts +++ b/packages/components/src/hooks/index.ts @@ -11,51 +11,97 @@ UserAccountListOutput, AddUpdateUserAccountInput, GasParValueResponse, - GasParValueOutput, + ChannelRateOutput, } 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'; import { convertOrderFrontStatus } from '../utils'; +import { useLifePayRateChannelAllList } from './rate'; export function useGetRate() { const { blLifeRecharge } = useLifeRechargeContext(); - const { data: lifePayRateList, isLoading } = useQuery({ - queryKey: ['blLifeRecharge/getRate'], + // const { data: lifePayRateList, isLoading } = useQuery({ + // queryKey: ['blLifeRecharge/getRate'], + // queryFn: async () => { + // return await blLifeRecharge.services.getRate({ showLoading: false }); + // }, + // placeholderData: () => [] as LifePayRateListOutput[], + // }); + const { allRateChannelList } = useLifePayRateChannelAllList(); + + const hasChannel = computed(() => !!blLifeRecharge.accountModel.channlesNum); + + const { data: channelRate } = useQuery({ + queryKey: ['blLifeRecharge/getChannelRate', blLifeRecharge.accountModel.channlesNum], queryFn: async () => { - return await blLifeRecharge.services.getRate({ showLoading: false }); + return await blLifeRecharge.services.getChannelRate( + { + checkChannelId: blLifeRecharge.accountModel.channlesNum, + }, + { showLoading: false } + ); }, - placeholderData: () => [] as LifePayRateListOutput[], + placeholderData: () => ({} as ChannelRateOutput), + enabled: hasChannel, }); - const lifePayPhoneRate = computed( - () => - lifePayRateList.value.find( - (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿璇濊垂鎶樻墸 - )?.rate ?? 100 - ); + const lifePayPhoneRate = computed(() => { + if (hasChannel.value && channelRate.value.channlesRate) { + return channelRate.value.channlesRate; + } + // return ( + // lifePayRateList.value.find( + // (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿璇濊垂鎶樻墸 + // )?.rate ?? 0 + // ); + return ( + allRateChannelList.value + .filter((x) => x.lifePayOrderType == blLifeRecharge.constants.LifePayOrderTypeEnum.璇濊垂璁㈠崟) + .toSorted((a, b) => a.platformRate - b.platformRate)?.[0]?.platformRate ?? 0 + ); + }); - const lifePayElectricRate = computed( - () => - lifePayRateList.value.find( - (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿鐢佃垂鎶樻墸 - )?.rate ?? 100 - ); + const lifePayElectricRate = computed(() => { + if (hasChannel.value && channelRate.value.channlesRate) { + return channelRate.value.channlesRate; + } + // return ( + // lifePayRateList.value.find( + // (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿鐢佃垂鎶樻墸 + // )?.rate ?? 0 + // ); + return ( + allRateChannelList.value + .filter((x) => x.lifePayOrderType == blLifeRecharge.constants.LifePayOrderTypeEnum.鐢佃垂璁㈠崟) + .toSorted((a, b) => a.platformRate - b.platformRate)?.[0]?.platformRate ?? 0 + ); + }); - const lifePayGasRate = computed( - () => - lifePayRateList.value.find( - (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿鐕冩皵鎶樻墸 - )?.rate ?? 100 - ); + const lifePayGasRate = computed(() => { + if (hasChannel.value && channelRate.value.channlesRate) { + return channelRate.value.channlesRate; + } + // return ( + // lifePayRateList.value.find( + // (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿鐕冩皵鎶樻墸 + // )?.rate ?? 0 + // ); + return ( + allRateChannelList.value + .filter((x) => x.lifePayOrderType == blLifeRecharge.constants.LifePayOrderTypeEnum.鐕冩皵璁㈠崟) + .toSorted((a, b) => a.platformRate - b.platformRate)?.[0]?.platformRate ?? 0 + ); + }); return { - lifePayRateList, + // lifePayRateList, lifePayPhoneRate, lifePayElectricRate, lifePayGasRate, + allRateChannelList, }; } @@ -127,7 +173,11 @@ }); res.data = res.data.map((x) => ({ ...x, - frontStatus: convertOrderFrontStatus(x.payStatus, x.lifePayOrderStatus), + frontStatus: convertOrderFrontStatus( + x.payStatus, + x.lifePayOrderStatus, + x.lifePayRefundStatus + ), })); return res; }, @@ -231,19 +281,27 @@ type UseSetUserAccountBySelectOptions = { lifePayOrderType: MaybeRef<LifeRechargeConstants.LifePayOrderTypeEnum>; onSetUserAccount: (currentUserAccount: UserAccountListOutput) => any; + getDefaultUserAccount?: ( + userAccountList: UserAccountListOutput[] + ) => Promise<UserAccountListOutput | undefined>; }; export function useSetUserAccountBySelect({ lifePayOrderType, onSetUserAccount, + getDefaultUserAccount = (data) => Promise.resolve(data[0]), }: UseSetUserAccountBySelectOptions) { const { userAccountAllList } = useUserAccountAllList({ lifePayOrderType: lifePayOrderType, - onSuccess(data) { - if (data.length > 0) { - const currentUserAccount = data[0]; - onSetUserAccount?.(currentUserAccount); - } + async onSuccess(data) { + try { + if (data.length > 0) { + const currentUserAccount = await getDefaultUserAccount(data); + if (currentUserAccount) { + onSetUserAccount?.(currentUserAccount); + } + } + } catch (error) {} }, }); @@ -276,3 +334,32 @@ gasParValueList, }; } + +type UseIntroInfoOptions = { + lifePayOrderType: MaybeRef<LifeRechargeConstants.LifePayOrderTypeEnum>; + onSuccess?: (data: API.LifePayIntroInfoOutput[]) => any; +}; + +export function useIntroInfo({ lifePayOrderType, onSuccess }: UseIntroInfoOptions) { + const { blLifeRecharge } = useLifeRechargeContext(); + + const { data: introInfo } = useQuery({ + queryKey: ['blLifeRecharge/getIntroInfo', lifePayOrderType], + queryFn: async () => { + return await blLifeRecharge.services.getIntroInfo( + { + type: unref(lifePayOrderType), + }, + { + showLoading: false, + } + ); + }, + placeholderData: () => [] as API.LifePayIntroInfoOutput[], + onSuccess: (data) => { + onSuccess?.(data); + }, + }); + + return { introInfo }; +} -- Gitblit v1.9.1