<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="请输入持卡人" /> 
 | 
      </nut-form-item> 
 | 
      <nut-form-item label="身份证号:" class="bole-form-item" prop="name"> 
 | 
        <nut-input v-model.trim="form.name" 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> 
 | 
      <nut-form-item label="开户行:" class="bole-form-item" prop="name"> 
 | 
        <nut-input v-model.trim="form.name" 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="请填写经办人的手机号码" 
 | 
          type="text" 
 | 
        > 
 | 
          <template #right> 
 | 
            <ProFormCaptcha 
 | 
              :onGetCaptcha="() => onGetCaptcha(form.phoneNumber)" 
 | 
              phonePropName="phoneNumber" 
 | 
              :validateField="formRef?.validate" 
 | 
            ></ProFormCaptcha> 
 | 
          </template> 
 | 
        </nut-input> 
 | 
      </nut-form-item> 
 | 
      <nut-form-item label="短信验证码:" class="bole-form-item" prop="verificationCode" required> 
 | 
        <nut-input 
 | 
          v-model.trim="form.verificationCode" 
 | 
          class="nut-input-text bole-input-text" 
 | 
          placeholder="请输入验证码" 
 | 
          type="number" 
 | 
        /> 
 | 
      </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 { Message } from '@12333/utils'; 
 | 
import { VerificationCodeBusinessType } from '@12333/constants'; 
 | 
import * as commonServices from '@12333/services/api/Common'; 
 | 
import Taro from '@tarojs/taro'; 
 | 
import { useQuery, useQueryClient } from '@tanstack/vue-query'; 
 | 
  
 | 
const userResumeServices = {}; 
 | 
const queryClient = useQueryClient(); 
 | 
defineOptions({ 
 | 
  name: 'InnerPage', 
 | 
}); 
 | 
  
 | 
const form = reactive({ 
 | 
  name: '', 
 | 
  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; 
 | 
  }, 
 | 
}); 
 | 
  
 | 
const rules = reactive<FormRules>({ 
 | 
  name: [{ required: true, message: '请输入持卡人' }], 
 | 
  phoneNumber: [{ required: true, message: '请输入手机号' }], 
 | 
}); 
 | 
  
 | 
async function onGetCaptcha(phoneNumber: string) { 
 | 
  await commonServices.sendPhoneCertificationVerificationCode( 
 | 
    { 
 | 
      name: form.name, 
 | 
      identity: form.name, 
 | 
      mobile: form.phoneNumber, 
 | 
      businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification, 
 | 
    }, 
 | 
    { 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.SaveUserResumeBaseInfoInput = { 
 | 
      name: form.name, 
 | 
      phoneNumber: form.phoneNumber, 
 | 
    }; 
 | 
    let res = await userResumeServices.saveUserResumeBaseInfo(params); 
 | 
    if (res) { 
 | 
      Message.success('保存成功', { 
 | 
        onClosed() { 
 | 
          Taro.navigateTo({ 
 | 
            url: `${RouterPath.mineCurriculumVitae}`, 
 | 
          }); 
 | 
          queryClient.invalidateQueries([ 
 | 
            'taskCheckReceiveServices/getCheckReceiveTaskUserSubmits', 
 | 
          ]); 
 | 
        }, 
 | 
      }); 
 | 
    } 
 | 
  } catch (error) {} 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
@import '@/styles/common.scss'; 
 | 
</style> 
 |