From 917411ca0541c9810e89ffddaa65b30ce12aadaa Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 13 十月 2025 13:35:33 +0800
Subject: [PATCH] feat: 微信

---
 src/views/EnterpriseManage/components/WechatConfigureView.vue | 1278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 1,209 insertions(+), 69 deletions(-)

diff --git a/src/views/EnterpriseManage/components/WechatConfigureView.vue b/src/views/EnterpriseManage/components/WechatConfigureView.vue
index c15c838..d5829db 100644
--- a/src/views/EnterpriseManage/components/WechatConfigureView.vue
+++ b/src/views/EnterpriseManage/components/WechatConfigureView.vue
@@ -1,121 +1,926 @@
 <template>
   <LoadingLayout :loading="isLoading">
-    <ProForm :model="form" ref="dialogForm" label-width="130px">
+    <ProForm :model="form" ref="dialogForm" label-width="150px">
       <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"
+        />
       </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" v-model.trim="form.name" placeholder="璇疯緭鍏ュ晢鎴风畝绉�" />
+        <ProFormText
+          :minlength="1"
+          :maxlength="60"
+          show-word-limit
+          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' }]"
+        >
+          <ProFormText v-model.trim="form.biz_address_code" placeholder="璇疯緭鍏ョ嚎涓嬪満鎵�鐪佸競缂栫爜" />
+        </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="account_bank"
+        :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛�' }]"
+      >
+        <ProFormText v-model.trim="form.account_bank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" />
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="寮�鎴烽摱琛岀渷甯傜紪鐮�:"
+        prop="bank_address_code"
+        :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛岀渷甯傜紪鐮�' }]"
+      >
+        <ProFormText v-model.trim="form.bank_address_code" placeholder="璇疯緭鍏ュ紑鎴烽摱琛岀渷甯傜紪鐮�" />
+      </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,
@@ -126,10 +931,32 @@
   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',
@@ -139,13 +966,118 @@
   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: '' as any as EnumWeChatPayApplymentContactType,
+  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({
@@ -155,19 +1087,194 @@
     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'),
+            ],
+          }))
+        : [];
+    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) {
+  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');
@@ -184,6 +1291,13 @@
   } 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() {
   downloadFileByUrl(
     'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E4%B8%9A%E5%8A%A1%E5%8A%9E%E7%90%86%E6%8E%88%E6%9D%83%E5%87%BD.png',
@@ -191,7 +1305,33 @@
   );
 }
 
+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',
+    '缃戠珯鎺堟潈鍑�'
+  );
+}
+
 defineExpose({
   onConfirm: enterpriseWalletExpandindirectCreate,
 });
 </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