From 758d8056dc3dbc6bf92c298aa3627e66b933b5a0 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 22 五月 2025 13:25:21 +0800 Subject: [PATCH] feat: UI --- packages/components/src/hooks/index.ts | 103 ++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 88 insertions(+), 15 deletions(-) diff --git a/packages/components/src/hooks/index.ts b/packages/components/src/hooks/index.ts index 912a1b6..b8ce406 100644 --- a/packages/components/src/hooks/index.ts +++ b/packages/components/src/hooks/index.ts @@ -11,12 +11,13 @@ 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'; export function useGetRate() { const { blLifeRecharge } = useLifeRechargeContext(); @@ -29,26 +30,54 @@ placeholderData: () => [] as LifePayRateListOutput[], }); - const lifePayPhoneRate = computed( - () => + const hasChannel = computed(() => !!blLifeRecharge.accountModel.channlesNum); + + const { data: channelRate } = useQuery({ + queryKey: ['blLifeRecharge/getChannelRate', blLifeRecharge.accountModel.channlesNum], + queryFn: async () => { + return await blLifeRecharge.services.getChannelRate( + { + checkChannelId: blLifeRecharge.accountModel.channlesNum, + }, + { showLoading: false } + ); + }, + placeholderData: () => ({} as ChannelRateOutput), + enabled: hasChannel, + }); + + const lifePayPhoneRate = computed(() => { + if (hasChannel.value && channelRate.value.channlesRate) { + return channelRate.value.channlesRate; + } + return ( lifePayRateList.value.find( (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿璇濊垂鎶樻墸 - )?.rate ?? 100 - ); + )?.rate ?? 0 + ); + }); - const lifePayElectricRate = computed( - () => + const lifePayElectricRate = computed(() => { + if (hasChannel.value && channelRate.value.channlesRate) { + return channelRate.value.channlesRate; + } + return ( lifePayRateList.value.find( (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿鐢佃垂鎶樻墸 - )?.rate ?? 100 - ); + )?.rate ?? 0 + ); + }); - const lifePayGasRate = computed( - () => + const lifePayGasRate = computed(() => { + if (hasChannel.value && channelRate.value.channlesRate) { + return channelRate.value.channlesRate; + } + return ( lifePayRateList.value.find( (x) => x.rateType === blLifeRecharge.constants.LifePayRateTypeEnum.榛樿鐕冩皵鎶樻墸 - )?.rate ?? 100 - ); + )?.rate ?? 0 + ); + }); return { lifePayRateList, @@ -110,7 +139,7 @@ // }); const { infiniteLoadingProps } = useInfiniteLoading( - ({ pageParam }) => { + async ({ pageParam }) => { let params: QueryLifePayOrderListInput = { pageModel: { rows: 20, @@ -121,9 +150,18 @@ userId: blLifeRecharge.accountModel.userId, }; - return blLifeRecharge.services.getUserLifePayOrderPage(params, { + let res = await blLifeRecharge.services.getUserLifePayOrderPage(params, { showLoading: false, }); + res.data = res.data.map((x) => ({ + ...x, + frontStatus: convertOrderFrontStatus( + x.payStatus, + x.lifePayOrderStatus, + x.lifePayRefundStatus + ), + })); + return res; }, { queryKey: [ @@ -133,6 +171,12 @@ userId: blLifeRecharge.accountModel.userId, }, ], + + select(data) { + console.log('data: ', data); + // data.pages.map((item) => item.data.map((x) => convertOrderFrontStatus(x))) + return data; + }, } ); @@ -264,3 +308,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