From 192be5ad46233a4cd25880ba029997d47ad09bf6 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期四, 20 三月 2025 17:30:34 +0800 Subject: [PATCH] fix: 三期需求 --- packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue | 70 +++++++++++++---------------------- 1 files changed, 26 insertions(+), 44 deletions(-) diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue index 93705f7..57cc4e3 100644 --- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue +++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue @@ -8,18 +8,17 @@ <img class="select-pay-type-view-item-icon" :src="IconWeixin" /> <div class="select-pay-type-view-item-text">寰俊鏀粯</div> </div> + <NutToast :msg="state.msg" v-model:visible="state.show" type="warn" cover /> </div> </template> <script setup lang="ts"> -import IconWeixin from '../../../assets/icon-weixin-pay.png'; -import IconAliPay from '../../../assets/icon-alipay.png'; -import { - useLifeRechargeContext, - SetLifePayOrderPayTypeInput, - LifeRechargeConstants, -} from '@life-payment/core-vue'; -import { useQuery } from '@tanstack/vue-query'; +import IconWeixin from '../../assets/icon-weixin-pay.png'; +import IconAliPay from '../../assets/icon-alipay.png'; +import { LifeRechargeConstants } from '@life-payment/core-vue'; +import { Toast as NutToast } from '@nutui/nutui-taro'; +import { computed, toRef } from 'vue'; +import { useSelectPayType, useGetPayStatusByOrderNo } from '../../hooks/selectPayType'; defineOptions({ name: 'SelectPayTypeView', @@ -30,6 +29,11 @@ lifePayOrderType?: LifeRechargeConstants.LifePayOrderTypeEnum; showAliPay?: boolean; showWeixinPay?: boolean; + isInWeChat?: boolean; + isH5?: boolean; + appId?: string; + isFocus?: boolean; + getOpenId?: () => Promise<string>; }; const props = withDefaults(defineProps<Props>(), { @@ -43,55 +47,33 @@ orderNo: string, lifePayOrderType: LifeRechargeConstants.LifePayOrderTypeEnum ): void; + (e: 'payOrderForJsAPISuccess'): void; }>(); -const { blLifeRecharge } = useLifeRechargeContext(); +const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({ + getOpenId: props.getOpenId, + isInWeChat: toRef(props, 'isInWeChat'), + isH5: toRef(props, 'isH5'), + appId: toRef(props, 'appId'), +}); async function handleAliPay() { try { - let res = await setLifePayOrderPayType(blLifeRecharge.constants.LifePayTypeEnum.AliPay); - if (res) { - location.href = res; - } + await invokeAliPay(props.orderNo); } catch (error) {} } async function handleWeixinPay() { try { - let res = await setLifePayOrderPayType(blLifeRecharge.constants.LifePayTypeEnum.WxPay); - if (res) { - location.href = res; - } + await invokeWeixinPay(props.orderNo); } catch (error) {} } -async function setLifePayOrderPayType(lifePayType: LifeRechargeConstants.LifePayTypeEnum) { - try { - let params: SetLifePayOrderPayTypeInput = { - orderNo: props.orderNo, - lifePayType: lifePayType, - }; - return await blLifeRecharge.services.setLifePayOrderPayType(params); - } catch (error) {} -} - -useQuery({ - queryKey: ['platformServicePayServices/getPayStatusByOrderNo', props.orderNo], - queryFn: async () => { - return await blLifeRecharge.services.getPayStatusByOrderNo( - { - orderNo: props.orderNo, - }, - { - showLoading: false, - } - ); +useGetPayStatusByOrderNo({ + orderNo: toRef(props, 'orderNo'), + enabled: computed(() => props.isFocus), + onPaySuccess() { + emit('paySuccess', props.orderNo, props.lifePayOrderType); }, - onSuccess(data) { - if (data === blLifeRecharge.constants.LifePayStatusEnum.宸叉敮浠�) { - emit('paySuccess', props.orderNo, props.lifePayOrderType); - } - }, - refetchInterval: 1000 * 3, }); </script> -- Gitblit v1.9.1