| | |
| | | <template> |
| | | <LoadingLayout :loading="isLoading"> |
| | | <ProForm :model="form" ref="dialogForm" label-width="130px"> |
| | | <ProForm :model="form" ref="dialogForm" label-width="210px"> |
| | | <ProFormItemV2 |
| | | label="联系人姓名:" |
| | | prop="name" |
| | | :checkRules="[{ message: '请输入联系人姓名' }]" |
| | | label="业务申请编号:" |
| | | prop="business_code" |
| | | :checkRules="[{ message: '请输入业务申请编号', pattern: /^[a-zA-Z0-9_]+$/ }]" |
| | | > |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入联系人姓名"> </ProFormText> |
| | | <ProFormText v-model.trim="form.business_code" placeholder="请输入业务申请编号"> |
| | | </ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="联系人类型:" |
| | | prop="name" |
| | | :checkRules="[{ message: '请选择联系人类型' }]" |
| | | label="超级管理员类型:" |
| | | prop="contact_type" |
| | | :checkRules="[{ message: '请选择超级管理员类型' }]" |
| | | > |
| | | <ProFormRadio v-model.trim="form.name" :value-enum="[]" button-style /> |
| | | <ProFormRadio |
| | | v-model.trim="form.contact_type" |
| | | :value-enum="EnumWeChatPayApplymentContactTypeText" |
| | | :button-style="false" |
| | | :convertEnumValue="false" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="业务办理授权函:" |
| | | prop="url" |
| | | :check-rules="[{ type: 'upload', message: '请上传业务办理授权函' }]" |
| | | label="超级管理员姓名:" |
| | | prop="contact_name" |
| | | :checkRules="[{ message: '请输入超级管理员姓名' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="100" |
| | | v-model.trim="form.contact_name" |
| | | placeholder="请输入超级管理员姓名" |
| | | > |
| | | </ProFormText> |
| | | </ProFormItemV2> |
| | | <template v-if="form.contact_type === EnumWeChatPayApplymentContactType.SUPER"> |
| | | <ProFormItemV2 |
| | | label="超级管理员证件类型:" |
| | | prop="contact_id_doc_type" |
| | | :checkRules="[{ message: '请选择超级管理员证件类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.contact_id_doc_type" |
| | | :valueEnum="EnumWeChatPayApplymentIdDocTypeText" |
| | | placeholder="请选择超级管理员证件类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="超级管理员证件号码:" |
| | | prop="contact_id_number" |
| | | :checkRules="[{ message: '请输入超级管理员证件号码' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.contact_id_number" placeholder="请输入超级管理员证件号码"> |
| | | </ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件正面照片:" |
| | | prop="contact_id_doc_copy" |
| | | :check-rules="[{ type: 'upload', message: '请上传证件正面照片' }]" |
| | | > |
| | | <ProFormImageUpload |
| | | v-model:file-url="form.contact_id_doc_copy" |
| | | :limit-file-count="1" |
| | | ></ProFormImageUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件反面照片:" |
| | | prop="contact_id_doc_copy_back" |
| | | :check-rules="[{ type: 'upload', message: '请上传证件反面照片' }]" |
| | | > |
| | | <ProFormImageUpload |
| | | v-model:file-url="form.contact_id_doc_copy_back" |
| | | :limit-file-count="1" |
| | | ></ProFormImageUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件有效期:" |
| | | prop="contact_period" |
| | | :check-rules="[{ type: 'array', message: '请选择证件有效期' }]" |
| | | > |
| | | <ProFormDatePicker |
| | | v-model="form.contact_period" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | | end-placeholder="到期日期" |
| | | clearable |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="业务办理授权函:" |
| | | prop="business_authorization_letter" |
| | | :check-rules="[{ type: 'upload', message: '请上传业务办理授权函' }]" |
| | | > |
| | | <div style="display: flex"> |
| | | <ProFormUpload |
| | | v-model:file-url="form.business_authorization_letter" |
| | | :limit="1" |
| | | :limitFileSize="10" |
| | | accept="png,jpg,jpeg,pdf" |
| | | ></ProFormUpload> |
| | | <el-button style="margin-left: 10px" type="primary" link @click="downloadTemplate" |
| | | >模板下载</el-button |
| | | > |
| | | </div> |
| | | </ProFormItemV2> |
| | | </template> |
| | | <ProFormItemV2 |
| | | label="联系手机:" |
| | | prop="mobile_phone" |
| | | :checkRules="[{ type: 'phone', message: '请输入联系手机' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.mobile_phone" placeholder="请输入联系手机" /> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | label="联系邮箱:" |
| | | prop="contact_email" |
| | | :checkRules="[{ type: 'email', message: '请输入联系邮箱' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.contact_email" placeholder="请输入联系邮箱" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="主体类型:" |
| | | prop="subject_type" |
| | | :checkRules="[{ message: '请选择主体类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.subject_type" |
| | | :valueEnum="EnumWeChatPayApplymentSubjectTypeText" |
| | | placeholder="请选择主体类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_INDIVIDUAL || |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_ENTERPRISE |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="营业执照:" |
| | | prop="license_copy" |
| | | :check-rules="[{ type: 'upload', message: '请上传营业执照' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.license_copy" |
| | | :limitFileCount="1" |
| | | :on-success="handleLicenseUrlChange" |
| | | accept="jpg/jpeg,png,pdf" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="商户名称:" |
| | | prop="merchant_name" |
| | | :checkRules="[{ message: '请输入商户名称' }]" |
| | | > |
| | | <ProFormText |
| | | :maxlength="128" |
| | | :minlength="2" |
| | | show-word-limit |
| | | v-model.trim="form.merchant_name" |
| | | placeholder="请输入商户名称" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="统一社会信用代码:" |
| | | prop="license_number" |
| | | :checkRules="[{ message: '请输入统一社会信用代码', type: 'societyCreditCode' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.license_number" placeholder="请输入统一社会信用代码" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="法人姓名:" |
| | | prop="legal_person" |
| | | :checkRules="[{ message: '请输入法人姓名' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="100" |
| | | v-model.trim="form.legal_person" |
| | | placeholder="请输入法人姓名" |
| | | /> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_GOVERNMENT || |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_INSTITUTIONS || |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_OTHERS |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="登记证书照片:" |
| | | prop="cert_copy" |
| | | :check-rules="[{ type: 'upload', message: '请上传登记证书照片' }]" |
| | | > |
| | | <ProFormImageUpload |
| | | v-model:file-url="form.cert_copy" |
| | | :limit-file-count="1" |
| | | ></ProFormImageUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="登记证书类型:" |
| | | prop="cert_type" |
| | | :checkRules="[{ message: '请选择登记证书类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.cert_type" |
| | | :valueEnum="EnumWeChatPayApplymentCertTypeTextList" |
| | | placeholder="请选择登记证书类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="登记证书号:" |
| | | prop="cert_number" |
| | | :checkRules="[{ message: '请输入登记证书号' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.cert_number" placeholder="请输入登记证书号" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="商户名称:" |
| | | prop="cert_merchant_name" |
| | | :checkRules="[{ message: '请输入商户名称' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="128" |
| | | v-model.trim="form.cert_merchant_name" |
| | | placeholder="请输入商户名称" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="注册地址:" |
| | | prop="cert_company_address" |
| | | :checkRules="[{ message: '请输入注册地址' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="4" |
| | | :maxlength="128" |
| | | v-model.trim="form.cert_company_address" |
| | | placeholder="请输入注册地址" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="法定代表人:" |
| | | prop="cert_legal_person" |
| | | :checkRules="[{ message: '请输入法定代表人' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="100" |
| | | v-model.trim="form.cert_legal_person" |
| | | placeholder="请输入法定代表人" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件有效期:" |
| | | prop="cert_period" |
| | | :check-rules="[{ type: 'array', message: '请选择证件有效期' }]" |
| | | > |
| | | <ProFormDatePicker |
| | | v-model="form.cert_period" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | | end-placeholder="到期日期" |
| | | clearable |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <ProFormItemV2 |
| | | label="证件持有人类型:" |
| | | prop="id_holder_type" |
| | | :checkRules="[{ message: '请选择证件持有人类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.id_holder_type" |
| | | :valueEnum="EnumWeChatPayApplymentIdHolderTypeTextList" |
| | | placeholder="请选择证件持有人类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | v-if="form.id_holder_type === EnumWeChatPayApplymentIdHolderType.LEGAL" |
| | | label="证件持有人证件类型:" |
| | | prop="id_doc_type" |
| | | :checkRules="[{ message: '请选择证件持有人证件类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.id_doc_type" |
| | | :valueEnum="id_doc_typeList" |
| | | placeholder="请选择证件持有人证件类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | v-if="form.id_holder_type === EnumWeChatPayApplymentIdHolderType.SUPER" |
| | | label="法定代表人说明函:" |
| | | prop="authorize_letter_copy" |
| | | :check-rules="[{ type: 'upload', message: '请上传法定代表人说明函' }]" |
| | | > |
| | | <div style="display: flex"> |
| | | <ProFormUpload |
| | | v-model:file-url="form.url" |
| | | v-model:file-url="form.authorize_letter_copy" |
| | | :limit="1" |
| | | :limitFileSize="10" |
| | | accept="png,jpg,jpeg,pdf" |
| | | ></ProFormUpload> |
| | | <el-button style="margin-left: 10px" type="primary" link @click="downloadTemplate" |
| | | <el-button style="margin-left: 10px" type="primary" link @click="downloadFRTemplate" |
| | | >模板下载</el-button |
| | | > |
| | | </div> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="手机号:" |
| | | prop="name" |
| | | :checkRules="[{ type: 'phone', message: '请输入手机号' }]" |
| | | |
| | | <template |
| | | v-if=" |
| | | form.id_holder_type === EnumWeChatPayApplymentIdHolderType.LEGAL && |
| | | form.id_doc_type === EnumWeChatPayApplymentIdDocType.IDENTIFICATION_TYPE_IDCARD |
| | | " |
| | | > |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入手机号" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="电子邮箱:" |
| | | prop="name" |
| | | :checkRules="[{ type: 'email', message: '请输入电子邮箱' }]" |
| | | <ProFormItemV2 |
| | | label="身份证人像面:" |
| | | prop="id_card_copy" |
| | | :check-rules="[{ type: 'upload', message: '请上传身份证人像面' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.id_card_copy" |
| | | :limitFileCount="1" |
| | | :on-success="handleFrontImgUrlChange" |
| | | accept="jpg/jpeg,png,pdf" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="身份证国徽面:" |
| | | prop="id_card_national" |
| | | :check-rules="[{ type: 'upload', message: '请上传身份证国徽面' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.id_card_national" |
| | | :limitFileCount="1" |
| | | accept="jpg/jpeg,png,pdf" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="身份证姓名:" |
| | | prop="id_card_name" |
| | | :checkRules="[{ message: '请输入身份证姓名' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="100" |
| | | v-model.trim="form.id_card_name" |
| | | placeholder="请输入身份证姓名" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="身份证号码:" |
| | | prop="id_card_number" |
| | | :checkRules="[{ message: '请输入身份证号码', type: 'idCard' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.id_card_number" placeholder="请输入身份证号码" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="身份证有效期:" |
| | | prop="id_card_period" |
| | | :checkRules="[{ message: '请选择身份证有效期', type: 'array' }]" |
| | | > |
| | | <ProFormDatePicker |
| | | v-model="form.id_card_period" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | | end-placeholder="到期日期" |
| | | clearable |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.id_holder_type === EnumWeChatPayApplymentIdHolderType.LEGAL && |
| | | form.id_doc_type !== EnumWeChatPayApplymentIdDocType.IDENTIFICATION_TYPE_IDCARD |
| | | " |
| | | > |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入电子邮箱" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="主体类型:" prop="name" :checkRules="[{ message: '请选择主体类型' }]"> |
| | | <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="请选择主体类型"> |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件正面照片:" |
| | | prop="id_doc_copy" |
| | | :check-rules="[{ type: 'upload', message: '请上传证件正面照片' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.id_doc_copy" |
| | | :limitFileCount="1" |
| | | accept="jpg/jpeg,png,pdf" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | label="证件姓名:" |
| | | prop="id_doc_name" |
| | | :checkRules="[{ message: '请输入证件姓名' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="100" |
| | | v-model.trim="form.id_doc_name" |
| | | placeholder="请输入证件姓名" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件号码:" |
| | | prop="id_doc_number" |
| | | :checkRules="[{ message: '请输入证件号码' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.id_doc_number" placeholder="请输入证件号码" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="证件有效期:" |
| | | prop="id_doc_period" |
| | | :checkRules="[{ message: '请选择证件有效期', type: 'array' }]" |
| | | > |
| | | <ProFormDatePicker |
| | | v-model="form.id_doc_period" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | | end-placeholder="到期日期" |
| | | clearable |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <div |
| | | class="ubo-info-list-wrapper" |
| | | v-if="form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_ENTERPRISE" |
| | | > |
| | | <div class="ubo-info-list-top"> |
| | | <div class="ubo-info-list-title">最终受益人信息列表</div> |
| | | <div class="ubo-info-list-btn"> |
| | | <el-button type="primary" link @click="addUboInfo">添加</el-button> |
| | | </div> |
| | | </div> |
| | | <div v-for="(item, index) in form.ubo_info_list" :key="index"> |
| | | <ProFormItemV2 |
| | | :label="`第${index + 1}个证件类型:`" |
| | | :prop="`ubo_info_list.${index}.ubo_id_doc_type`" |
| | | :checkRules="[{ message: '请选择证件类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="item.ubo_id_doc_type" |
| | | :valueEnum="EnumWeChatPayApplymentIdDocTypeText" |
| | | placeholder="请选择证件类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | :label="`第${index + 1}个证件正面照片:`" |
| | | :prop="`ubo_info_list.${index}.ubo_id_doc_copy`" |
| | | :check-rules="[{ type: 'upload', message: '请上传证件正面照片' }]" |
| | | > |
| | | <ProFormImageUpload |
| | | v-model:file-url="item.ubo_id_doc_copy" |
| | | :limit-file-count="1" |
| | | ></ProFormImageUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | :label="`第${index + 1}个证件姓名:`" |
| | | :prop="`ubo_info_list.${index}.ubo_id_doc_name`" |
| | | :checkRules="[{ message: '请输入证件姓名' }]" |
| | | > |
| | | <ProFormText |
| | | :minlength="2" |
| | | :maxlength="100" |
| | | v-model.trim="item.ubo_id_doc_name" |
| | | placeholder="请输入证件姓名" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | :label="`第${index + 1}个证件号码:`" |
| | | :prop="`ubo_info_list.${index}.ubo_id_doc_number`" |
| | | :checkRules="[{ message: '请输入证件号码' }]" |
| | | > |
| | | <ProFormText v-model.trim="item.ubo_id_doc_number" placeholder="请输入证件号码" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | :label="`第${index + 1}个证件居住地址:`" |
| | | :prop="`ubo_info_list.${index}.ubo_id_doc_address`" |
| | | :checkRules="[{ message: '请输入证件居住地址' }]" |
| | | > |
| | | <ProFormText v-model.trim="item.ubo_id_doc_address" placeholder="请输入证件居住地址" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | :label="`第${index + 1}个证件有效期:`" |
| | | :prop="`ubo_info_list.${index}.ubo_period`" |
| | | :checkRules="[{ message: '请选择证件有效期', type: 'array' }]" |
| | | > |
| | | <ProFormDatePicker |
| | | v-model="item.ubo_period" |
| | | type="daterange" |
| | | range-separator="~" |
| | | start-placeholder="起始日期" |
| | | end-placeholder="到期日期" |
| | | clearable |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | <el-button type="primary" link @click="deleteUboInfo(index)">删除</el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <ProFormItemV2 |
| | | label="商户简称:" |
| | | prop="name" |
| | | :checkRules="[{ type: 'phone', message: '请输入商户简称' }]" |
| | | prop="merchant_shortname" |
| | | :checkRules="[{ message: '请输入商户简称' }]" |
| | | > |
| | | <ProFormText |
| | | :maxlength="64" |
| | | :minlength="1" |
| | | :maxlength="60" |
| | | show-word-limit |
| | | v-model.trim="form.name" |
| | | v-model.trim="form.merchant_shortname" |
| | | placeholder="请输入商户简称" |
| | | /> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | label="客服电话:" |
| | | prop="name" |
| | | prop="service_phone" |
| | | :checkRules="[{ type: 'tel', message: '请输入客服电话' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入客服电话" /> |
| | | <ProFormText v-model.trim="form.service_phone" placeholder="请输入客服电话" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="经营场景:" prop="name" :checkRules="[{ message: '请选择经营场景' }]"> |
| | | <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="请选择经营场景"> |
| | | |
| | | <ProFormItemV2 |
| | | label="经营场景类型:" |
| | | prop="sales_scenes_type" |
| | | :checkRules="[{ message: '请选择经营场景类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.sales_scenes_type" |
| | | :valueEnum="EnumWeChatPayApplymentSalesScenesTypeText" |
| | | placeholder="请选择经营场景类型" |
| | | multiple |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_STORE) |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="线下场所名称:" |
| | | prop="biz_store_name" |
| | | :checkRules="[{ message: '请输入线下场所名称' }]" |
| | | > |
| | | <ProFormText |
| | | :maxlength="50" |
| | | v-model.trim="form.biz_store_name" |
| | | placeholder="请输入线下场所名称" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="线下场所省市编码:" |
| | | prop="biz_address_code" |
| | | :checkRules="[{ message: '请输入线下场所省市编码', type: 'number' }]" |
| | | > |
| | | <div style="display: flex; width: 100%"> |
| | | <ProFormText |
| | | v-model.trim="form.biz_address_code" |
| | | placeholder="请输入线下场所省市编码" |
| | | /> |
| | | <el-button type="primary" link @click="downloadAddressCodeTemplate" |
| | | >省市编码模板</el-button |
| | | > |
| | | </div> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="线下场所地址:" |
| | | prop="biz_store_address" |
| | | :checkRules="[{ message: '请输入线下场所地址' }]" |
| | | > |
| | | <ProFormText |
| | | :maxlength="512" |
| | | :minlength="4" |
| | | v-model.trim="form.biz_store_address" |
| | | placeholder="请输入线下场所地址" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="线下场所门头照片:" |
| | | prop="store_entrance_pic" |
| | | :check-rules="[{ type: 'upload', message: '请上传线下场所门头照片' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.store_entrance_pic" |
| | | accept="jpg/jpeg,png" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="线下场所内部照片:" |
| | | prop="indoor_pic" |
| | | :check-rules="[{ type: 'upload', message: '请上传线下场所内部照片' }]" |
| | | > |
| | | <ProFormUpload v-model:file-url="form.indoor_pic" accept="jpg/jpeg,png"></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </template> |
| | | <template |
| | | v-if=" |
| | | form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_MP) |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="服务商服务号或公众号AppID:" |
| | | prop="mp_appid" |
| | | :checkRules="[ |
| | | { |
| | | message: '服务商服务号或公众号AppID', |
| | | validator: (rule, value, callback) => { |
| | | if (form.mp_appid || form.mp_sub_appid) { |
| | | callback(); |
| | | } |
| | | callback(new Error('请输入服务商服务号或公众号AppID')); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | v-model.trim="form.mp_appid" |
| | | placeholder="请输入服务商服务号或公众号AppID(服务商服务号或公众号AppID、商家服务号或公众号AppID,二选一必填)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="商家服务号或公众号AppID:" |
| | | prop="mp_sub_appid" |
| | | :checkRules="[ |
| | | { |
| | | message: '请输入商家服务号或公众号AppID', |
| | | validator: (rule, value, callback) => { |
| | | if (form.mp_appid || form.mp_sub_appid) { |
| | | callback(); |
| | | } |
| | | callback(new Error('请输入商家服务号或公众号AppID')); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | v-model.trim="form.mp_sub_appid" |
| | | placeholder="请输入商家服务号或公众号AppID(服务商服务号或公众号AppID、商家服务号或公众号AppID,二选一必填)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="小程序截图:" |
| | | prop="mp_pics" |
| | | :check-rules="[{ type: 'upload', message: '请上传小程序截图' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.mp_pics" |
| | | :limitFileCount="5" |
| | | accept="jpg/jpeg,png" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </template> |
| | | <template |
| | | v-if=" |
| | | form.sales_scenes_type.includes( |
| | | EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_MINI_PROGRAM |
| | | ) |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="服务商小程序AppID:" |
| | | prop="mini_program_appid" |
| | | :checkRules="[ |
| | | { |
| | | message: '请输入服务商小程序AppID', |
| | | validator: (rule, value, callback) => { |
| | | if (form.mini_program_appid || form.mini_program_sub_appid) { |
| | | callback(); |
| | | } |
| | | callback(new Error('请输入服务商小程序AppID')); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | v-model.trim="form.mini_program_appid" |
| | | placeholder="请输入服务商小程序AppID(服务商小程序AppID与商家小程序AppID,二选一必填)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="商家小程序AppID:" |
| | | prop="mini_program_sub_appid" |
| | | :checkRules="[ |
| | | { |
| | | message: '请输入商家小程序AppID', |
| | | validator: (rule, value, callback) => { |
| | | if (form.mini_program_appid || form.mini_program_sub_appid) { |
| | | callback(); |
| | | } |
| | | callback(new Error('请输入服务商小程序AppID')); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | v-model.trim="form.mini_program_sub_appid" |
| | | placeholder="请输入商家小程序AppID(服务商小程序AppID与商家小程序AppID,二选一必填)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="小程序截图:" |
| | | prop="mini_program_pics" |
| | | :check-rules="[{ type: 'upload', message: '请上传小程序截图' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.mini_program_pics" |
| | | :limitFileCount="5" |
| | | accept="jpg/jpeg,png" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_APP) |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="服务商应用AppID:" |
| | | prop="app_appid" |
| | | :checkRules="[ |
| | | { |
| | | message: '服务商应用AppID', |
| | | validator: (rule, value, callback) => { |
| | | if (form.app_appid || form.mp_sub_appid) { |
| | | callback(); |
| | | } |
| | | callback(new Error('请输入服务商应用AppID')); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | v-model.trim="form.app_appid" |
| | | placeholder="请输入服务商应用AppID(服务商应用AppID与商家应用AppID,二选一必填)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="商家应用AppID:" |
| | | prop="app_sub_appid" |
| | | :checkRules="[ |
| | | { |
| | | message: '请输入商家应用AppID', |
| | | validator: (rule, value, callback) => { |
| | | if (form.mp_appid || form.app_sub_appid) { |
| | | callback(); |
| | | } |
| | | callback(new Error('请输入商家应用AppID')); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | v-model.trim="form.app_sub_appid" |
| | | placeholder="请输入商家应用AppID(服务商应用AppID与商家应用AppID,二选一必填)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="App截图:" |
| | | prop="app_pics" |
| | | :check-rules="[{ type: 'upload', message: '请上传App截图' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.app_pics" |
| | | :limitFileCount="4" |
| | | accept="jpg/jpeg,png" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_WEB) |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="互联网网站域名:" |
| | | prop="domain" |
| | | :checkRules="[{ message: '请输入互联网网站域名' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.domain" placeholder="请输入互联网网站域名" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="网站授权函:" prop="web_authorisation"> |
| | | <div style="display: flex"> |
| | | <ProFormUpload |
| | | v-model:file-url="form.web_authorisation" |
| | | :limit="1" |
| | | :limitFileSize="10" |
| | | accept="png,jpg,jpeg,pdf" |
| | | ></ProFormUpload> |
| | | <el-button |
| | | style="margin-left: 10px" |
| | | type="primary" |
| | | link |
| | | @click="downloadWebAuthorisationTemplate" |
| | | >模板下载</el-button |
| | | > |
| | | </div> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <template |
| | | v-if=" |
| | | form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_WEWORK) |
| | | " |
| | | > |
| | | <ProFormItemV2 |
| | | label="商家企业微信CorpID:" |
| | | prop="sub_corp_id" |
| | | :checkRules="[{ message: '请输入商家企业微信CorpID' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.sub_corp_id" placeholder="请输入商家企业微信CorpID" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="企业微信页面截图:" |
| | | prop="wework_pics" |
| | | :check-rules="[{ type: 'upload', message: '请上传企业微信页面截图' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.wework_pics" |
| | | :limitFileCount="5" |
| | | accept="jpg/jpeg,png" |
| | | ></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <ProFormItemV2 |
| | | label="入驻结算ID:" |
| | | prop="name" |
| | | :checkRules="[{ message: '请输入入驻结算ID' }]" |
| | | label="入驻结算规则ID:" |
| | | prop="settlement_id" |
| | | :checkRules="[{ message: '请输入入驻结算规则ID' }]" |
| | | > |
| | | <div style="display: flex; width: 100%"> |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入入驻结算ID" /> |
| | | <ProFormText v-model.trim="form.settlement_id" placeholder="请输入入驻结算规则ID" /> |
| | | <el-button style="margin-left: 10px" type="primary" link @click="openOuterSettleRule" |
| | | >费率结算规则对照表</el-button |
| | | > |
| | | </div> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | label="特殊资质照片:" |
| | | prop="url" |
| | | :check-rules="[{ type: 'upload', message: '请上传特殊资质照片' }]" |
| | | label="所属行业:" |
| | | prop="qualification_type" |
| | | :checkRules="[{ message: '请输入所属行业' }]" |
| | | > |
| | | <ProFormUpload |
| | | v-model:file-url="form.url" |
| | | :limit="5" |
| | | :limitFileSize="10" |
| | | accept="png,jpg,jpeg,pdf" |
| | | ></ProFormUpload> |
| | | <ProFormText |
| | | :maxlength="50" |
| | | v-model.trim="form.qualification_type" |
| | | placeholder="请输入所属行业(详细参见费率结算规则对照表)" |
| | | /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="结算账户:" prop="name" :checkRules="[{ message: '请选择结算账户' }]"> |
| | | <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="请选择结算账户"> |
| | | <ProFormItemV2 label="特殊资质图片:" prop="qualifications"> |
| | | <ProFormUpload v-model:file-url="form.qualifications" accept="jpg/jpeg,png"></ProFormUpload> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="结算银行账户类型:" |
| | | prop="bank_account_type" |
| | | :checkRules="[{ message: '请选择结算银行账户类型' }]" |
| | | > |
| | | <ProFormSelect |
| | | v-model="form.bank_account_type" |
| | | :valueEnum="EnumWeChatPayApplymentBankAccountTypeText" |
| | | placeholder="请选择结算银行账户类型" |
| | | > |
| | | </ProFormSelect> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="开户银行:" |
| | | prop="name" |
| | | :checkRules="[{ type: 'phone', message: '请输入开户银行' }]" |
| | | label="开户名称:" |
| | | prop="account_name" |
| | | :checkRules="[{ message: '请输入开户名称' }]" |
| | | > |
| | | <ProFormText :maxlength="64" v-model.trim="form.name" placeholder="请输入开户银行" /> |
| | | <ProFormText v-model.trim="form.account_name" placeholder="请输入开户名称" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="开户银行:" |
| | | prop="account_bank" |
| | | :checkRules="[{ message: '请输入开户银行' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.account_bank" placeholder="请输入开户银行" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="开户银行省市编码:" |
| | | prop="bank_address_code" |
| | | :checkRules="[{ message: '请输入开户银行省市编码' }]" |
| | | > |
| | | <div style="display: flex; width: 100%"> |
| | | <ProFormText v-model.trim="form.bank_address_code" placeholder="请输入开户银行省市编码" /> |
| | | <el-button type="primary" link @click="downloadAddressCodeTemplate" |
| | | >省市编码模板</el-button |
| | | > |
| | | </div> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="开户银行银行号:" |
| | | prop="bank_branch_id" |
| | | :checkRules="[{ message: '请输入开户银行银行号' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.bank_branch_id" placeholder="请输入开户银行银行号" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="开户银行全称(含支行):" |
| | | prop="bank_name" |
| | | :checkRules="[{ message: '请输入开户银行全称(含支行)' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.bank_name" placeholder="请输入开户银行全称(含支行)" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="银行账号:" |
| | | prop="name" |
| | | :checkRules="[{ type: 'tel', message: '请输入银行账号' }]" |
| | | prop="account_number" |
| | | :checkRules="[{ message: '请输入银行账号', type: 'bankCard' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入银行账号" /> |
| | | <ProFormText v-model.trim="form.account_number" placeholder="请输入银行账号" /> |
| | | </ProFormItemV2> |
| | | </ProForm> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormInstance } from 'element-plus'; |
| | | import { FormInstance, ModelValueType } from 'element-plus'; |
| | | import { |
| | | ProForm, |
| | | ProFormItemV2, |
| | |
| | | ProFormUpload, |
| | | useFormDialog, |
| | | ProFormRadio, |
| | | ProFormDatePicker, |
| | | ProFormImageUpload, |
| | | ProFormInputNumber, |
| | | } from '@bole-core/components'; |
| | | import * as enterpriseWalletServices from '@/services/api/enterpriseWallet'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { convertWalletApiToFiles, convertWalletFilesToApi, downloadFileByUrl } from '@/utils'; |
| | | import { vatLicense, userCredentialVerifyOcrIDCard } from '@/hooks'; |
| | | import { |
| | | EnumWeChatPayApplymentContactType, |
| | | EnumWeChatPayApplymentContactTypeText, |
| | | EnumWeChatPayApplymentIdDocType, |
| | | EnumWeChatPayApplymentIdDocTypeText, |
| | | EnumWeChatPayApplymentSubjectType, |
| | | EnumWeChatPayApplymentSubjectTypeText, |
| | | EnumWeChatPayApplymentCertTypeTextForSYDW, |
| | | EnumWeChatPayApplymentCertTypeTextForZFJG, |
| | | EnumWeChatPayApplymentCertTypeTextForSHZZ, |
| | | EnumWeChatPayApplymentIdHolderType, |
| | | EnumWeChatPayApplymentIdHolderTypeText, |
| | | EnumWeChatPayApplymentIdHolderTypeTextOnlyLEGAL, |
| | | EnumWeChatPayApplymentSalesScenesType, |
| | | EnumWeChatPayApplymentSalesScenesTypeText, |
| | | EnumWeChatPayApplymentBankAccountTypeText, |
| | | } from '@/constants'; |
| | | import { convertApi2FormUrl, convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils'; |
| | | import { Message } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'WechatConfigureView', |
| | |
| | | id: string; |
| | | }; |
| | | |
| | | type UboInfo = { |
| | | ubo_id_doc_type: EnumWeChatPayApplymentIdDocType; |
| | | ubo_id_doc_copy: UploadUserFile[]; |
| | | ubo_id_doc_name: string; |
| | | ubo_id_doc_number: string; |
| | | ubo_id_doc_address: string; |
| | | ubo_period: ModelValueType; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const dialogForm = ref<FormInstance>(); |
| | | |
| | | const form = reactive({ |
| | | name: '', |
| | | url: [] as UploadUserFile[], |
| | | business_code: '', |
| | | contact_type: EnumWeChatPayApplymentContactType.LEGAL, |
| | | contact_name: '', |
| | | contact_id_doc_type: '' as any as EnumWeChatPayApplymentIdDocType, |
| | | contact_id_number: '', |
| | | contact_id_doc_copy: [] as UploadUserFile[], |
| | | contact_id_doc_copy_back: [] as UploadUserFile[], |
| | | contact_period: [] as ModelValueType, |
| | | business_authorization_letter: [] as UploadUserFile[], |
| | | mobile_phone: '', |
| | | contact_email: '', |
| | | subject_type: '' as any as EnumWeChatPayApplymentSubjectType, |
| | | license_copy: [] as UploadUserFile[], |
| | | merchant_name: '', |
| | | license_number: '', |
| | | legal_person: '', |
| | | cert_copy: [] as UploadUserFile[], |
| | | cert_type: '' as any as EnumWeChatPayApplymentCertType, |
| | | cert_number: '', |
| | | cert_merchant_name: '', |
| | | cert_company_address: '', |
| | | cert_legal_person: '', |
| | | cert_period: [] as ModelValueType, |
| | | id_holder_type: '' as any as EnumWeChatPayApplymentIdHolderType, |
| | | id_doc_type: '' as any as EnumWeChatPayApplymentIdDocType, |
| | | authorize_letter_copy: [] as UploadUserFile[], |
| | | id_card_copy: [] as UploadUserFile[], |
| | | id_card_national: [] as UploadUserFile[], |
| | | id_card_name: '', |
| | | id_card_number: '', |
| | | id_card_address: '', |
| | | id_card_period: [] as ModelValueType, |
| | | id_doc_copy: [] as UploadUserFile[], |
| | | id_doc_name: '', |
| | | id_doc_number: '', |
| | | id_doc_period: [] as ModelValueType, |
| | | ubo_info_list: [] as UboInfo[], |
| | | merchant_shortname: '', |
| | | service_phone: '', |
| | | sales_scenes_type: [] as any as EnumWeChatPayApplymentSalesScenesType[], |
| | | biz_store_name: '', |
| | | biz_address_code: '', |
| | | biz_store_address: '', |
| | | store_entrance_pic: [] as UploadUserFile[], |
| | | indoor_pic: [] as UploadUserFile[], |
| | | mp_appid: '', |
| | | mp_sub_appid: '', |
| | | mp_pics: [] as UploadUserFile[], |
| | | mini_program_appid: '', |
| | | mini_program_sub_appid: '', |
| | | mini_program_pics: [] as UploadUserFile[], |
| | | app_appid: '', |
| | | app_sub_appid: '', |
| | | app_pics: [] as UploadUserFile[], |
| | | domain: '', |
| | | web_authorisation: [] as UploadUserFile[], |
| | | sub_corp_id: '', |
| | | wework_pics: [] as UploadUserFile[], |
| | | settlement_id: '', |
| | | qualification_type: '', |
| | | qualifications: [] as UploadUserFile[], |
| | | bank_account_type: '' as any as EnumWeChatPayApplymentBankAccountType, |
| | | account_name: '', |
| | | account_bank: '', |
| | | bank_address_code: '', |
| | | bank_branch_id: '', |
| | | bank_name: '', |
| | | account_number: '', |
| | | }); |
| | | |
| | | const EnumWeChatPayApplymentCertTypeTextList = computed(() => { |
| | | if (form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_INSTITUTIONS) { |
| | | return EnumWeChatPayApplymentCertTypeTextForSYDW; |
| | | } |
| | | if (form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_GOVERNMENT) { |
| | | return EnumWeChatPayApplymentCertTypeTextForZFJG; |
| | | } |
| | | if (form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_OTHERS) { |
| | | return EnumWeChatPayApplymentCertTypeTextForSHZZ; |
| | | } |
| | | return []; |
| | | }); |
| | | |
| | | const EnumWeChatPayApplymentIdHolderTypeTextList = computed(() => { |
| | | if ( |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_INSTITUTIONS || |
| | | form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_GOVERNMENT |
| | | ) { |
| | | return EnumWeChatPayApplymentIdHolderTypeText; |
| | | } |
| | | return EnumWeChatPayApplymentIdHolderTypeTextOnlyLEGAL; |
| | | }); |
| | | |
| | | const id_doc_typeList = computed(() => { |
| | | if (form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_GOVERNMENT) { |
| | | return EnumWeChatPayApplymentContactTypeTextForZFJG; |
| | | } |
| | | return EnumWeChatPayApplymentIdDocTypeText; |
| | | }); |
| | | |
| | | const { isLoading, refetch } = useQuery({ |
| | |
| | | EnumEnterpriseWalletAccess.Alipay, |
| | | ], |
| | | queryFn: async (ctx) => { |
| | | return await enterpriseWalletServices.getEnterpriseWallet({ |
| | | return await enterpriseWalletServices.getEnterpriseWeChatPayWallet({ |
| | | enterpriseId: props.id, |
| | | access: EnumEnterpriseWalletAccess.Alipay, |
| | | }); |
| | | }, |
| | | onSuccess(data) { |
| | | form.name = data.name; |
| | | form.url = convertWalletApiToFiles( |
| | | data.files, |
| | | EnumEnterpriseWalletExpandindirectOrderFileType.Scene |
| | | form.business_code = data.business_code ?? ''; |
| | | form.contact_type = data.contact_info?.contact_type; |
| | | form.contact_name = data.contact_info?.contact_name ?? ''; |
| | | form.contact_id_doc_type = data.contact_info?.contact_id_doc_type; |
| | | form.contact_id_number = data.contact_info?.contact_id_number ?? ''; |
| | | form.contact_id_doc_copy = convertApi2FormUrlOnlyOne( |
| | | data.contact_info?.contact_id_doc_copy ?? '' |
| | | ); |
| | | form.contact_id_doc_copy_back = convertApi2FormUrlOnlyOne( |
| | | data.contact_info?.contact_id_doc_copy_back ?? '' |
| | | ); |
| | | form.contact_period = [ |
| | | format(data.contact_info?.contact_period_begin, 'YYYY-MM-DD'), |
| | | format(data.contact_info?.contact_period_end, 'YYYY-MM-DD'), |
| | | ]; |
| | | form.business_authorization_letter = convertApi2FormUrlOnlyOne( |
| | | data.contact_info?.business_authorization_letter ?? '' |
| | | ); |
| | | form.mobile_phone = data.contact_info?.mobile_phone ?? ''; |
| | | form.contact_email = data.contact_info?.contact_email ?? ''; |
| | | form.subject_type = data.subject_info?.subject_type; |
| | | form.license_copy = convertApi2FormUrlOnlyOne( |
| | | data.subject_info?.business_license_info?.license_copy ?? '' |
| | | ); |
| | | form.merchant_name = data.subject_info?.business_license_info?.merchant_name ?? ''; |
| | | form.license_number = data.subject_info?.business_license_info?.license_number ?? ''; |
| | | form.legal_person = data.subject_info?.business_license_info?.legal_person ?? ''; |
| | | form.cert_copy = convertApi2FormUrlOnlyOne( |
| | | data.subject_info?.certificate_info?.cert_copy ?? '' |
| | | ); |
| | | form.cert_type = data.subject_info?.certificate_info?.cert_type; |
| | | form.cert_number = data.subject_info?.certificate_info?.cert_number ?? ''; |
| | | form.cert_merchant_name = data.subject_info?.certificate_info?.merchant_name ?? ''; |
| | | form.cert_company_address = data.subject_info?.certificate_info?.company_address ?? ''; |
| | | form.cert_legal_person = data.subject_info?.certificate_info?.legal_person ?? ''; |
| | | form.cert_period = [ |
| | | format(data.subject_info?.certificate_info?.period_begin, 'YYYY-MM-DD'), |
| | | format(data.subject_info?.certificate_info?.period_end, 'YYYY-MM-DD'), |
| | | ]; |
| | | form.id_holder_type = data.subject_info?.identity_info?.id_holder_type; |
| | | form.id_doc_type = data.subject_info?.identity_info?.id_doc_type; |
| | | form.authorize_letter_copy = convertApi2FormUrlOnlyOne( |
| | | data.subject_info?.identity_info?.authorize_letter_copy ?? '' |
| | | ); |
| | | form.id_card_copy = convertApi2FormUrlOnlyOne( |
| | | data.subject_info?.identity_info?.id_card_info?.id_card_copy ?? '' |
| | | ); |
| | | form.id_card_national = convertApi2FormUrlOnlyOne( |
| | | data.subject_info?.identity_info?.id_card_info?.id_card_national ?? '' |
| | | ); |
| | | form.id_card_name = data.subject_info?.identity_info?.id_card_info?.id_card_name ?? ''; |
| | | form.id_doc_number = data.subject_info?.identity_info?.id_doc_info?.id_doc_number ?? ''; |
| | | form.id_doc_period = [ |
| | | format(data.subject_info?.identity_info?.id_doc_info?.doc_period_begin, 'YYYY-MM-DD'), |
| | | format(data.subject_info?.identity_info?.id_doc_info?.doc_period_end, 'YYYY-MM-DD'), |
| | | ]; |
| | | form.ubo_info_list = |
| | | data.subject_info?.ubo_info_list?.length > 0 |
| | | ? data.subject_info?.ubo_info_list.map((x) => ({ |
| | | ubo_id_doc_type: x.ubo_id_doc_type, |
| | | ubo_id_doc_copy: convertApi2FormUrlOnlyOne(x.ubo_id_doc_copy ?? ''), |
| | | ubo_id_doc_name: x.ubo_id_doc_name, |
| | | ubo_id_doc_number: x.ubo_id_doc_number, |
| | | ubo_id_doc_address: x.ubo_id_doc_address, |
| | | ubo_period: [ |
| | | format(x.ubo_period_begin, 'YYYY-MM-DD'), |
| | | format(x.ubo_period_end, 'YYYY-MM-DD'), |
| | | ], |
| | | })) |
| | | : [ |
| | | { |
| | | ubo_id_doc_type: '' as any as EnumWeChatPayApplymentIdDocType, |
| | | ubo_id_doc_copy: [], |
| | | ubo_id_doc_name: '', |
| | | ubo_id_doc_number: '', |
| | | ubo_id_doc_address: '', |
| | | ubo_period: [], |
| | | }, |
| | | ]; |
| | | form.merchant_shortname = data.business_info?.merchant_shortname ?? ''; |
| | | form.service_phone = data.business_info?.service_phone ?? ''; |
| | | form.sales_scenes_type = data.business_info?.sales_info?.sales_scenes_type ?? []; |
| | | form.biz_store_name = data.business_info?.sales_info?.biz_store_info?.biz_store_name ?? ''; |
| | | form.biz_address_code = data.business_info?.sales_info?.biz_store_info?.biz_address_code; |
| | | form.biz_store_address = |
| | | data.business_info?.sales_info?.biz_store_info?.biz_store_address ?? ''; |
| | | form.store_entrance_pic = |
| | | data.business_info?.sales_info?.biz_store_info?.store_entrance_pic.length > 0 |
| | | ? data.business_info?.sales_info?.biz_store_info?.store_entrance_pic.map((x) => |
| | | convertApi2FormUrl(x) |
| | | ) |
| | | : []; |
| | | form.indoor_pic = |
| | | data.business_info?.sales_info?.biz_store_info?.indoor_pic.length > 0 |
| | | ? data.business_info?.sales_info?.biz_store_info?.indoor_pic.map((x) => |
| | | convertApi2FormUrl(x) |
| | | ) |
| | | : []; |
| | | form.mp_appid = data.business_info?.sales_info?.mp_info?.mp_appid ?? ''; |
| | | form.mp_sub_appid = data.business_info?.sales_info?.mp_info?.mp_sub_appid ?? ''; |
| | | form.mp_pics = |
| | | data.business_info?.sales_info?.mp_info?.mp_pics.length > 0 |
| | | ? data.business_info?.sales_info?.mp_info?.mp_pics.map((x) => convertApi2FormUrl(x)) |
| | | : []; |
| | | form.mini_program_appid = |
| | | data.business_info?.sales_info?.mini_program_info?.mini_program_appid ?? ''; |
| | | form.mini_program_sub_appid = |
| | | data.business_info?.sales_info?.mini_program_info?.mini_program_sub_appid ?? ''; |
| | | form.mini_program_pics = |
| | | data.business_info?.sales_info?.mini_program_info?.mini_program_pics.length > 0 |
| | | ? data.business_info?.sales_info?.mini_program_info?.mini_program_pics.map((x) => |
| | | convertApi2FormUrl(x) |
| | | ) |
| | | : []; |
| | | form.app_appid = data.business_info?.sales_info?.app_info?.app_appid ?? ''; |
| | | form.app_sub_appid = data.business_info?.sales_info?.app_info?.app_sub_appid ?? ''; |
| | | form.app_pics = |
| | | data.business_info?.sales_info?.app_info?.app_pics.length > 0 |
| | | ? data.business_info?.sales_info?.app_info?.app_pics.map((x) => convertApi2FormUrl(x)) |
| | | : []; |
| | | form.domain = data.business_info?.sales_info?.web_info?.domain ?? ''; |
| | | form.web_authorisation = convertApi2FormUrlOnlyOne( |
| | | data.business_info?.sales_info?.web_info?.web_authorisation ?? '' |
| | | ); |
| | | form.sub_corp_id = data.business_info?.sales_info?.wework_info?.sub_corp_id ?? ''; |
| | | form.wework_pics = |
| | | data.business_info?.sales_info?.wework_info?.wework_pics.length > 0 |
| | | ? data.business_info?.sales_info?.wework_info?.wework_pics.map((x) => convertApi2FormUrl(x)) |
| | | : []; |
| | | form.settlement_id = data.settlement_info?.settlement_id ?? ''; |
| | | form.qualification_type = data.settlement_info?.qualification_type ?? ''; |
| | | form.qualifications = |
| | | data.settlement_info?.qualifications?.length > 0 |
| | | ? data.settlement_info?.qualifications.map((x) => convertApi2FormUrl(x)) |
| | | : []; |
| | | form.bank_account_type = data.bank_account_info?.bank_account_type; |
| | | form.account_name = data.bank_account_info?.account_name ?? ''; |
| | | form.account_bank = data.bank_account_info?.account_bank ?? ''; |
| | | form.bank_address_code = data.bank_account_info?.bank_address_code ?? ''; |
| | | form.bank_branch_id = data.bank_account_info?.bank_branch_id ?? ''; |
| | | form.bank_name = data.bank_account_info?.bank_name ?? ''; |
| | | form.account_number = data.bank_account_info?.account_number ?? ''; |
| | | }, |
| | | }); |
| | | |
| | | function addUboInfo() { |
| | | if (form.ubo_info_list.length >= 3) { |
| | | Message.errorMessage('最多添加3个受益人'); |
| | | return; |
| | | } |
| | | form.ubo_info_list.push({ |
| | | ubo_id_doc_type: '' as any as EnumWeChatPayApplymentIdDocType, |
| | | ubo_id_doc_copy: [], |
| | | ubo_id_doc_name: '', |
| | | ubo_id_doc_number: '', |
| | | ubo_id_doc_address: '', |
| | | ubo_period: [], |
| | | }); |
| | | } |
| | | |
| | | function deleteUboInfo(index: number) { |
| | | if (form.ubo_info_list.length <= 1) { |
| | | Message.errorMessage('至少保留一个受益人'); |
| | | return; |
| | | } |
| | | form.ubo_info_list.splice(index, 1); |
| | | } |
| | | |
| | | const handleLicenseUrlChange = (response: UploadUserFile) => { |
| | | vatLicense(response, { |
| | | onSuccess(res) { |
| | | let tips: string[] = []; |
| | | res?.enterpriseName ? (form.merchant_name = res.enterpriseName) : tips.push('商户名称'); |
| | | res?.societyCreditCode |
| | | ? (form.license_number = res.societyCreditCode) |
| | | : tips.push('统一社会信用代码'); |
| | | res?.legalPerson ? (form.legal_person = res.legalPerson) : tips.push('法人姓名'); |
| | | if (tips.length > 0) { |
| | | Message.errorMessage( |
| | | `未能识别到您上传的图片,请重新上传清晰的图片或手动输入${tips.join('和')}` |
| | | ); |
| | | } |
| | | }, |
| | | }); |
| | | }; |
| | | |
| | | function handleFrontImgUrlChange(response: UploadUserFile) { |
| | | userCredentialVerifyOcrIDCard({ |
| | | url: response?.url, |
| | | access: EnumOcrAccess.Baidu, |
| | | onSuccess(res) { |
| | | if (res.name) form.id_card_name = res.name; |
| | | if (res.identity) form.id_card_number = res.identity; |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | function openOuterSettleRule() { |
| | | window.open('https://kf.qq.com/faq/220228IJb2UV220228uEjU3Q.html', '_blank'); |
| | | } |
| | | |
| | | async function enterpriseWalletExpandindirectCreate() { |
| | | async function openEnterpriseWeChatPayWallet() { |
| | | try { |
| | | if (!dialogForm.value) return; |
| | | const valid = await dialogForm.value.validate(); |
| | | if (!valid) return; |
| | | let params: API.EnterpriseWalletExpandindirectCreateCommand = {}; |
| | | let res = await enterpriseWalletServices.enterpriseWalletExpandindirectCreate(params); |
| | | let params: API.OpenEnterpriseWeChatPayWalletCommand = { |
| | | enterpriseId: props.id, |
| | | business_code: form.business_code, |
| | | contact_info: { |
| | | contact_type: form.contact_type, |
| | | contact_name: form.contact_name, |
| | | contact_id_doc_type: form.contact_id_doc_type, |
| | | contact_id_number: form.contact_id_number, |
| | | contact_id_doc_copy: form.contact_id_doc_copy?.[0]?.path, |
| | | contact_id_doc_copy_back: form.contact_id_doc_copy_back?.[0]?.path, |
| | | contact_period_begin: format(form.contact_period[0], 'YYYY-MM-DD 00:00:00'), |
| | | contact_period_end: format(form.contact_period[1], 'YYYY-MM-DD 23:59:59'), |
| | | business_authorization_letter: form.business_authorization_letter?.[0]?.path, |
| | | mobile_phone: form.mobile_phone, |
| | | contact_email: form.contact_email, |
| | | }, |
| | | subject_info: { |
| | | subject_type: form.subject_type, |
| | | business_license_info: { |
| | | license_copy: form.license_copy?.[0]?.path, |
| | | merchant_name: form.merchant_name, |
| | | license_number: form.license_number, |
| | | legal_person: form.legal_person, |
| | | }, |
| | | certificate_info: { |
| | | cert_copy: form.cert_copy?.[0]?.path, |
| | | cert_type: form.cert_type, |
| | | cert_number: form.cert_number, |
| | | merchant_name: form.cert_merchant_name, |
| | | company_address: form.cert_company_address, |
| | | legal_person: form.cert_legal_person, |
| | | period_begin: format(form.cert_period[0], 'YYYY-MM-DD 00:00:00'), |
| | | period_end: format(form.cert_period[1], 'YYYY-MM-DD 23:59:59'), |
| | | }, |
| | | identity_info: { |
| | | id_holder_type: form.id_holder_type, |
| | | id_doc_type: form.id_doc_type, |
| | | authorize_letter_copy: form.authorize_letter_copy?.[0]?.path, |
| | | id_card_info: { |
| | | id_card_copy: form.id_card_copy?.[0]?.path, |
| | | id_card_national: form.id_card_national?.[0]?.path, |
| | | id_card_name: form.id_card_name, |
| | | id_card_number: form.id_card_number, |
| | | card_period_begin: format(form.id_card_period[0], 'YYYY-MM-DD 00:00:00'), |
| | | card_period_end: format(form.id_card_period[1], 'YYYY-MM-DD 23:59:59'), |
| | | }, |
| | | }, |
| | | ubo_info_list: |
| | | form.ubo_info_list?.length > 0 |
| | | ? form.ubo_info_list.map((x) => ({ |
| | | ubo_id_doc_type: x.ubo_id_doc_type, |
| | | ubo_id_doc_copy: x.ubo_id_doc_copy?.[0]?.path, |
| | | ubo_id_doc_name: x.ubo_id_doc_name, |
| | | ubo_id_doc_number: x.ubo_id_doc_number, |
| | | ubo_id_doc_address: x.ubo_id_doc_address, |
| | | ubo_period_begin: format(x.ubo_period[0], 'YYYY-MM-DD 00:00:00'), |
| | | ubo_period_end: format(x.ubo_period[1], 'YYYY-MM-DD 23:59:59'), |
| | | })) |
| | | : [], |
| | | }, |
| | | business_info: { |
| | | merchant_shortname: form.merchant_shortname, |
| | | service_phone: form.service_phone, |
| | | sales_info: { |
| | | sales_scenes_type: form.sales_scenes_type, |
| | | biz_store_info: { |
| | | biz_store_name: form.biz_store_name, |
| | | biz_address_code: form.biz_address_code, |
| | | biz_store_address: form.biz_store_address, |
| | | store_entrance_pic: |
| | | form.store_entrance_pic?.length > 0 |
| | | ? form.store_entrance_pic?.map((x) => x.path) |
| | | : [], |
| | | indoor_pic: form.indoor_pic?.length > 0 ? form.indoor_pic?.map((x) => x.path) : [], |
| | | }, |
| | | mp_info: { |
| | | mp_appid: form.mp_appid, |
| | | mp_sub_appid: form.mp_sub_appid, |
| | | mp_pics: form.mp_pics?.length > 0 ? form.mp_pics?.map((x) => x.path) : [], |
| | | }, |
| | | mini_program_info: { |
| | | mini_program_appid: form.mini_program_appid, |
| | | mini_program_sub_appid: form.mini_program_sub_appid, |
| | | mini_program_pics: |
| | | form.mini_program_pics?.length > 0 ? form.mini_program_pics?.map((x) => x.path) : [], |
| | | }, |
| | | app_info: { |
| | | app_appid: form.app_appid, |
| | | app_sub_appid: form.app_sub_appid, |
| | | app_pics: form.app_pics?.length > 0 ? form.app_pics?.map((x) => x.path) : [], |
| | | }, |
| | | web_info: { |
| | | domain: form.domain, |
| | | web_authorisation: form.web_authorisation?.[0]?.path, |
| | | }, |
| | | wework_info: { |
| | | sub_corp_id: form.sub_corp_id, |
| | | wework_pics: form.wework_pics?.length > 0 ? form.wework_pics?.map((x) => x.path) : [], |
| | | }, |
| | | }, |
| | | }, |
| | | settlement_info: { |
| | | settlement_id: form.settlement_id, |
| | | qualification_type: form.qualification_type, |
| | | qualifications: |
| | | form.qualifications?.length > 0 ? form.qualifications?.map((x) => x.path) : [], |
| | | }, |
| | | bank_account_info: { |
| | | bank_account_type: form.bank_account_type, |
| | | account_name: form.account_name, |
| | | account_bank: form.account_bank, |
| | | bank_address_code: form.bank_address_code, |
| | | bank_branch_id: form.bank_branch_id, |
| | | bank_name: form.bank_name, |
| | | account_number: form.account_number, |
| | | }, |
| | | }; |
| | | let res = await enterpriseWalletServices.openEnterpriseWeChatPayWallet(params); |
| | | return res; |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function downloadFRTemplate() { |
| | | downloadFileByUrl( |
| | | 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E6%B3%95%E4%BA%BA%E4%BB%A3%E8%A1%A8%E8%AF%B4%E6%98%8E%E5%87%BD.png', |
| | | '法定代表人说明函' |
| | | ); |
| | | } |
| | | |
| | | function downloadTemplate() { |
| | |
| | | ); |
| | | } |
| | | |
| | | function downloadWebAuthorisationTemplate() { |
| | | downloadFileByUrl( |
| | | 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E7%BD%91%E7%AB%99%E6%8E%88%E6%9D%83%E5%87%BD.doc', |
| | | '网站授权函' |
| | | ); |
| | | } |
| | | function downloadAddressCodeTemplate() { |
| | | downloadFileByUrl( |
| | | 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E3%80%8A%E7%9C%81%E5%B8%82%E5%8C%BA%E7%BC%96%E5%8F%B7%E5%AF%B9%E7%85%A7%E8%A1%A8%E3%80%8B.xlsx', |
| | | '省市编码模版' |
| | | ); |
| | | } |
| | | |
| | | defineExpose({ |
| | | onConfirm: enterpriseWalletExpandindirectCreate, |
| | | onConfirm: openEnterpriseWeChatPayWallet, |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @use '@/style/common.scss' as *; |
| | | |
| | | .ubo-info-list-wrapper { |
| | | .ubo-info-list-top { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .ubo-info-list-title { |
| | | margin: 12px 0; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: getCssVar('text-color', 'primary'); |
| | | line-height: 24px; |
| | | } |
| | | } |
| | | } |
| | | </style> |