From 69b355fa959028502a0e663cc961b9e513ceb819 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期二, 21 十月 2025 10:26:22 +0800
Subject: [PATCH] fix: bug
---
apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue | 134 +-----------------
packages/components/src/Card/BindWalletView.vue | 135 +++++++++++++++++++
packages/constants/enterpriseWallet.ts | 8 +
apps/cMiniApp/src/subpackages/wallet/bindAlipay/InnerPage.vue | 48 ++++++
packages/components/src/index.ts | 1
apps/cMiniApp/src/subpackages/wallet/hooks/index.ts | 32 ++++
apps/cMiniApp/src/constants/router.ts | 3
apps/cMiniApp/src/app.config.ts | 1
apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.vue | 18 ++
apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue | 2
apps/cMiniApp/project.private.config.json | 2
apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.config.ts | 3
12 files changed, 259 insertions(+), 128 deletions(-)
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index e90e365..bac5641 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -32,5 +32,5 @@
]
}
},
- "libVersion": "3.10.0"
+ "libVersion": "3.10.3"
}
\ No newline at end of file
diff --git a/apps/cMiniApp/src/app.config.ts b/apps/cMiniApp/src/app.config.ts
index 5d8277b..daac73e 100644
--- a/apps/cMiniApp/src/app.config.ts
+++ b/apps/cMiniApp/src/app.config.ts
@@ -91,6 +91,7 @@
'bindBankCard/bindBankCard',
'unboundBankCard/unboundBankCard',
'unboundAlipay/unboundAlipay',
+ 'bindAlipay/bindAlipay',
'incomeDetail/incomeDetail',
'incomeDetailInfo/incomeDetailInfo',
'withdraw/withdraw',
diff --git a/apps/cMiniApp/src/constants/router.ts b/apps/cMiniApp/src/constants/router.ts
index 1ca01b0..9ec415c 100644
--- a/apps/cMiniApp/src/constants/router.ts
+++ b/apps/cMiniApp/src/constants/router.ts
@@ -41,8 +41,9 @@
mineWallet = '/subpackages/wallet/mineWallet/mineWallet',
unboundBankCard = '/subpackages/wallet/unboundBankCard/unboundBankCard',
- unboundAlipay = '/subpackages/wallet/unboundAlipay/unboundAlipay',
bindBankCard = '/subpackages/wallet/bindBankCard/bindBankCard',
+ unboundAlipay = '/subpackages/wallet/unboundAlipay/unboundAlipay',
+ bindAlipay = '/subpackages/wallet/bindAlipay/bindAlipay',
incomeDetail = '/subpackages/wallet/incomeDetail/incomeDetail',
incomeDetailInfo = '/subpackages/wallet/incomeDetailInfo/incomeDetailInfo',
withdraw = '/subpackages/wallet/withdraw/withdraw',
diff --git a/apps/cMiniApp/src/subpackages/wallet/bindAlipay/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/bindAlipay/InnerPage.vue
new file mode 100644
index 0000000..eddc800
--- /dev/null
+++ b/apps/cMiniApp/src/subpackages/wallet/bindAlipay/InnerPage.vue
@@ -0,0 +1,48 @@
+<template>
+ <BindWalletView
+ :type="EnumUserBankCardAccess.AliPay"
+ :detail="detail"
+ @Unbind="handleUnbind"
+ ></BindWalletView>
+</template>
+
+<script setup lang="ts">
+import { Message } from '@12333/utils';
+import * as userServices from '@12333/services/apiV2/user';
+import { EnumUserBankCardAccess } from '@12333/constants';
+import { BindWalletView } from '@12333/components';
+import { usePersonalUserBankCard } from '../hooks';
+
+defineOptions({
+ name: 'InnerPage',
+});
+
+const switchTab = useSwitchTab();
+
+const { detail } = usePersonalUserBankCard({
+ access: EnumUserBankCardAccess.AliPay,
+});
+
+async function handleUnbind() {
+ try {
+ await Message.confirm({ message: '纭畾瑕佽В缁戞敮浠樺疂鍚楋紵' });
+ let params: API.DeletePersonalUserBankCardCommand = {
+ access: EnumUserBankCardAccess.AliPay,
+ };
+ let res = await userServices.deletePersonalUserBankCard(params);
+ if (res) {
+ Message.success('瑙g粦鎴愬姛', {
+ onClosed() {
+ switchTab({
+ url: RouterPath.mine,
+ });
+ },
+ });
+ }
+ } catch (error) {}
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.config.ts b/apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ disableScroll: true,
+});
diff --git a/apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.vue b/apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.vue
new file mode 100644
index 0000000..4c569b8
--- /dev/null
+++ b/apps/cMiniApp/src/subpackages/wallet/bindAlipay/bindAlipay.vue
@@ -0,0 +1,18 @@
+<template>
+ <PageLayout class="bindAlipay-page-wrapper" :title="'缁戝畾鏀粯瀹�'">
+ <InnerPage></InnerPage>
+ </PageLayout>
+</template>
+
+<script setup lang="ts">
+import { PageLayout } from '@/components';
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+ name: 'bindAlipay',
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue
index 9da8943..b43adc1 100644
--- a/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/wallet/bindBankCard/InnerPage.vue
@@ -1,34 +1,17 @@
<template>
- <ContentScrollView>
- <div class="bind-bank-card">
- <div class="bind-bank-card-wrapper">
- <div class="bg-left-top"></div>
- <div class="bind-bank-card-content">
- <div class="bank-card-name">{{ detail?.bank ?? '' }}</div>
- <div class="bank-card-number">
- <div class="bank-card-number-text" @click="changeBankCodeShow">
- {{ hideBankCode ? showBankCodeForEnd4(detail?.code ?? '') : detail?.code ?? '' }}
- </div>
- </div>
- <!-- <div class="bank-card-type">{{ '鍌ㄨ搫鍗�' }}</div> -->
- </div>
- <div class="bg-right-bottom"></div>
- </div>
- <div class="bind-bank-card-tips">鐩墠鍙敮鎸佷竴寮犻摱琛屽崱锛屽闇�鎹㈠崱璇峰厛瑙g粦</div>
- </div>
- </ContentScrollView>
- <PageFooter :isOnlyAction="false">
- <PageFooterBtn type="primary" @click="handleUnbind()">瑙g粦閾惰鍗�</PageFooterBtn>
- </PageFooter>
+ <BindWalletView
+ :type="EnumUserBankCardAccess.AliPay"
+ :detail="detail"
+ @Unbind="handleUnbind"
+ ></BindWalletView>
</template>
<script setup lang="ts">
-import { useUserStore } from '@/stores/modules/user';
-import { useQuery } from '@tanstack/vue-query';
-import { Message, showBankCodeForEnd4 } from '@12333/utils';
+import { Message } from '@12333/utils';
import * as userServices from '@12333/services/apiV2/user';
-import Taro from '@tarojs/taro';
import { EnumUserBankCardAccess } from '@12333/constants';
+import { BindWalletView } from '@12333/components';
+import { usePersonalUserBankCard } from '../hooks';
defineOptions({
name: 'InnerPage',
@@ -36,29 +19,8 @@
const switchTab = useSwitchTab();
-const hideBankCode = ref(true);
-
-function changeBankCodeShow() {
- hideBankCode.value = !hideBankCode.value;
-}
-
-const {
- isLoading,
- isError,
- data: detail,
- refetch,
-} = useQuery({
- queryKey: ['userServices/getPersonalUserBankCard'],
- queryFn: async () => {
- return await userServices.getPersonalUserBankCard(
- { access: EnumUserBankCardAccess.Bank },
- {
- showLoading: false,
- }
- );
- },
- placeholderData: () => ({} as API.GetPersonalUserBankCardQueryResult),
- onSuccess(data) {},
+const { detail } = usePersonalUserBankCard({
+ access: EnumUserBankCardAccess.Bank,
});
async function handleUnbind() {
@@ -83,80 +45,4 @@
<style lang="scss">
@import '@/styles/common.scss';
-
-.bindBankCard-page-wrapper {
- .bind-bank-card {
- padding-top: 40px;
-
- .bind-bank-card-wrapper {
- margin: 0 auto;
- width: 660px;
- height: 360px;
- padding: 60px 72px;
- background: linear-gradient(134deg, #6c7ff6 0%, #7996f7 100%);
- box-shadow: 0px 4 10px 5px rgba(122, 151, 248, 0.3);
- border-radius: 22px;
- position: relative;
- box-sizing: border-box;
- overflow: hidden;
-
- .bg-left-top {
- position: absolute;
- width: 148px;
- height: 130px;
- background-color: #7c8ef7;
- top: 0;
- left: 0;
- border-radius: 0 0 148px 0;
- z-index: 0;
- }
-
- .bind-bank-card-content {
- display: flex;
- flex-direction: column;
- justify-content: space-around;
- height: 100%;
- position: relative;
- z-index: 1;
-
- .bank-card-name {
- font-size: 40px;
- font-weight: 600;
- color: #ffffff;
- }
-
- .bank-card-number {
- font-size: 32px;
- color: #ffffff;
- font-weight: 600;
- }
-
- .bank-card-type {
- font-size: 24px;
- font-weight: 400;
- color: rgba(255, 255, 255, 0.5);
- }
- }
-
- .bg-right-bottom {
- position: absolute;
- width: 306px;
- height: 306px;
- background: #7d98f7;
- left: 360px;
- top: 180px;
- border-radius: 50%;
- z-index: 0;
- }
- }
-
- .bind-bank-card-tips {
- margin: 66px auto 0;
- font-size: 22px;
- font-weight: 400;
- text-align: center;
- color: boleGetCssVar('text-color', 'secondary');
- }
- }
-}
</style>
diff --git a/apps/cMiniApp/src/subpackages/wallet/hooks/index.ts b/apps/cMiniApp/src/subpackages/wallet/hooks/index.ts
index c3da143..6ab885d 100644
--- a/apps/cMiniApp/src/subpackages/wallet/hooks/index.ts
+++ b/apps/cMiniApp/src/subpackages/wallet/hooks/index.ts
@@ -1,6 +1,7 @@
import { useQuery } from '@tanstack/vue-query';
import * as userServices from '@12333/services/apiV2/user';
import { MaybeRef, unref } from 'vue';
+import { EnumUserBankCardAccess } from '@12333/constants';
type UsePersonalUserTransactionOptions = {
id?: MaybeRef<string>;
@@ -32,3 +33,34 @@
detail,
};
}
+
+type UsePersonalUserBankCardOptions = {
+ access?: EnumUserBankCardAccess;
+};
+
+export function usePersonalUserBankCard(options: UsePersonalUserBankCardOptions = {}) {
+ const { access } = options;
+
+ const {
+ isLoading,
+ isError,
+ data: detail,
+ refetch,
+ } = useQuery({
+ queryKey: ['userServices/getPersonalUserBankCard'],
+ queryFn: async () => {
+ return await userServices.getPersonalUserBankCard(
+ { access: access },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetPersonalUserBankCardQueryResult),
+ onSuccess(data) {},
+ });
+
+ return {
+ detail,
+ };
+}
diff --git a/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue
index cd66ede..8ce8c31 100644
--- a/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue
@@ -66,7 +66,7 @@
const goBankAlipay = useAccessReal(
() => {
Taro.navigateTo({
- url: `${isBindAlipay.value ? RouterPath.bindBankCard : RouterPath.unboundAlipay}`,
+ url: `${isBindAlipay.value ? RouterPath.bindAlipay : RouterPath.unboundAlipay}`,
});
},
{ message: '瀹屾垚瀹炲悕璁よ瘉鍚庢墠鍙繘琛屾敮浠樺疂缁戝畾' }
diff --git a/packages/components/src/Card/BindWalletView.vue b/packages/components/src/Card/BindWalletView.vue
new file mode 100644
index 0000000..5d9d322
--- /dev/null
+++ b/packages/components/src/Card/BindWalletView.vue
@@ -0,0 +1,135 @@
+<template>
+ <ContentScrollView>
+ <div class="bind-wallet-card">
+ <div class="bind-wallet-card-wrapper">
+ <div class="bg-left-top"></div>
+ <div class="bind-wallet-card-content">
+ <div class="wallet-card-name">{{ props.detail?.bank ?? '' }}</div>
+ <div class="wallet-card-number">
+ <div class="wallet-card-number-text" @click="changeBankCodeShow">
+ {{
+ hideBankCode
+ ? showBankCodeForEnd4(props.detail?.code ?? '')
+ : props.detail?.code ?? ''
+ }}
+ </div>
+ </div>
+ </div>
+ <div class="bg-right-bottom"></div>
+ </div>
+ <div class="bind-wallet-card-tips">
+ {{ `鐩墠鍙敮鎸佺粦瀹氫竴涓�${EnumUserBankCardAccessText[props.type]}璐﹀彿锛屽闇�鏇存崲璇峰厛瑙g粦` }}
+ </div>
+ </div>
+ </ContentScrollView>
+ <PageFooter :isOnlyAction="false">
+ <PageFooterBtn type="primary" @click="emit('Unbind')">{{
+ `瑙g粦${EnumUserBankCardAccessText[props.type]}`
+ }}</PageFooterBtn>
+ </PageFooter>
+</template>
+
+<script setup lang="ts">
+import { showBankCodeForEnd4 } from '@12333/utils';
+import { EnumUserBankCardAccess, EnumUserBankCardAccessText } from '@12333/constants';
+import { ref } from 'vue';
+
+defineOptions({
+ name: 'BindWalletView',
+});
+
+type Props = {
+ type: EnumUserBankCardAccess;
+ detail: API.GetPersonalUserBankCardQueryResult;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+ (e: 'Unbind'): void;
+}>();
+
+const hideBankCode = ref(true);
+
+function changeBankCodeShow() {
+ hideBankCode.value = !hideBankCode.value;
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.bind-wallet-card {
+ padding-top: 40px;
+
+ .bind-wallet-card-wrapper {
+ margin: 0 auto;
+ width: 660px;
+ height: 360px;
+ padding: 60px 72px;
+ background: linear-gradient(134deg, #6c7ff6 0%, #7996f7 100%);
+ box-shadow: 0px 4 10px 5px rgba(122, 151, 248, 0.3);
+ border-radius: 22px;
+ position: relative;
+ box-sizing: border-box;
+ overflow: hidden;
+
+ .bg-left-top {
+ position: absolute;
+ width: 148px;
+ height: 130px;
+ background-color: #7c8ef7;
+ top: 0;
+ left: 0;
+ border-radius: 0 0 148px 0;
+ z-index: 0;
+ }
+
+ .bind-wallet-card-content {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-around;
+ height: 100%;
+ position: relative;
+ z-index: 1;
+
+ .wallet-card-name {
+ font-size: 40px;
+ font-weight: 600;
+ color: #ffffff;
+ }
+
+ .wallet-card-number {
+ font-size: 32px;
+ color: #ffffff;
+ font-weight: 600;
+ }
+
+ .wallet-card-type {
+ font-size: 24px;
+ font-weight: 400;
+ color: rgba(255, 255, 255, 0.5);
+ }
+ }
+
+ .bg-right-bottom {
+ position: absolute;
+ width: 306px;
+ height: 306px;
+ background: #7d98f7;
+ left: 360px;
+ top: 180px;
+ border-radius: 50%;
+ z-index: 0;
+ }
+ }
+
+ .bind-wallet-card-tips {
+ margin: 66px auto 0;
+ font-size: 22px;
+ font-weight: 400;
+ text-align: center;
+ color: boleGetCssVar('text-color', 'secondary');
+ }
+}
+</style>
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index 194ffec..40631bb 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -30,6 +30,7 @@
export { default as SignCard } from './Card/SignCard.vue';
export { default as FlexJobCard } from './Card/FlexJobCard.vue';
export { default as BusinessCardHolderCard } from './Card/BusinessCardHolderCard.vue';
+export { default as BindWalletView } from './Card/BindWalletView.vue';
export { default as TaskPrice } from './Card/TaskPrice.vue';
export { default as TaskDetailWelfareItem } from './Card/TaskDetailWelfareItem.vue';
export { default as FlexJobTopView } from './Card/FlexJobTopView.vue';
diff --git a/packages/constants/enterpriseWallet.ts b/packages/constants/enterpriseWallet.ts
index 7321077..2c75872 100644
--- a/packages/constants/enterpriseWallet.ts
+++ b/packages/constants/enterpriseWallet.ts
@@ -1,4 +1,4 @@
-import { EnumEnterpriseWalletAccess } from './apiEnum';
+import { EnumEnterpriseWalletAccess, EnumUserBankCardAccess } from './apiEnum';
export const EnumEnterpriseWalletAccessTextOnlyAlipay = {
[EnumEnterpriseWalletAccess.Alipay]: '鏀粯瀹�',
@@ -15,3 +15,9 @@
[EnumEnterpriseWalletAccess.PingAnPay]: '骞冲畨閾惰缁撶畻',
[EnumEnterpriseWalletAccess.WeChatPay]: '寰俊缁撶畻',
};
+
+export const EnumUserBankCardAccessText = {
+ [EnumUserBankCardAccess.Bank]: '閾惰鍗�',
+ [EnumUserBankCardAccess.AliPay]: '鏀粯瀹�',
+ [EnumUserBankCardAccess.WeChatPay]: '寰俊',
+};
--
Gitblit v1.9.1