From 8434c4b22d915ed796f7662cb10817b8e33c47c6 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 17 三月 2025 16:26:37 +0800
Subject: [PATCH] fix: 修改支付方式选择

---
 apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue                 |    2 +
 packages/components/src/views/PhoneBillRecharge/types.ts                           |    2 +
 packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue         |    6 ++
 apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue                   |    2 +
 packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue             |    6 ++
 packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue              |   12 ++++--
 apps/taro/src/constants/tabBar.ts                                                  |    1 
 packages/components/src/components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue |   39 ++++++++++++++-----
 packages/components/src/hooks/selectPayType.ts                                     |   20 +++++++--
 packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue   |   14 +++++++
 apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue              |    2 +
 11 files changed, 84 insertions(+), 22 deletions(-)

diff --git a/apps/taro/src/constants/tabBar.ts b/apps/taro/src/constants/tabBar.ts
index aea4e60..1f16347 100644
--- a/apps/taro/src/constants/tabBar.ts
+++ b/apps/taro/src/constants/tabBar.ts
@@ -1,6 +1,5 @@
 import Taro from '@tarojs/taro';
 let res = Taro.getLaunchOptionsSync();
-console.log('getLaunchOptionsSync: ', res);
 
 export const TabBarPageRouterForCheck = {
   Home: `/pages/home/index`,
diff --git a/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue b/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue
index a2968dc..558b627 100644
--- a/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue
@@ -10,6 +10,8 @@
       :isH5="isWeb"
       :appId="WXPayAppId"
       :isFocus="isFocus"
+      :showAliPay="!isInWeChat"
+      :showWeixinPay="isInWeChat"
     />
   </ContentScrollView>
 </template>
diff --git a/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue b/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue
index f1561ed..cd0963e 100644
--- a/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue
@@ -10,6 +10,8 @@
       :isH5="isWeb"
       :appId="WXPayAppId"
       :isFocus="isFocus"
+      :showAliPay="!isInWeChat"
+      :showWeixinPay="isInWeChat"
     />
   </ContentScrollView>
 </template>
diff --git a/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue b/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
index a1b936b..2cb195c 100644
--- a/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
@@ -10,6 +10,8 @@
       :isH5="isWeb"
       :appId="WXPayAppId"
       :isFocus="isFocus"
+      :showAliPay="!isInWeChat"
+      :showWeixinPay="isInWeChat"
     />
   </ContentScrollView>
 </template>
diff --git a/packages/components/src/components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue b/packages/components/src/components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue
index 7a01ca9..855f7e5 100644
--- a/packages/components/src/components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue
+++ b/packages/components/src/components/SelectPayTypeFormItem/SelectPayTypeFormItem.vue
@@ -2,15 +2,29 @@
   <NutFormItem label="閫夋嫨鏀粯鏂瑰紡" class="bole-form-item" prop="lifePayType" required>
     <NutRadioGroup v-model="lifePayType" direction="horizontal">
       <BlRadio
-        :label="Number(lifePayTypeEnum)"
-        v-for="(lifePayTypeEnumText, lifePayTypeEnum) in LifeRechargeConstants.LifePayTypeEnumText"
-        :key="lifePayTypeEnum"
+        :label="LifeRechargeConstants.LifePayTypeEnum.AliPay"
         shape="button"
         class="select-pay-type-view-form-item-radio"
+        v-if="showAliPay"
       >
         <div class="select-pay-type-view-form-item">
-          <img class="select-pay-type-view-form-item-icon" :src="IconMap[lifePayTypeEnum]" />
-          {{ lifePayTypeEnumText }}
+          <img class="select-pay-type-view-form-item-icon" :src="IconAliPay" />
+          {{
+            LifeRechargeConstants.LifePayTypeEnumText[LifeRechargeConstants.LifePayTypeEnum.AliPay]
+          }}
+        </div>
+      </BlRadio>
+      <BlRadio
+        :label="LifeRechargeConstants.LifePayTypeEnum.WxPay"
+        shape="button"
+        class="select-pay-type-view-form-item-radio"
+        v-if="showWeixinPay"
+      >
+        <div class="select-pay-type-view-form-item">
+          <img class="select-pay-type-view-form-item-icon" :src="IconWeixin" />
+          {{
+            LifeRechargeConstants.LifePayTypeEnumText[LifeRechargeConstants.LifePayTypeEnum.WxPay]
+          }}
         </div>
       </BlRadio>
     </NutRadioGroup>
@@ -28,10 +42,15 @@
   name: 'SelectPayTypeFormItem',
 });
 
-const lifePayType = defineModel<LifeRechargeConstants.LifePayTypeEnum>();
-
-const IconMap = {
-  [LifeRechargeConstants.LifePayTypeEnum.WxPay]: IconWeixin,
-  [LifeRechargeConstants.LifePayTypeEnum.AliPay]: IconAliPay,
+type Props = {
+  showAliPay?: boolean;
+  showWeixinPay?: boolean;
 };
+
+const props = withDefaults(defineProps<Props>(), {
+  showAliPay: true,
+  showWeixinPay: true,
+});
+
+const lifePayType = defineModel<LifeRechargeConstants.LifePayTypeEnum>();
 </script>
diff --git a/packages/components/src/hooks/selectPayType.ts b/packages/components/src/hooks/selectPayType.ts
index c2a4931..f7b7c04 100644
--- a/packages/components/src/hooks/selectPayType.ts
+++ b/packages/components/src/hooks/selectPayType.ts
@@ -34,7 +34,9 @@
       if (res) {
         location.href = res;
       }
-    } catch (error) {}
+    } catch (error) {
+      throw error;
+    }
   }
 
   async function setLifePayOrderPayType(
@@ -47,7 +49,9 @@
         lifePayType: lifePayType,
       };
       return await blLifeRecharge.services.setLifePayOrderPayType(params);
-    } catch (error) {}
+    } catch (error) {
+      throw error;
+    }
   }
 
   async function invokeWeixinPay(orderNo: string) {
@@ -87,7 +91,9 @@
           fail: function (res) {},
         });
       }
-    } catch (error) {}
+    } catch (error) {
+      throw error;
+    }
   }
 
   async function getPayOrderForJsAPI(orderNo: string) {
@@ -101,7 +107,9 @@
       };
       let res = await blLifeRecharge.services.getPayOrderForJsAPI(params);
       return res;
-    } catch (error) {}
+    } catch (error) {
+      throw error;
+    }
   }
 
   async function handleWeixinPayByJsApi(orderNo: string) {
@@ -137,7 +145,9 @@
           );
         }
       }
-    } catch (error) {}
+    } catch (error) {
+      throw error;
+    }
   }
 
   return {
diff --git a/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue b/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue
index 3d364d9..8fc4f5d 100644
--- a/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue
+++ b/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue
@@ -56,7 +56,11 @@
         </NutRadio>
       </NutRadioGroup>
     </NutFormItem>
-    <SelectPayTypeFormItem v-model="form.lifePayType"></SelectPayTypeFormItem>
+    <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">
diff --git a/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue b/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue
index ac4db7a..c9b26ed 100644
--- a/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue
+++ b/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue
@@ -60,7 +60,11 @@
         </NutRadio>
       </NutRadioGroup>
     </NutFormItem>
-    <SelectPayTypeFormItem v-model="form.lifePayType"></SelectPayTypeFormItem>
+    <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">
diff --git a/packages/components/src/views/PhoneBillRecharge/types.ts b/packages/components/src/views/PhoneBillRecharge/types.ts
index 47c37fc..365e57f 100644
--- a/packages/components/src/views/PhoneBillRecharge/types.ts
+++ b/packages/components/src/views/PhoneBillRecharge/types.ts
@@ -6,4 +6,6 @@
   appId?: string;
   isFocus?: boolean;
   isInAlipay?: boolean;
+  showAliPay?: boolean;
+  showWeixinPay?: boolean;
 };
diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
index 4e927c5..68e0711 100644
--- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
+++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
@@ -57,12 +57,16 @@
   appId: toRef(props, 'appId'),
 });
 
-function handleAliPay() {
-  invokeAliPay(props.orderNo);
+async function handleAliPay() {
+  try {
+    await invokeAliPay(props.orderNo);
+  } catch (error) {}
 }
 
-function handleWeixinPay() {
-  invokeWeixinPay(props.orderNo);
+async function handleWeixinPay() {
+  try {
+    await invokeWeixinPay(props.orderNo);
+  } catch (error) {}
 }
 
 useGetPayStatusByOrderNo({
diff --git a/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue b/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue
index e53f3fd..5984a9f 100644
--- a/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue
+++ b/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue
@@ -62,6 +62,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">
@@ -266,4 +271,13 @@
     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