From a6921e08035356d4d4e367a8731f729d0520f6b3 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期一, 13 十月 2025 16:27:35 +0800 Subject: [PATCH] fix: s --- src/views/EnterpriseManage/components/WechatConfigureView.vue | 1467 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 1,392 insertions(+), 75 deletions(-) diff --git a/src/views/EnterpriseManage/components/WechatConfigureView.vue b/src/views/EnterpriseManage/components/WechatConfigureView.vue index e2fd7b3..0a14b9a 100644 --- a/src/views/EnterpriseManage/components/WechatConfigureView.vue +++ b/src/views/EnterpriseManage/components/WechatConfigureView.vue @@ -1,126 +1,964 @@ <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="璇佷欢姝i潰鐓х墖:" + 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="缁熶竴绀句細淇$敤浠g爜:" + prop="license_number" + :checkRules="[{ message: '璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜', type: 'societyCreditCode' }]" + > + <ProFormText v-model.trim="form.license_number" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" /> + </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="娉曞畾浠h〃浜�:" + 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="娉曞畾浠h〃浜鸿鏄庡嚱:" + 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="璇佷欢姝i潰鐓х墖:" + 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('璇疯緭鍏ユ湇鍔″晢鏈嶅姟鍙锋垨鍏紬鍙稟ppID')); + }, + }, + ]" + > + <ProFormText + v-model.trim="form.mp_appid" + placeholder="璇疯緭鍏ユ湇鍔″晢鏈嶅姟鍙锋垨鍏紬鍙稟ppID(鏈嶅姟鍟嗘湇鍔″彿鎴栧叕浼楀彿AppID銆佸晢瀹舵湇鍔″彿鎴栧叕浼楀彿AppID锛屼簩閫変竴蹇呭~)" + /> + </ProFormItemV2> + <ProFormItemV2 + label="鍟嗗鏈嶅姟鍙锋垨鍏紬鍙稟ppID:" + 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: '璇疯緭鍏ユ湇鍔″晢灏忕▼搴廇ppID', + validator: (rule, value, callback) => { + if (form.mini_program_appid || form.mini_program_sub_appid) { + callback(); + } + callback(new Error('璇疯緭鍏ユ湇鍔″晢灏忕▼搴廇ppID')); + }, + }, + ]" + > + <ProFormText + v-model.trim="form.mini_program_appid" + placeholder="璇疯緭鍏ユ湇鍔″晢灏忕▼搴廇ppID(鏈嶅姟鍟嗗皬绋嬪簭AppID涓庡晢瀹跺皬绋嬪簭AppID锛屼簩閫変竴蹇呭~)" + /> + </ProFormItemV2> + <ProFormItemV2 + label="鍟嗗灏忕▼搴廇ppID:" + 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('璇疯緭鍏ユ湇鍔″晢灏忕▼搴廇ppID')); + }, + }, + ]" + > + <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="鏈嶅姟鍟嗗簲鐢ˋppID:" + prop="app_appid" + :checkRules="[ + { + message: '鏈嶅姟鍟嗗簲鐢ˋppID', + 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(鏈嶅姟鍟嗗簲鐢ˋppID涓庡晢瀹跺簲鐢ˋppID锛屼簩閫変竴蹇呭~)" + /> + </ProFormItemV2> + <ProFormItemV2 + label="鍟嗗搴旂敤AppID:" + prop="app_sub_appid" + :checkRules="[ + { + message: '璇疯緭鍏ュ晢瀹跺簲鐢ˋppID', + validator: (rule, value, callback) => { + if (form.mp_appid || form.app_sub_appid) { + callback(); + } + callback(new Error('璇疯緭鍏ュ晢瀹跺簲鐢ˋppID')); + }, + }, + ]" + > + <ProFormText + v-model.trim="form.app_sub_appid" + placeholder="璇疯緭鍏ュ晢瀹跺簲鐢ˋppID(鏈嶅姟鍟嗗簲鐢ˋppID涓庡晢瀹跺簲鐢ˋppID锛屼簩閫変竴蹇呭~)" + /> + </ProFormItemV2> + <ProFormItemV2 + label="App鎴浘:" + prop="app_pics" + :check-rules="[{ type: 'upload', message: '璇蜂笂浼燗pp鎴浘' }]" + > + <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: '璇疯緭鍏ュ晢瀹朵紒涓氬井淇orpID' }]" + > + <ProFormText v-model.trim="form.sub_corp_id" placeholder="璇疯緭鍏ュ晢瀹朵紒涓氬井淇orpID" /> + </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: '璇疯緭鍏ュ叆椹荤粨绠桰D' }]" + label="鍏ラ┗缁撶畻瑙勫垯ID:" + prop="settlement_id" + :checkRules="[{ message: '璇疯緭鍏ュ叆椹荤粨绠楄鍒橧D' }]" > <div style="display: flex; width: 100%"> - <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ュ叆椹荤粨绠桰D" /> + <ProFormText v-model.trim="form.settlement_id" placeholder="璇疯緭鍏ュ叆椹荤粨绠楄鍒橧D" /> <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="name" - :checkRules="[{ type: 'tel', message: '璇疯緭鍏ラ摱琛岃处鍙�' }]" + label="寮�鎴烽摱琛�:" + prop="bank_alias" + :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛�' }]" > - <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ラ摱琛岃处鍙�" /> + <!-- <ProFormText v-model.trim="form.account_bank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" /> --> + <WeChatPayWalletBanksSelect + v-model:bank_alias="form.bank_alias" + v-model:account_bank="form.account_bank" + v-model:account_bank_code="form.account_bank_code" + v-model:bank_alias_code="form.bank_alias_code" + v-model:need_bank_branch="form.need_bank_branch" + placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" + clearable + /> + </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> --> + <template v-if="form.need_bank_branch"> + <!-- <ProFormItemV2 + label="寮�鎴烽摱琛岄摱琛屽彿:" + prop="bank_branch_id" + :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛岄摱琛屽彿' }]" + > + <ProFormText v-model.trim="form.bank_branch_id" placeholder="璇疯緭鍏ュ紑鎴烽摱琛岄摱琛屽彿" /> + </ProFormItemV2> --> + <ProFormItemV2 + label="寮�鎴锋敮琛岀渷甯傜紪鐮�:" + prop="bank_branch_area" + :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛岄摱琛屽彿', type: 'array' }]" + > + <WeChatPayWalletBankBranchAreaCascader v-model:areaList="form.bank_branch_area" /> + </ProFormItemV2> + <ProFormItemV2 + label="寮�鎴烽摱琛屽叏绉�(鍚敮琛�):" + prop="bank_branch_id" + :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛屽叏绉�(鍚敮琛�)' }]" + > + <WeChatPayWalletBankBranchsSelect + v-model:bank_branch_id="form.bank_branch_id" + placeholder="璇疯緭鍏�" + :bank_alias_code="form.bank_alias_code" + :need_bank_branch="form.need_bank_branch" + :city_code="form.bank_branch_area?.[1]" + /> + </ProFormItemV2> + </template> + <ProFormItemV2 + label="閾惰璐﹀彿:" + prop="account_number" + :checkRules="[{ message: '璇疯緭鍏ラ摱琛岃处鍙�', type: 'bankCard' }]" + > + <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, @@ -131,10 +969,41 @@ 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, + convertApi2FormUrls, +} from '@/utils'; +import { Message } from '@bole-core/core'; +import WeChatPayWalletBanksSelect from './WeChatPayWalletBanksSelect.vue'; +import WeChatPayWalletBankBranchsSelect from './WeChatPayWalletBankBranchsSelect.vue'; +import WeChatPayWalletBankBranchAreaCascader from './WeChatPayWalletBankBranchAreaCascader.vue'; defineOptions({ name: 'WechatConfigureView', @@ -144,13 +1013,123 @@ 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: '', + bank_alias_code: '', + bank_alias: '', + account_bank_code: '' as any as number, + need_bank_branch: false, + bank_branch_area: [] as 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({ @@ -160,33 +1139,339 @@ 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 ?? ('' as any); + 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 = convertApi2FormUrls( + data.business_info?.sales_info?.biz_store_info?.store_entrance_pic + ); + form.indoor_pic = convertApi2FormUrls( + data.business_info?.sales_info?.biz_store_info?.indoor_pic + ); + 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 = convertApi2FormUrls(data.business_info?.sales_info?.mp_info?.mp_pics); + 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 = convertApi2FormUrls( + data.business_info?.sales_info?.mini_program_info?.mini_program_pics + ); + 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 = convertApi2FormUrls(data.business_info?.sales_info?.app_info?.app_pics); + 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 = convertApi2FormUrls( + data.business_info?.sales_info?.wework_info?.wework_pics + ); + form.settlement_id = data.settlement_info?.settlement_id ?? ''; + form.qualification_type = data.settlement_info?.qualification_type ?? ''; + form.qualifications = convertApi2FormUrls(data.settlement_info?.qualifications); + 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 ?? ''; + form.bank_alias_code = data.bank_account_info?.bank_alias_code ?? ''; + form.bank_alias = data.bank_account_info?.bank_alias ?? ''; + form.account_bank_code = data.bank_account_info?.account_bank_code; + form.need_bank_branch = data.bank_account_info?.need_bank_branch ?? false; + form.bank_branch_area = [ + data.bank_account_info?.province_code, + data.bank_account_info?.city_code, + ].filter(Boolean); }, }); + +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('缁熶竴绀句細淇$敤浠g爜'); + 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, + bank_alias_code: form.bank_alias_code, + province_code: form.bank_branch_area?.[0], + city_code: form.bank_branch_area?.[1], + bank_alias: form.bank_alias, + account_bank_code: form.account_bank_code, + need_bank_branch: form.need_bank_branch, + }, + }; + 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', + '娉曞畾浠h〃浜鸿鏄庡嚱' + ); } function downloadTemplate() { @@ -196,7 +1481,39 @@ ); } +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> -- Gitblit v1.9.1