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/PhoneBillRecharge/types.ts | 2
apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue | 5 +-
apps/taro/src/utils/common/message.tsx | 6 ++-
packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue | 2
packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue | 2
apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue | 5 +-
apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue | 5 +-
packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue | 2
apps/taro/src/hooks/user.ts | 31 ++++++++++++++-
packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue | 4 +-
packages/components/src/hooks/selectPayType.ts | 9 ++--
apps/taro/src/subpackages/recharge/selectPayType/InnerPage.vue | 5 +-
packages/components/src/styles/rechargeGrid.scss | 19 +++++++++
packages/components/src/views/RechargeGrid/RechargeGrid.vue | 6 +++
14 files changed, 80 insertions(+), 23 deletions(-)
diff --git a/apps/taro/src/hooks/user.ts b/apps/taro/src/hooks/user.ts
index f76e73d..6e25fee 100644
--- a/apps/taro/src/hooks/user.ts
+++ b/apps/taro/src/hooks/user.ts
@@ -83,6 +83,8 @@
const { blLifeRecharge } = useLifeRechargeContext();
+ const { getLifePayWxIndentity } = useLifePayWxIndentity();
+
Taro.useReady(async () => {
try {
//@ts-ignore
@@ -93,13 +95,17 @@
}
if (!!code && !wxCode.value) {
userStore.setWxCode(router.params.code ?? '');
- let res = await getLifePayWxIndentity();
- userStore.setWxOpenId(res.openId);
+ getLifePayWxIndentity(code);
}
} catch (error) {}
});
+}
- async function getLifePayWxIndentity() {
+export function useLifePayWxIndentity() {
+ const { blLifeRecharge } = useLifeRechargeContext();
+ const userStore = useUserStore();
+
+ async function getLifePayWxIndentity(code: string) {
try {
let params: APIgetLifePayWxIndentityParams = {
code: code,
@@ -107,9 +113,28 @@
let res = await blLifeRecharge.services.getLifePayWxIndentity(params, {
showLoading: false,
});
+ userStore.setWxOpenId(res.openId);
return res;
} catch (error) {}
}
+
+ return { getLifePayWxIndentity };
+}
+
+export function useEnsureOpenId() {
+ const { wxCode, wxOpenId } = useUser();
+ const { getLifePayWxIndentity } = useLifePayWxIndentity();
+
+ async function ensureOpenId() {
+ if (wxOpenId) {
+ return wxOpenId.value;
+ } else {
+ let rea = await getLifePayWxIndentity(wxCode.value);
+ return rea.openId;
+ }
+ }
+
+ return { ensureOpenId };
}
export function useGoLogin() {
diff --git a/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue b/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue
index 558b627..773dc57 100644
--- a/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/electricBillRecharge/InnerPage.vue
@@ -4,7 +4,7 @@
@goPay="goPay"
:isDev="isDev"
@paySuccess="handePaySuccess"
- :openId="wxOpenId"
+ :getOpenId="ensureOpenId"
:isInWeChat="isInWeChat"
:isInAlipay="isInAlipay"
:isH5="isWeb"
@@ -21,7 +21,7 @@
import { BlLifeRecharge } from '@life-payment/core-vue';
import Taro from '@tarojs/taro';
import { isInAlipay, isInWeChat, isH5, isWeb } from '@/utils/env';
-import { useUser, useFocus } from '@/hooks';
+import { useUser, useFocus, useEnsureOpenId } from '@/hooks';
import { WXPayAppId } from '@/constants';
defineOptions({
@@ -31,6 +31,7 @@
const isDev = process.env.NODE_ENV === 'development';
const { wxOpenId } = useUser();
+const { ensureOpenId } = useEnsureOpenId();
const { isFocus } = useFocus();
function goPay(orderNo: string) {
diff --git a/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue b/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue
index cd0963e..2bdc9a8 100644
--- a/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/gasBillRecharge/InnerPage.vue
@@ -4,7 +4,7 @@
@goPay="goPay"
:isDev="isDev"
@paySuccess="handePaySuccess"
- :openId="wxOpenId"
+ :getOpenId="ensureOpenId"
:isInWeChat="isInWeChat"
:isInAlipay="isInAlipay"
:isH5="isWeb"
@@ -21,7 +21,7 @@
import { BlLifeRecharge } from '@life-payment/core-vue';
import Taro from '@tarojs/taro';
import { isInAlipay, isInWeChat, isH5, isWeb } from '@/utils/env';
-import { useUser, useFocus } from '@/hooks';
+import { useUser, useFocus, useEnsureOpenId } from '@/hooks';
import { WXPayAppId } from '@/constants';
defineOptions({
@@ -31,6 +31,7 @@
const isDev = process.env.NODE_ENV === 'development';
const { wxOpenId } = useUser();
+const { ensureOpenId } = useEnsureOpenId();
const { isFocus } = useFocus();
function goPay(orderNo: string) {
diff --git a/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue b/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
index 2cb195c..9c3ddcd 100644
--- a/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
@@ -4,7 +4,7 @@
@goPay="goPay"
:isDev="isDev"
@paySuccess="handePaySuccess"
- :openId="wxOpenId"
+ :getOpenId="ensureOpenId"
:isInWeChat="isInWeChat"
:isInAlipay="isInAlipay"
:isH5="isWeb"
@@ -21,7 +21,7 @@
import { BlLifeRecharge } from '@life-payment/core-vue';
import Taro from '@tarojs/taro';
import { isInAlipay, isInWeChat, isH5, isWeb } from '@/utils/env';
-import { useUser, useFocus } from '@/hooks';
+import { useUser, useFocus, useEnsureOpenId } from '@/hooks';
import { WXPayAppId } from '@/constants';
defineOptions({
@@ -31,6 +31,7 @@
const isDev = process.env.NODE_ENV === 'development';
const { wxOpenId } = useUser();
+const { ensureOpenId } = useEnsureOpenId();
const { isFocus } = useFocus();
function goPay(orderNo: string) {
diff --git a/apps/taro/src/subpackages/recharge/selectPayType/InnerPage.vue b/apps/taro/src/subpackages/recharge/selectPayType/InnerPage.vue
index fcf1d5c..892f9a6 100644
--- a/apps/taro/src/subpackages/recharge/selectPayType/InnerPage.vue
+++ b/apps/taro/src/subpackages/recharge/selectPayType/InnerPage.vue
@@ -7,7 +7,7 @@
@paySuccess="handePaySuccess"
:showAliPay="!isInWeChat"
:showWeixinPay="!isInAlipay"
- :openId="wxOpenId"
+ :getOpenId="ensureOpenId"
:isInWeChat="isInWeChat"
:isH5="isWeb"
:appId="WXPayAppId"
@@ -21,7 +21,7 @@
import { LifeRechargeConstants } from '@life-payment/core-vue';
import Taro from '@tarojs/taro';
import { isInAlipay, isInWeChat, isH5, isWeb } from '@/utils/env';
-import { useUser, useFocus } from '@/hooks';
+import { useUser, useFocus, useEnsureOpenId } from '@/hooks';
import { WXPayAppId } from '@/constants';
defineOptions({
@@ -33,6 +33,7 @@
const lifePayOrderType = Number(router.params?.lifePayOrderType ?? '');
const { wxOpenId } = useUser();
+const { ensureOpenId } = useEnsureOpenId();
const { isFocus } = useFocus();
diff --git a/apps/taro/src/utils/common/message.tsx b/apps/taro/src/utils/common/message.tsx
index 0ffb285..937d801 100644
--- a/apps/taro/src/utils/common/message.tsx
+++ b/apps/taro/src/utils/common/message.tsx
@@ -49,6 +49,10 @@
onClose();
resolve(1);
}}
+ //@ts-ignore
+ onClickOverlay={() => {
+ onClose();
+ }}
confirmText={confirmText}
></Model>
),
@@ -125,6 +129,4 @@
);
});
}
-
-
}
diff --git a/packages/components/src/hooks/selectPayType.ts b/packages/components/src/hooks/selectPayType.ts
index aa8e486..ad03530 100644
--- a/packages/components/src/hooks/selectPayType.ts
+++ b/packages/components/src/hooks/selectPayType.ts
@@ -9,14 +9,14 @@
import Taro from '@tarojs/taro';
type UseSelectPayTypeOptions = {
- openId?: MaybeRef<string>;
isInWeChat?: MaybeRef<boolean>;
isH5?: MaybeRef<boolean>;
appId?: MaybeRef<string>;
+ getOpenId?: () => Promise<string>;
};
export function useSelectPayType(options: UseSelectPayTypeOptions = {}) {
- const { openId, isInWeChat, isH5, appId } = options;
+ const { isInWeChat, isH5, appId, getOpenId } = options;
const { blLifeRecharge } = useLifeRechargeContext();
@@ -98,10 +98,11 @@
async function getPayOrderForJsAPI(orderNo: string) {
try {
+ const openId = await getOpenId();
let params: GetPayOrderForJsAPIInput = {
orderNo: orderNo,
lifePayType: blLifeRecharge.constants.LifePayTypeEnum.WxPay,
- openId: unref(openId),
+ openId: openId,
attach: Date.now().toString(),
payAppId: unref(appId),
};
@@ -167,7 +168,7 @@
const { blLifeRecharge } = useLifeRechargeContext();
useQuery({
- queryKey: ['platformServicePayServices/getPayStatusByOrderNo', orderNo],
+ queryKey: ['blLifeRecharge/getPayStatusByOrderNo', orderNo],
queryFn: async () => {
return await blLifeRecharge.services.getPayStatusByOrderNo(
{
diff --git a/packages/components/src/styles/rechargeGrid.scss b/packages/components/src/styles/rechargeGrid.scss
index 8695d25..ef1c3ad 100644
--- a/packages/components/src/styles/rechargeGrid.scss
+++ b/packages/components/src/styles/rechargeGrid.scss
@@ -5,6 +5,7 @@
margin-top: 40px;
.recharge-grid-item {
+ position: relative;
.nut-grid-item__text {
font-size: 36rpx;
color: boleGetCssVar('text-color', 'primary');
@@ -14,6 +15,24 @@
width: 64px;
height: 64px;
}
+
+ .discountTag {
+ position: absolute;
+ padding: 8px 16px;
+ border-radius: 0px 0 20px 0;
+ background: linear-gradient(
+ 186deg,
+ rgba(255, 129, 45, 0.08) 14.82%,
+ rgba(238, 67, 67, 0.08) 91.5%
+ );
+ color: #fb5100;
+ font-size: 24px;
+ font-weight: 700;
+ line-height: 28px;
+ position: absolute;
+ top: -2px;
+ left: -2px;
+ }
}
}
diff --git a/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue b/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue
index b4ec7a2..22a718b 100644
--- a/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue
+++ b/packages/components/src/views/GasBillRecharge/GasBillRechargeStep3.vue
@@ -220,7 +220,7 @@
}
const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
- openId: toRef(props, 'openId'),
+ getOpenId: props.getOpenId,
isInWeChat: toRef(props, 'isInWeChat'),
isH5: toRef(props, 'isH5'),
appId: toRef(props, 'appId'),
diff --git a/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue b/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue
index 4912744..0b56538 100644
--- a/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue
+++ b/packages/components/src/views/PhoneBillRecharge/PhoneBillRechargeStep2.vue
@@ -211,7 +211,7 @@
}
const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
- openId: toRef(props, 'openId'),
+ getOpenId: props.getOpenId,
isInWeChat: toRef(props, 'isInWeChat'),
isH5: toRef(props, 'isH5'),
appId: toRef(props, 'appId'),
diff --git a/packages/components/src/views/PhoneBillRecharge/types.ts b/packages/components/src/views/PhoneBillRecharge/types.ts
index 365e57f..6c8ec0b 100644
--- a/packages/components/src/views/PhoneBillRecharge/types.ts
+++ b/packages/components/src/views/PhoneBillRecharge/types.ts
@@ -1,6 +1,5 @@
export type RechargeProps = {
isDev?: boolean;
- openId?: string;
isInWeChat?: boolean;
isH5?: boolean;
appId?: string;
@@ -8,4 +7,5 @@
isInAlipay?: boolean;
showAliPay?: boolean;
showWeixinPay?: boolean;
+ getOpenId?: () => Promise<string>;
};
diff --git a/packages/components/src/views/RechargeGrid/RechargeGrid.vue b/packages/components/src/views/RechargeGrid/RechargeGrid.vue
index 204f8bd..705f3af 100644
--- a/packages/components/src/views/RechargeGrid/RechargeGrid.vue
+++ b/packages/components/src/views/RechargeGrid/RechargeGrid.vue
@@ -3,12 +3,15 @@
<Grid square :gutter="20" :column-num="2" class="recharge-grid-wrapper">
<GridItem class="recharge-grid-item" text="璇濊垂" @click="emit('phoneBillRecharge')">
<img :src="IconFreePhone" class="recharge-grid-item-icon" />
+ <div class="discountTag">{{ lifePayPhoneRate }}鎶�</div>
</GridItem>
<GridItem class="recharge-grid-item" text="鐢佃垂" @click="emit('electricityBillRecharge')">
<img :src="IconFreeDian" class="recharge-grid-item-icon" />
+ <div class="discountTag">{{ lifePayElectricRate }}鎶�</div>
</GridItem>
<!-- <GridItem class="recharge-grid-item" text="鐕冩皵" @click="emit('gasBillRecharge')">
<img :src="IconFreeGas" class="recharge-grid-item-icon" />
+ <div class="discountTag">{{ lifePayGasRate }}鎶�</div>
</GridItem> -->
</Grid>
</MainCell>
@@ -20,6 +23,7 @@
import IconFreePhone from '../../assets/icon-free-phone.png';
import IconFreeDian from '../../assets/icon-free-dian.png';
import IconFreeGas from '../../assets/icon-free-gas.png';
+import { useGetRate } from '../../hooks';
defineOptions({
name: 'RechargeGrid',
@@ -34,4 +38,6 @@
(e: 'electricityBillRecharge'): void;
(e: 'gasBillRecharge'): void;
}>();
+
+const { lifePayPhoneRate, lifePayElectricRate, lifePayGasRate } = useGetRate();
</script>
diff --git a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
index 68e0711..57cc4e3 100644
--- a/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
+++ b/packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
@@ -29,11 +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>(), {
@@ -51,7 +51,7 @@
}>();
const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
- openId: toRef(props, 'openId'),
+ getOpenId: props.getOpenId,
isInWeChat: toRef(props, 'isInWeChat'),
isH5: toRef(props, 'isH5'),
appId: toRef(props, 'appId'),
diff --git a/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue b/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue
index 6a1a910..ab56c15 100644
--- a/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue
+++ b/packages/components/src/views/electricBillRecharge/ElectricBillRechargeStep2.vue
@@ -228,10 +228,10 @@
}
const { state, invokeAliPay, invokeWeixinPay } = useSelectPayType({
- openId: toRef(props, 'openId'),
isInWeChat: toRef(props, 'isInWeChat'),
isH5: toRef(props, 'isH5'),
appId: toRef(props, 'appId'),
+ getOpenId: props.getOpenId,
});
const currentOrderNo = ref('');
--
Gitblit v1.9.1