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