New file |
| | |
| | | <template> |
| | | <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="请输入支付宝户名" readonly /> |
| | | </nut-form-item> |
| | | <nut-form-item label="支付宝账号:" class="bole-form-item" prop="code"> |
| | | <nut-input v-model.trim="form.code" placeholder="请输入支付宝账号" /> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleConfirm">绑定支付宝</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import { ProFormCaptcha } from 'senin-mini/components'; |
| | | import { FormValidator, Message } from '@12333/utils'; |
| | | import * as userServices from '@12333/services/apiV2/user'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { useQueryClient } from '@tanstack/vue-query'; |
| | | import { EnumUserBankCardAccess } from '@12333/constants'; |
| | | |
| | | const { userDetail } = useUser(); |
| | | const switchTab = useSwitchTab(); |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | name: userDetail.value?.name ?? '', |
| | | identity: userDetail.value?.identity ?? '', |
| | | phoneNumber: '', |
| | | code: '', |
| | | bank: '', |
| | | bankBranch: '', |
| | | verifyCode: '', |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | 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 userServices.sendSavePersonalUserBankCardVerifyCode( |
| | | { |
| | | phoneNumber: form.phoneNumber, |
| | | }, |
| | | { showLoading: false } |
| | | ); |
| | | } |
| | | |
| | | const formRef = ref<any>(null); |
| | | function handleConfirm() { |
| | | if (!formRef.value) return; |
| | | formRef.value.validate().then(({ valid, errors }: any) => { |
| | | if (valid) { |
| | | confirm(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | async function confirm() { |
| | | try { |
| | | let params: API.SavePersonalUserBankCardCommand = { |
| | | code: form.code, |
| | | bank: form.bank, |
| | | phoneNumber: form.phoneNumber, |
| | | verifyCode: form.verifyCode, |
| | | access: EnumUserBankCardAccess.Bank, |
| | | }; |
| | | let res = await userServices.savePersonalUserBankCard(params); |
| | | if (res) { |
| | | Message.success('绑定成功', { |
| | | onClosed() { |
| | | switchTab({ |
| | | url: RouterPath.mine, |
| | | }); |
| | | }, |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |