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