From 1327b99efda99ada27a956981648950f580314b0 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 22 五月 2025 14:17:47 +0800
Subject: [PATCH] fix: 修改ui

---
 packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue |  114 +++++++++-----------------------------------------------
 1 files changed, 19 insertions(+), 95 deletions(-)

diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
index 0e784f8..2b50807 100644
--- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
+++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
@@ -13,17 +13,12 @@
 </template>
 
 <script setup lang="ts">
-import IconWeixin from '../../../assets/icon-weixin-pay.png';
-import IconAliPay from '../../../assets/icon-alipay.png';
-import {
-  useLifeRechargeContext,
-  SetLifePayOrderPayTypeInput,
-  LifeRechargeConstants,
-  GetPayOrderForJsAPIInput,
-} 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 { reactive } from 'vue';
+import { computed, toRef } from 'vue';
+import { useSelectPayType, useGetPayStatusByOrderNo } from '../../hooks/selectPayType';
 
 defineOptions({
   name: 'SelectPayTypeView',
@@ -34,10 +29,11 @@
   lifePayOrderType?: LifeRechargeConstants.LifePayOrderTypeEnum;
   showAliPay?: boolean;
   showWeixinPay?: boolean;
-  openId?: string;
   isInWeChat?: boolean;
   isH5?: boolean;
   appId?: string;
+  isFocus?: boolean;
+  getOpenId?: () => Promise<string>;
 };
 
 const props = withDefaults(defineProps<Props>(), {
@@ -54,102 +50,30 @@
   (e: 'payOrderForJsAPISuccess'): void;
 }>();
 
-const state = reactive({
-  show: false,
-  msg: '',
+const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
+  getOpenId: toRef(props, 'getOpenId'),
+  isInWeChat: toRef(props, 'isInWeChat'),
+  isH5: toRef(props, 'isH5'),
+  appId: toRef(props, 'appId'),
 });
-
-const { blLifeRecharge } = useLifeRechargeContext();
 
 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() {
-  if (props.isH5) {
-    if (props.isInWeChat) {
-      handleWeixinPayByJsApi();
-    } else {
-      // try {
-      //   let res = await setLifePayOrderPayType(blLifeRecharge.constants.LifePayTypeEnum.WxPay);
-      //   if (res) {
-      //     location.href = res;
-      //   }
-      // } catch (error) {}
-      state.msg = '璇峰湪寰俊涓墦寮�';
-      state.show = true;
-    }
-  }
-}
-
-async function handleWeixinPayByJsApi() {
   try {
-    let params: GetPayOrderForJsAPIInput = {
-      orderNo: props.orderNo,
-      lifePayType: blLifeRecharge.constants.LifePayTypeEnum.WxPay,
-      openId: props.openId,
-      attach: Date.now().toString(),
-    };
-    let res = await blLifeRecharge.services.getPayOrderForJsAPI(params);
-    //@ts-ignore
-    if (res && WeixinJSBridge) {
-      //@ts-ignore
-      WeixinJSBridge.invoke(
-        'getBrandWCPayRequest',
-        {
-          appId: props.appId, //鍏紬鍙稩D锛岀敱鍟嗘埛浼犲叆
-          timeStamp: res.timestamp, //鏃堕棿鎴筹紝鑷�1970骞翠互鏉ョ殑绉掓暟
-          nonceStr: res.nonceStr, //闅忔満涓�
-          package: res.package,
-          signType: res.signType, //寰俊绛惧悕鏂瑰紡锛�
-          paySign: res.paySign, //寰俊绛惧悕
-        },
-        function (res) {
-          if (res.err_msg == 'get_brand_wcpay_request:ok') {
-            // 浣跨敤浠ヤ笂鏂瑰紡鍒ゆ柇鍓嶇杩斿洖,寰俊鍥㈤槦閮戦噸鎻愮ず锛�
-            //res.err_msg灏嗗湪鐢ㄦ埛鏀粯鎴愬姛鍚庤繑鍥瀘k锛屼絾骞朵笉淇濊瘉瀹冪粷瀵瑰彲闈狅紝鍟嗘埛闇�杩涗竴姝ヨ皟鐢ㄥ悗绔煡鍗曠‘璁ゆ敮浠樼粨鏋溿��
-          }
-        },
-        function (res) {
-          console.log('res: ', 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