import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; 
 | 
import { useUser } from '@/hooks'; 
 | 
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type'; 
 | 
import { 
 | 
  EnterpriseType, 
 | 
  UserCertificationModeEnumV2, 
 | 
  VerificationCodeBusinessType, 
 | 
  UserCertificationElementEnum, 
 | 
  UserCertificationChannelEnum, 
 | 
  UserCertificationPayType, 
 | 
} from '@12333/constants'; 
 | 
import { FormValidator, Message } from '@12333/utils'; 
 | 
import { useUserCertificationSetting } from '@12333/hooks'; 
 | 
import Taro from '@tarojs/taro'; 
 | 
  
 | 
type UseAuthenticationFlowOptions = { 
 | 
  certificationMode: UserCertificationModeEnumV2; 
 | 
  certificationElement: UserCertificationElementEnum; 
 | 
}; 
 | 
  
 | 
export function useAuthenticationFlow({ 
 | 
  certificationMode, 
 | 
  certificationElement, 
 | 
}: UseAuthenticationFlowOptions) { 
 | 
  const { userDetail } = useUser(); 
 | 
  
 | 
  const form = reactive({ 
 | 
    licenseUrl: [] as FileItem[], 
 | 
    // enterpriseType: userDetail.value?.authType ?? EnterpriseType.HREnterprise, 
 | 
    enterpriseName: '', 
 | 
    societyCreditCode: '', 
 | 
    certificationMode: certificationMode, 
 | 
    certificationElement: certificationElement, 
 | 
    legalPersonName: '', 
 | 
    legalPersonIdNumber: '', 
 | 
    legalPersonIdFrontImgUrl: [] as FileItem[], 
 | 
    legalPersonIdBackImgUrl: [] as FileItem[], 
 | 
    legalPersonBankCardImgUrl: [] as FileItem[], 
 | 
    legalPersonContactPhone: '', 
 | 
    verificationCode: '', 
 | 
    proxyPersonName: '', 
 | 
    proxyPersonIdNumber: '', 
 | 
    proxyPersonContactPhone: '', 
 | 
    proxyPersonIdFrontImgUrl: [] as FileItem[], 
 | 
    proxyPersonIdBackImgUrl: [] as FileItem[], 
 | 
    proxyPersonBankCardImgUrl: [] as FileItem[], 
 | 
    proxyPowerAttorneyUrl: [] as FileItem[], 
 | 
    bankCardNumber: '', 
 | 
  }); 
 | 
  
 | 
  const rules: FormRules = { 
 | 
    licenseUrl: [ 
 | 
      { required: true, message: '请上传营业执照', validator: FormValidator.validatorArray }, 
 | 
    ], 
 | 
    enterpriseName: [{ required: true, message: '请输入企业名称' }], 
 | 
    societyCreditCode: [ 
 | 
      { required: true, message: '请输入您营业执照上的信用代码' }, 
 | 
      { message: '请输入正确的信用代码', validator: FormValidator.validatorSocietyCreditCode }, 
 | 
    ], 
 | 
    legalPersonName: [{ required: true, message: '请填写企业法人的姓名' }], 
 | 
    legalPersonIdFrontImgUrl: [ 
 | 
      { required: true, message: '请上传身份证人像面', validator: FormValidator.validatorArray }, 
 | 
    ], 
 | 
    legalPersonIdBackImgUrl: [ 
 | 
      { required: true, message: '请上传身份证国徽面', validator: FormValidator.validatorArray }, 
 | 
    ], 
 | 
    legalPersonIdNumber: [ 
 | 
      { required: true, message: '请填写企业法人的身份证号码' }, 
 | 
      { message: '请输入正确的身份证号码', validator: FormValidator.validatorIDCard }, 
 | 
    ], 
 | 
    legalPersonContactPhone: [ 
 | 
      { required: true, message: '请填写企业法人的手机号码' }, 
 | 
      { message: '请输入正确的手机号码', validator: FormValidator.validatorPhoneNumber }, 
 | 
    ], 
 | 
    verificationCode: [{ required: true, message: '请输入验证码' }], 
 | 
    proxyPersonName: [{ required: true, message: '请填写经办人的姓名' }], 
 | 
    proxyPersonIdNumber: [ 
 | 
      { required: true, message: '请填写经办人的身份证号码' }, 
 | 
      { message: '请输入正确的身份证号码', validator: FormValidator.validatorIDCard }, 
 | 
    ], 
 | 
    proxyPersonContactPhone: [ 
 | 
      { required: true, message: '请填写经办人的手机号码' }, 
 | 
      { message: '请输入正确的手机号码', validator: FormValidator.validatorPhoneNumber }, 
 | 
    ], 
 | 
    proxyPowerAttorneyUrl: [ 
 | 
      { required: true, message: '请上传企业授权书', validator: FormValidator.validatorArray }, 
 | 
    ], 
 | 
  }; 
 | 
  
 | 
  // const { updateUserInfo } = useUser(); 
 | 
  
 | 
  const formRef = ref<any>(null); 
 | 
  
 | 
  function handleSubmit() { 
 | 
    if (!formRef.value) return; 
 | 
    formRef.value.validate().then(({ valid, errors }: any) => { 
 | 
      if (valid) { 
 | 
        // addUserCertificationAudit(); 
 | 
      } 
 | 
    }); 
 | 
  } 
 | 
  
 | 
  const loading = ref(false); 
 | 
  
 | 
  // async function addUserCertificationAudit() { 
 | 
  //   try { 
 | 
  //     let params: API.AddUserCertificationAuditInput = { 
 | 
  //       enterpriseType: form.enterpriseType, 
 | 
  //       licenseUrl: form.licenseUrl[0].path, 
 | 
  //       enterpriseName: form.enterpriseName, 
 | 
  //       societyCreditCode: form.societyCreditCode, 
 | 
  //       certificationMode: form.certificationMode, 
 | 
  //       legalPersonName: form.legalPersonName, 
 | 
  //       legalPersonIdNumber: form.legalPersonIdNumber, 
 | 
  //       legalPersonIdImgUrl: form.legalPersonIdFrontImgUrl?.[0]?.path ?? '', 
 | 
  //       legalPersonIdBackImgUrl: form.legalPersonIdBackImgUrl?.[0]?.path ?? '', 
 | 
  //       legalPersonBankCardImgUrl: form.legalPersonBankCardImgUrl?.[0]?.path ?? '', 
 | 
  //       certificationContact: 
 | 
  //         form.certificationElement === UserCertificationElementEnum.Identity4 
 | 
  //           ? form.legalPersonName 
 | 
  //           : form.proxyPersonName, 
 | 
  //       certificationContactPhone: 
 | 
  //         form.certificationElement === UserCertificationElementEnum.Identity4 
 | 
  //           ? form.legalPersonContactPhone 
 | 
  //           : form.proxyPersonContactPhone, 
 | 
  //       proxyPersonName: form.proxyPersonName, 
 | 
  //       proxyPersonIdNumber: form.proxyPersonIdNumber, 
 | 
  //       proxyPersonIdImgUrl: form.proxyPersonIdFrontImgUrl?.[0]?.path ?? '', 
 | 
  //       proxyPersonIdBackImgUrl: form.proxyPersonIdBackImgUrl?.[0]?.path ?? '', 
 | 
  //       proxyPersonBankCardImgUrl: form.proxyPersonBankCardImgUrl?.[0]?.path ?? '', 
 | 
  //       proxyPowerAttorneyUrl: form.proxyPowerAttorneyUrl?.[0]?.path ?? '', 
 | 
  //       certificationChannel: UserCertificationChannelEnum.ThirdParty, 
 | 
  //       certificationElement: form.certificationElement, 
 | 
  //       vCode: form.verificationCode, 
 | 
  //       bankCardNumber: form.bankCardNumber, 
 | 
  //       payType: UserCertificationPayType.NotNeedPay, 
 | 
  //     }; 
 | 
  //     loading.value = true; 
 | 
  //     let res = await userServices.addUserCertificationAudit(params, { showLoading: false }); 
 | 
  //     if (res) { 
 | 
  //       updateUserInfo(); 
 | 
  //       Taro.redirectTo({ 
 | 
  //         url: RouterPath.authenticationResult, 
 | 
  //       }); 
 | 
  //     } 
 | 
  //   } catch (error) { 
 | 
  //   } finally { 
 | 
  //     loading.value = false; 
 | 
  //   } 
 | 
  // } 
 | 
  
 | 
  return { 
 | 
    form, 
 | 
    rules, 
 | 
    formRef, 
 | 
    handleSubmit, 
 | 
    loading, 
 | 
  }; 
 | 
} 
 | 
  
 | 
export function useDownloadPowerAttorneyTemplate() { 
 | 
  const { userCertificationSetting } = useUserCertificationSetting(); 
 | 
  
 | 
  function downloadPowerAttorneyTemplate() { 
 | 
    Taro.showLoading({ 
 | 
      title: '下载中', 
 | 
    }); 
 | 
    Taro.downloadFile({ 
 | 
      url: userCertificationSetting.value.enterprisePowerAttorneyTempPath, 
 | 
      success: function (res) { 
 | 
        Taro.hideLoading(); 
 | 
        // Message.success('下载成功'); 
 | 
        var filePath = res.tempFilePath; 
 | 
        Taro.openDocument({ 
 | 
          filePath: filePath, 
 | 
          showMenu: true, 
 | 
        }); 
 | 
      }, 
 | 
      fail: function (error: any) { 
 | 
        Taro.hideLoading(); 
 | 
        Message.error('下载失败'); 
 | 
      }, 
 | 
    }); 
 | 
  } 
 | 
  
 | 
  return { 
 | 
    downloadPowerAttorneyTemplate, 
 | 
  }; 
 | 
} 
 |