From f74773301c30eb6f74b0b6c091998196b071daba Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期一, 13 十月 2025 17:49:01 +0800 Subject: [PATCH] feat: 微信 --- src/views/EnterpriseManage/components/WechatConfigureView.vue | 316 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 280 insertions(+), 36 deletions(-) diff --git a/src/views/EnterpriseManage/components/WechatConfigureView.vue b/src/views/EnterpriseManage/components/WechatConfigureView.vue index 7bd9443..7f5f752 100644 --- a/src/views/EnterpriseManage/components/WechatConfigureView.vue +++ b/src/views/EnterpriseManage/components/WechatConfigureView.vue @@ -1,6 +1,6 @@ <template> <LoadingLayout :loading="isLoading"> - <ProForm :model="form" ref="dialogForm" label-width="150px"> + <ProForm :model="form" ref="dialogForm" label-width="210px"> <ProFormItemV2 label="涓氬姟鐢宠缂栧彿:" prop="business_code" @@ -31,6 +31,7 @@ :maxlength="100" v-model.trim="form.contact_name" placeholder="璇疯緭鍏ヨ秴绾х鐞嗗憳濮撳悕" + show-word-limit > </ProFormText> </ProFormItemV2> @@ -183,6 +184,7 @@ :maxlength="100" v-model.trim="form.legal_person" placeholder="璇疯緭鍏ユ硶浜哄鍚�" + show-word-limit /> </ProFormItemV2> </template> @@ -233,6 +235,7 @@ :maxlength="128" v-model.trim="form.cert_merchant_name" placeholder="璇疯緭鍏ュ晢鎴峰悕绉�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -245,6 +248,7 @@ :maxlength="128" v-model.trim="form.cert_company_address" placeholder="璇疯緭鍏ユ敞鍐屽湴鍧�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -257,6 +261,7 @@ :maxlength="100" v-model.trim="form.cert_legal_person" placeholder="璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -360,6 +365,7 @@ :maxlength="100" v-model.trim="form.id_card_name" placeholder="璇疯緭鍏ヨ韩浠借瘉濮撳悕" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -413,6 +419,7 @@ :maxlength="100" v-model.trim="form.id_doc_name" placeholder="璇疯緭鍏ヨ瘉浠跺鍚�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -450,7 +457,7 @@ </div> <div v-for="(item, index) in form.ubo_info_list" :key="index"> <ProFormItemV2 - :label="`绗�${index + 1}涓瘉浠剁被鍨�:`" + :label="`绗�${index + 1}涓彈鐩婁汉璇佷欢绫诲瀷:`" :prop="`ubo_info_list.${index}.ubo_id_doc_type`" :checkRules="[{ message: '璇烽�夋嫨璇佷欢绫诲瀷' }]" > @@ -462,7 +469,7 @@ </ProFormSelect> </ProFormItemV2> <ProFormItemV2 - :label="`绗�${index + 1}涓瘉浠舵闈㈢収鐗�:`" + :label="`绗�${index + 1}涓彈鐩婁汉璇佷欢姝i潰鐓х墖:`" :prop="`ubo_info_list.${index}.ubo_id_doc_copy`" :check-rules="[{ type: 'upload', message: '璇蜂笂浼犺瘉浠舵闈㈢収鐗�' }]" > @@ -472,7 +479,7 @@ ></ProFormImageUpload> </ProFormItemV2> <ProFormItemV2 - :label="`绗�${index + 1}涓瘉浠跺鍚�:`" + :label="`绗�${index + 1}涓彈鐩婁汉璇佷欢濮撳悕:`" :prop="`ubo_info_list.${index}.ubo_id_doc_name`" :checkRules="[{ message: '璇疯緭鍏ヨ瘉浠跺鍚�' }]" > @@ -481,24 +488,25 @@ :maxlength="100" v-model.trim="item.ubo_id_doc_name" placeholder="璇疯緭鍏ヨ瘉浠跺鍚�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 - :label="`绗�${index + 1}涓瘉浠跺彿鐮�:`" + :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}涓瘉浠跺眳浣忓湴鍧�:`" + :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}涓瘉浠舵湁鏁堟湡:`" + :label="`绗�${index + 1}涓彈鐩婁汉璇佷欢鏈夋晥鏈�:`" :prop="`ubo_info_list.${index}.ubo_period`" :checkRules="[{ message: '璇烽�夋嫨璇佷欢鏈夋晥鏈�', type: 'array' }]" > @@ -565,6 +573,7 @@ :maxlength="50" v-model.trim="form.biz_store_name" placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鍚嶇О" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -572,10 +581,15 @@ prop="biz_address_code" :checkRules="[{ message: '璇疯緭鍏ョ嚎涓嬪満鎵�鐪佸競缂栫爜', type: 'number' }]" > - <ProFormText v-model.trim="form.biz_address_code" placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鐪佸競缂栫爜" /> - <el-button type="primary" link @click="downloadAddressCodeTemplate" - >鐪佸競缂栫爜妯℃澘</el-button - > + <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="绾夸笅鍦烘墍鍦板潃:" @@ -587,6 +601,7 @@ :minlength="4" v-model.trim="form.biz_store_address" placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鍦板潃" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -860,6 +875,7 @@ :maxlength="50" v-model.trim="form.qualification_type" placeholder="璇疯緭鍏ユ墍灞炶涓�(璇︾粏鍙傝璐圭巼缁撶畻瑙勫垯瀵圭収琛�)" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 label="鐗规畩璧勮川鍥剧墖:" prop="qualifications"> @@ -886,38 +902,61 @@ </ProFormItemV2> <ProFormItemV2 label="寮�鎴烽摱琛�:" - prop="account_bank" + prop="bank_alias" :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛�' }]" > <!-- <ProFormText v-model.trim="form.account_bank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" /> --> <WeChatPayWalletBanksSelect - v-model.trim="form.account_bank" + 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 + <!-- <ProFormItemV2 label="寮�鎴烽摱琛岀渷甯傜紪鐮�:" prop="bank_address_code" :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛岀渷甯傜紪鐮�' }]" > - <ProFormText v-model.trim="form.bank_address_code" placeholder="璇疯緭鍏ュ紑鎴烽摱琛岀渷甯傜紪鐮�" /> - <el-button type="primary" link @click="downloadAddressCodeTemplate">鐪佸競缂栫爜妯℃澘</el-button> - </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> + <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" @@ -974,6 +1013,8 @@ } 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', @@ -1065,6 +1106,11 @@ 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(() => { @@ -1112,7 +1158,7 @@ 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_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 ?? '' @@ -1232,6 +1278,14 @@ 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); }, }); @@ -1291,13 +1345,203 @@ 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, + mobile_phone: form.mobile_phone, + contact_email: form.contact_email, + }, + subject_info: { + subject_type: form.subject_type, + + identity_info: { + id_holder_type: form.id_holder_type, + }, + }, + business_info: { + merchant_shortname: form.merchant_shortname, + service_phone: form.service_phone, + sales_info: { + sales_scenes_type: form.sales_scenes_type, + }, + }, + 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, + }, + }; + if (form.contact_type === EnumWeChatPayApplymentContactType.SUPER) { + params.contact_info.contact_id_doc_type = form.contact_id_doc_type; + params.contact_info.contact_id_number = form.contact_id_number; + params.contact_info.contact_id_doc_copy = form.contact_id_doc_copy?.[0]?.path; + params.contact_info.contact_id_doc_copy_back = form.contact_id_doc_copy_back?.[0]?.path; + params.contact_info.contact_period_begin = format( + form.contact_period[0], + 'YYYY-MM-DD 00:00:00' + ); + params.contact_info.contact_period_end = format( + form.contact_period[1], + 'YYYY-MM-DD 23:59:59' + ); + params.contact_info.business_authorization_letter = + form.business_authorization_letter?.[0]?.path; + } + if ( + form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_INDIVIDUAL || + form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_ENTERPRISE + ) { + params.subject_info.business_license_info.license_copy = form.license_copy?.[0]?.path; + params.subject_info.business_license_info.merchant_name = form.merchant_name; + params.subject_info.business_license_info.license_number = form.license_number; + params.subject_info.business_license_info.legal_person = form.legal_person; + } + if ( + form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_GOVERNMENT || + form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_INSTITUTIONS || + form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_OTHERS + ) { + params.subject_info.certificate_info.cert_copy = form.cert_copy?.[0]?.path; + params.subject_info.certificate_info.cert_type = form.cert_type; + params.subject_info.certificate_info.cert_number = form.cert_number; + params.subject_info.certificate_info.merchant_name = form.cert_merchant_name; + params.subject_info.certificate_info.company_address = form.cert_company_address; + params.subject_info.certificate_info.legal_person = form.cert_legal_person; + params.subject_info.certificate_info.period_begin = format( + form.cert_period[0], + 'YYYY-MM-DD 00:00:00' + ); + params.subject_info.certificate_info.period_end = format( + form.cert_period[1], + 'YYYY-MM-DD 23:59:59' + ); + } + if (form.id_holder_type === EnumWeChatPayApplymentIdHolderType.LEGAL) { + params.subject_info.identity_info.id_doc_type = form.id_doc_type; + } + if (form.id_holder_type === EnumWeChatPayApplymentIdHolderType.SUPER) { + params.subject_info.identity_info.authorize_letter_copy = + form.authorize_letter_copy?.[0]?.path; + } + if ( + form.id_holder_type === EnumWeChatPayApplymentIdHolderType.LEGAL && + form.id_doc_type === EnumWeChatPayApplymentIdDocType.IDENTIFICATION_TYPE_IDCARD + ) { + params.subject_info.identity_info.id_card_info.id_card_copy = form.id_card_copy?.[0]?.path; + params.subject_info.identity_info.id_card_info.id_card_national = + form.id_card_national?.[0]?.path; + params.subject_info.identity_info.id_card_info.id_card_name = form.id_card_name; + params.subject_info.identity_info.id_card_info.id_card_number = form.id_card_number; + params.subject_info.identity_info.id_card_info.card_period_begin = format( + form.id_card_period[0], + 'YYYY-MM-DD 00:00:00' + ); + params.subject_info.identity_info.id_card_info.card_period_end = format( + form.id_card_period[1], + 'YYYY-MM-DD 23:59:59' + ); + } + if ( + form.id_holder_type === EnumWeChatPayApplymentIdHolderType.LEGAL && + form.id_doc_type !== EnumWeChatPayApplymentIdDocType.IDENTIFICATION_TYPE_IDCARD + ) { + params.subject_info.identity_info.id_doc_info.id_doc_copy = form.id_doc_copy?.[0]?.path; + params.subject_info.identity_info.id_doc_info.id_doc_name = form.id_doc_name; + params.subject_info.identity_info.id_doc_info.id_doc_number = form.id_doc_number; + params.subject_info.identity_info.id_doc_info.doc_period_begin = format( + form.id_doc_period[0], + 'YYYY-MM-DD 00:00:00' + ); + params.subject_info.identity_info.id_doc_info.doc_period_end = format( + form.id_doc_period[1], + 'YYYY-MM-DD 23:59:59' + ); + } + if (form.subject_type === EnumWeChatPayApplymentSubjectType.SUBJECT_TYPE_ENTERPRISE) { + params.subject_info.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'), + })) + : []; + } + if (form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_STORE)) { + params.business_info.sales_info.biz_store_info.biz_store_name = form.biz_store_name; + params.business_info.sales_info.biz_store_info.biz_address_code = form.biz_address_code; + params.business_info.sales_info.biz_store_info.biz_store_address = form.biz_store_address; + params.business_info.sales_info.biz_store_info.store_entrance_pic = + form.store_entrance_pic?.length > 0 ? form.store_entrance_pic?.map((x) => x.path) : []; + params.business_info.sales_info.biz_store_info.indoor_pic = + form.indoor_pic?.length > 0 ? form.indoor_pic?.map((x) => x.path) : []; + } + if (form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_MP)) { + params.business_info.sales_info.mp_info.mp_appid = form.mp_appid; + params.business_info.sales_info.mp_info.mp_sub_appid = form.mp_sub_appid; + params.business_info.sales_info.mp_info.mp_pics = + form.mp_pics?.length > 0 ? form.mp_pics?.map((x) => x.path) : []; + } + if ( + form.sales_scenes_type.includes( + EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_MINI_PROGRAM + ) + ) { + params.business_info.sales_info.mini_program_info.mini_program_appid = + form.mini_program_appid; + params.business_info.sales_info.mini_program_info.mini_program_sub_appid = + form.mini_program_sub_appid; + params.business_info.sales_info.mini_program_info.mini_program_pics = + form.mini_program_pics?.length > 0 ? form.mini_program_pics?.map((x) => x.path) : []; + } + if (form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_APP)) { + params.business_info.sales_info.app_info.app_appid = form.app_appid; + params.business_info.sales_info.app_info.app_sub_appid = form.app_sub_appid; + params.business_info.sales_info.app_info.app_pics = + form.app_pics?.length > 0 ? form.app_pics?.map((x) => x.path) : []; + } + if (form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_WEB)) { + params.business_info.sales_info.web_info.domain = form.domain; + params.business_info.sales_info.web_info.web_authorisation = + form.web_authorisation?.[0]?.path; + } + if ( + form.sales_scenes_type.includes(EnumWeChatPayApplymentSalesScenesType.SALES_SCENES_WEWORK) + ) { + params.business_info.sales_info.wework_info.sub_corp_id = form.sub_corp_id; + params.business_info.sales_info.wework_info.wework_pics = + form.wework_pics?.length > 0 ? form.wework_pics?.map((x) => x.path) : []; + } + + let res = await enterpriseWalletServices.openEnterpriseWeChatPayWallet(params); return res; } catch (error) {} } @@ -1330,7 +1574,7 @@ } defineExpose({ - onConfirm: enterpriseWalletExpandindirectCreate, + onConfirm: openEnterpriseWeChatPayWallet, }); </script> -- Gitblit v1.9.1