From 22a6de40ac6693463cdbbe9ed1e3ef05fc301afc Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期二, 23 九月 2025 14:50:34 +0800
Subject: [PATCH] feat: 绑定银行卡

---
 apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue |   93 +++++++++++++++++++++-------------------------
 1 files changed, 42 insertions(+), 51 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue
index f458fa7..b1be1c9 100644
--- a/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue
@@ -2,22 +2,22 @@
   <ContentScrollView :paddingH="false">
     <nut-form :model-value="form" ref="formRef" :rules="rules">
       <nut-form-item label="鎸佸崱浜�:" class="bole-form-item" prop="name">
-        <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ユ寔鍗′汉" />
+        <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ユ寔鍗′汉" readonly />
       </nut-form-item>
-      <nut-form-item label="韬唤璇佸彿:" class="bole-form-item" prop="name">
-        <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" />
+      <nut-form-item label="韬唤璇佸彿:" class="bole-form-item" prop="identity">
+        <nut-input v-model.trim="form.identity" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" readonly />
       </nut-form-item>
-      <nut-form-item label="閾惰鍗″彿:" class="bole-form-item" prop="name">
-        <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ラ摱琛屽崱鍙�" />
+      <nut-form-item label="閾惰鍗″彿:" class="bole-form-item" prop="code">
+        <nut-input v-model.trim="form.code" placeholder="璇疯緭鍏ラ摱琛屽崱鍙�" />
       </nut-form-item>
-      <nut-form-item label="寮�鎴疯:" class="bole-form-item" prop="name">
-        <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ュ紑鎴疯" />
+      <nut-form-item label="寮�鎴疯:" class="bole-form-item" prop="bank">
+        <nut-input v-model.trim="form.bank" placeholder="璇疯緭鍏ュ紑鎴疯" />
       </nut-form-item>
       <nut-form-item label="鎵嬫満鍙�:" class="bole-form-item" prop="phoneNumber" required>
         <nut-input
           v-model.trim="form.phoneNumber"
           class="nut-input-text bole-input-text"
-          placeholder="璇峰~鍐欑粡鍔炰汉鐨勬墜鏈哄彿鐮�"
+          placeholder="璇峰~鍐欓摱琛岄鐣欐墜鏈哄彿"
           type="text"
         >
           <template #right>
@@ -29,9 +29,9 @@
           </template>
         </nut-input>
       </nut-form-item>
-      <nut-form-item label="鐭俊楠岃瘉鐮�:" class="bole-form-item" prop="verificationCode" required>
+      <nut-form-item label="鐭俊楠岃瘉鐮�:" class="bole-form-item" prop="verifyCode" required>
         <nut-input
-          v-model.trim="form.verificationCode"
+          v-model.trim="form.verifyCode"
           class="nut-input-text bole-input-text"
           placeholder="璇疯緭鍏ラ獙璇佺爜"
           type="number"
@@ -47,55 +47,45 @@
 <script setup lang="ts">
 import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
 import { ProFormCaptcha } from 'senin-mini/components';
-import { Message } from '@12333/utils';
-import { VerificationCodeBusinessType } from '@12333/constants';
-import * as commonServices from '@12333/services/api/Common';
+import { FormValidator, Message } from '@12333/utils';
+import * as userServices from '@12333/services/apiV2/user';
 import Taro from '@tarojs/taro';
-import { useQuery, useQueryClient } from '@tanstack/vue-query';
+import { useQueryClient } from '@tanstack/vue-query';
+import { EnumUserBankCardAccess } from '@12333/constants';
 
-const userResumeServices = {};
+const { userDetail } = useUser();
 const queryClient = useQueryClient();
 defineOptions({
   name: 'InnerPage',
 });
 
 const form = reactive({
-  name: '',
+  name: userDetail.value?.name ?? '',
+  identity: userDetail.value?.identity ?? '',
   phoneNumber: '',
-  verificationCode: '',
-});
-
-const {
-  isLoading,
-  isError,
-  data: detail,
-  refetch,
-} = useQuery({
-  queryKey: ['userResumeServices/getUserResumeBaseInfo'],
-  queryFn: async () => {
-    return await userResumeServices.getUserResumeBaseInfo({
-      showLoading: false,
-    });
-  },
-  placeholderData: () => ({} as API.UserResumeBaseInfoOutput),
-  onSuccess(data) {
-    form.name = data.name;
-    form.phoneNumber = data.phoneNumber;
-  },
+  code: '',
+  bank: '',
+  bankBranch: '',
+  verifyCode: '',
 });
 
 const rules = reactive<FormRules>({
-  name: [{ required: true, message: '璇疯緭鍏ユ寔鍗′汉' }],
-  phoneNumber: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }],
+  code: [
+    { required: true, message: '璇疯緭鍏ラ摱琛屽崱鍙�' },
+    { message: '璇疯緭鍏ユ纭殑閾惰鍗″彿', validator: FormValidator.validatorBankCard },
+  ],
+  bank: [{ required: true, message: '璇疯緭鍏ュ紑鎴疯' }],
+  phoneNumber: [
+    { required: true, message: '璇峰~鍐欐墜鏈哄彿鐮�' },
+    { message: '璇疯緭鍏ユ纭殑鎵嬫満鍙风爜', validator: FormValidator.validatorPhoneNumber },
+  ],
+  verifyCode: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }],
 });
 
 async function onGetCaptcha(phoneNumber: string) {
-  await commonServices.sendPhoneCertificationVerificationCode(
+  await userServices.sendSavePersonalUserBankCardVerifyCode(
     {
-      name: form.name,
-      identity: form.name,
-      mobile: form.phoneNumber,
-      businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification,
+      phoneNumber: form.phoneNumber,
     },
     { showLoading: false }
   );
@@ -113,20 +103,21 @@
 
 async function confirm() {
   try {
-    let params: API.SaveUserResumeBaseInfoInput = {
-      name: form.name,
+    let params: API.SavePersonalUserBankCardCommand = {
+      code: form.code,
+      bank: form.bank,
       phoneNumber: form.phoneNumber,
+      verifyCode: form.verifyCode,
+      access: EnumUserBankCardAccess.Bank,
     };
-    let res = await userResumeServices.saveUserResumeBaseInfo(params);
+    let res = await userServices.savePersonalUserBankCard(params);
     if (res) {
-      Message.success('淇濆瓨鎴愬姛', {
+      Message.success('缁戝畾鎴愬姛', {
         onClosed() {
           Taro.navigateTo({
-            url: `${RouterPath.mineCurriculumVitae}`,
+            url: `${RouterPath.bindBankCard}`,
           });
-          queryClient.invalidateQueries([
-            'taskCheckReceiveServices/getCheckReceiveTaskUserSubmits',
-          ]);
+          queryClient.invalidateQueries(['authServices/getPersonalLoginInfo']);
         },
       });
     }

--
Gitblit v1.9.1