From f5bb902b6fe870560d743dba58db6074a72d5546 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期一, 13 十月 2025 16:30:32 +0800 Subject: [PATCH] feat: 微信 --- src/views/EnterpriseManage/components/WechatConfigureView.vue | 310 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 281 insertions(+), 29 deletions(-) diff --git a/src/views/EnterpriseManage/components/WechatConfigureView.vue b/src/views/EnterpriseManage/components/WechatConfigureView.vue index f39f332..1241dac 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" @@ -18,6 +18,7 @@ v-model.trim="form.contact_type" :value-enum="EnumWeChatPayApplymentContactTypeText" :button-style="false" + :convertEnumValue="false" /> </ProFormItemV2> <ProFormItemV2 @@ -30,6 +31,7 @@ :maxlength="100" v-model.trim="form.contact_name" placeholder="璇疯緭鍏ヨ秴绾х鐞嗗憳濮撳悕" + show-word-limit > </ProFormText> </ProFormItemV2> @@ -182,6 +184,7 @@ :maxlength="100" v-model.trim="form.legal_person" placeholder="璇疯緭鍏ユ硶浜哄鍚�" + show-word-limit /> </ProFormItemV2> </template> @@ -232,6 +235,7 @@ :maxlength="128" v-model.trim="form.cert_merchant_name" placeholder="璇疯緭鍏ュ晢鎴峰悕绉�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -244,6 +248,7 @@ :maxlength="128" v-model.trim="form.cert_company_address" placeholder="璇疯緭鍏ユ敞鍐屽湴鍧�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -256,6 +261,7 @@ :maxlength="100" v-model.trim="form.cert_legal_person" placeholder="璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -359,6 +365,7 @@ :maxlength="100" v-model.trim="form.id_card_name" placeholder="璇疯緭鍏ヨ韩浠借瘉濮撳悕" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -412,6 +419,7 @@ :maxlength="100" v-model.trim="form.id_doc_name" placeholder="璇疯緭鍏ヨ瘉浠跺鍚�" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -449,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: '璇烽�夋嫨璇佷欢绫诲瀷' }]" > @@ -461,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: '璇蜂笂浼犺瘉浠舵闈㈢収鐗�' }]" > @@ -471,7 +479,7 @@ ></ProFormImageUpload> </ProFormItemV2> <ProFormItemV2 - :label="`绗�${index + 1}涓瘉浠跺鍚�:`" + :label="`绗�${index + 1}涓彈鐩婁汉璇佷欢濮撳悕:`" :prop="`ubo_info_list.${index}.ubo_id_doc_name`" :checkRules="[{ message: '璇疯緭鍏ヨ瘉浠跺鍚�' }]" > @@ -480,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' }]" > @@ -564,17 +573,23 @@ :maxlength="50" v-model.trim="form.biz_store_name" placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鍚嶇О" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 label="绾夸笅鍦烘墍鐪佸競缂栫爜:" prop="biz_address_code" - :checkRules="[{ message: '璇疯緭鍏ョ嚎涓嬪満鎵�鐪佸競缂栫爜' }]" + :checkRules="[{ message: '璇疯緭鍏ョ嚎涓嬪満鎵�鐪佸競缂栫爜', type: 'number' }]" > - <ProFormInputNumber - v-model.trim="form.biz_address_code" - placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鐪佸競缂栫爜" - /> + <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="绾夸笅鍦烘墍鍦板潃:" @@ -586,6 +601,7 @@ :minlength="4" v-model.trim="form.biz_store_address" placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鍦板潃" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 @@ -859,6 +875,7 @@ :maxlength="50" v-model.trim="form.qualification_type" placeholder="璇疯緭鍏ユ墍灞炶涓�(璇︾粏鍙傝璐圭巼缁撶畻瑙勫垯瀵圭収琛�)" + show-word-limit /> </ProFormItemV2> <ProFormItemV2 label="鐗规畩璧勮川鍥剧墖:" prop="qualifications"> @@ -891,6 +908,18 @@ <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: '璇疯緭鍏ュ紑鎴烽摱琛岄摱琛屽彿' }]" @@ -898,11 +927,11 @@ <ProFormText v-model.trim="form.bank_branch_id" placeholder="璇疯緭鍏ュ紑鎴烽摱琛岄摱琛屽彿" /> </ProFormItemV2> <ProFormItemV2 - label="寮�鎴烽摱琛屽叏绉帮紙鍚敮琛岋級:" + label="寮�鎴烽摱琛屽叏绉�(鍚敮琛�):" prop="bank_name" - :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛屽叏绉帮紙鍚敮琛岋級' }]" + :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛屽叏绉�(鍚敮琛�)' }]" > - <ProFormText v-model.trim="form.bank_name" placeholder="璇疯緭鍏ュ紑鎴烽摱琛屽叏绉帮紙鍚敮琛岋級" /> + <ProFormText v-model.trim="form.bank_name" placeholder="璇疯緭鍏ュ紑鎴烽摱琛屽叏绉�(鍚敮琛�)" /> </ProFormItemV2> <ProFormItemV2 label="閾惰璐﹀彿:" @@ -951,14 +980,7 @@ EnumWeChatPayApplymentSalesScenesTypeText, EnumWeChatPayApplymentBankAccountTypeText, } from '@/constants'; -import { - convertApi2FormUrl, - convertApi2FormUrlOnlyOne, - convertWalletApiToFiles, - convertWalletFilesToApi, - downloadFileByUrl, - format, -} from '@/utils'; +import { convertApi2FormUrl, convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils'; import { Message } from '@bole-core/core'; defineOptions({ @@ -984,7 +1006,7 @@ const form = reactive({ business_code: '', - contact_type: '' as any as EnumWeChatPayApplymentContactType, + contact_type: EnumWeChatPayApplymentContactType.LEGAL, contact_name: '', contact_id_doc_type: '' as any as EnumWeChatPayApplymentIdDocType, contact_id_number: '', @@ -1024,7 +1046,7 @@ service_phone: '', sales_scenes_type: [] as any as EnumWeChatPayApplymentSalesScenesType[], biz_store_name: '', - biz_address_code: null as Number, + biz_address_code: '', biz_store_address: '', store_entrance_pic: [] as UploadUserFile[], indoor_pic: [] as UploadUserFile[], @@ -1047,6 +1069,7 @@ bank_account_type: '' as any as EnumWeChatPayApplymentBankAccountType, account_name: '', account_bank: '', + bank_address_code: '', bank_branch_id: '', bank_name: '', account_number: '', @@ -1133,6 +1156,109 @@ 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 ?? ''; }, }); @@ -1152,6 +1278,10 @@ } function deleteUboInfo(index: number) { + if (form.ubo_info_list.length <= 1) { + Message.errorMessage('鑷冲皯淇濈暀涓�涓彈鐩婁汉'); + return; + } form.ubo_info_list.splice(index, 1); } @@ -1188,13 +1318,129 @@ 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) {} } @@ -1219,9 +1465,15 @@ '缃戠珯鎺堟潈鍑�' ); } +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> -- Gitblit v1.9.1