From 8434c4b22d915ed796f7662cb10817b8e33c47c6 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期一, 17 三月 2025 16:26:37 +0800 Subject: [PATCH] fix: 修改支付方式选择 --- packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue | 49 +++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 41 insertions(+), 8 deletions(-) diff --git a/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue b/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue index 58b7052..8fc4f5d 100644 --- a/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue +++ b/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue @@ -56,6 +56,11 @@ </NutRadio> </NutRadioGroup> </NutFormItem> + <SelectPayTypeFormItem + v-model="form.lifePayType" + :showWeixinPay="showWeixinPay" + :showAliPay="showAliPay" + ></SelectPayTypeFormItem> <div class="common-content"> <nut-button class="recharge-button" type="primary" @click="handleSubmit"> <div class="recharge-button-inner"> @@ -87,6 +92,7 @@ 鍚屼竴鐕冩皵璐硅处鎴峰湪鍏呭�兼湡闂达紝鏈埌璐﹀墠鍒囧嬁鍦ㄥ叾浠栦换浣曞钩鍙板啀娆″厖鍊笺�傚洜姝ら�犳垚鐨勮祫閲戞崯澶遍』鐢ㄦ埛鑷鎵挎媴锛侊紒锛� </template> </ConfirmDialog> + <NutToast :msg="state.msg" v-model:visible="state.show" type="warn" cover /> </NutForm> </template> @@ -97,9 +103,10 @@ RadioGroup as NutRadioGroup, Radio as NutRadio, Button as NutButton, + Toast as NutToast, } from '@nutui/nutui-taro'; import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; -import { reactive, ref, computed } from 'vue'; +import { reactive, ref, computed, toRef } from 'vue'; import { useLifeRechargeContext, LifeElectricDataCreateLifePayOrderInput, @@ -108,28 +115,28 @@ } from '@life-payment/core-vue'; import { useGetRate, useGetGasParValue, useSetUserAccountBySelect } from '../../hooks'; import { useGasBillRechargeContext, GasUserAccountExtraProperties } from './context'; -import { FormValidator } from '../../utils'; +import { FormValidator, initLifePayType } from '../../utils'; import { CustomerServiceTips } from '../../constants'; import AccountAddCard from '../../components/Card/AccountAddCard.vue'; import AccountCard from '../../components/Card/AccountCard.vue'; import RechargeTipsView from '../../components/RechargeTipsView/RechargeTipsView.vue'; import ConfirmDialog from '../../components/Dialog/ConfirmDialog.vue'; import ConfirmDialogInfoItem from '../../components/Dialog/ConfirmDialogInfoItem.vue'; +import SelectPayTypeFormItem from '../../components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue'; +import { useSelectPayType, useGetPayStatusByOrderNo } from '../../hooks/selectPayType'; +import { RechargeProps } from '../PhoneBillRecharge/types'; defineOptions({ name: 'GasBillRechargeStep3', }); -type Props = { - isDev?: boolean; -}; - -const props = withDefaults(defineProps<Props>(), { +const props = withDefaults(defineProps<RechargeProps>(), { isDev: false, }); const emit = defineEmits<{ (e: 'goPay', orderNo: string): void; + (e: 'paySuccess', orderNo: string): void; }>(); const { goTo } = useGasBillRechargeContext(); @@ -148,6 +155,7 @@ currentUserAccountId: '', remark: '', areaList: [] as string[], + lifePayType: initLifePayType(props.isInWeChat, props.isInAlipay), }); const { userAccountAllList, handleUserAccountChange } = useSetUserAccountBySelect({ @@ -192,6 +200,7 @@ { required: true, message: '璇烽�夋嫨鍏呭�奸噾棰�', validator: FormValidator.validatorNumberNotNull }, ], currentUserAccountId: [{ required: true, message: '璇烽�夋嫨鍏呭�兼埛鍙�' }], + lifePayType: [{ required: true, message: '璇烽�夋嫨鏀粯鏂瑰紡' }], }); const formRef = ref<any>(null); @@ -222,6 +231,15 @@ confirmDialogVisible.value = true; } +const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({ + openId: toRef(props, 'openId'), + isInWeChat: toRef(props, 'isInWeChat'), + isH5: toRef(props, 'isH5'), + appId: toRef(props, 'appId'), +}); + +const currentOrderNo = ref(''); + async function goPay() { try { let params: LifeGasDataCreateLifePayOrderInput = { @@ -236,7 +254,22 @@ }, }; let res = await blLifeRecharge.services.createLifePayGasOrder(params); - emit('goPay', res.orderNo); + // emit('goPay', res.orderNo); + if (form.lifePayType === LifeRechargeConstants.LifePayTypeEnum.WxPay) { + await invokeWeixinPay(res.orderNo); + } else { + await invokeAliPay(res.orderNo); + } + currentOrderNo.value = res.orderNo; } catch (error) {} } + +useGetPayStatusByOrderNo({ + orderNo: currentOrderNo, + enabled: computed(() => props.isFocus && !!currentOrderNo.value), + onPaySuccess: (orderNo) => { + emit('paySuccess', orderNo); + currentOrderNo.value = ''; + }, +}); </script> -- Gitblit v1.9.1