From cf3a9a81f4f26cc9cc13829fe6fb507dc41e2b2c Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 09 十月 2025 09:44:57 +0800
Subject: [PATCH] fix: bug

---
 src/views/EnterpriseManage/components/ConfigureDialog.vue |  351 +++++++++++-----------------------------------------------
 1 files changed, 66 insertions(+), 285 deletions(-)

diff --git a/src/views/EnterpriseManage/components/ConfigureDialog.vue b/src/views/EnterpriseManage/components/ConfigureDialog.vue
index ac7195d..820cd62 100644
--- a/src/views/EnterpriseManage/components/ConfigureDialog.vue
+++ b/src/views/EnterpriseManage/components/ConfigureDialog.vue
@@ -1,167 +1,28 @@
 <template>
   <ProDialog title="閰嶇疆" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
-    <ProForm :model="form" ref="dialogForm" label-width="120px">
-      <ProFormItemV2 label="" prop="enterpriseConfigureType" label-width="0">
-        <ProFormRadio
-          v-model="form.enterpriseConfigureType"
-          :value-enum="EnterpriseConfigureTypeText"
-          buttonStyle
-        />
-      </ProFormItemV2>
-      <!-- <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.Bank">
-        <ProFormItemV2 label="寮�鎴锋�昏:" prop="openBank">
-          <ProFormText
-            v-model.trim="form.openBank"
-            placeholder="璇疯緭鍏ュ紑鎴锋�昏"
-            :maxlength="40"
-          />
-        </ProFormItemV2>
-        <ProFormItemV2 label="寮�鎴锋敮琛�:" prop="openBranchBank">
-          <ProFormText
-            v-model.trim="form.openBranchBank"
-            placeholder="璇疯緭鍏ュ紑鎴锋敮琛�"
-            :maxlength="40"
-          />
-        </ProFormItemV2>
-        <ProFormItemV2
-          label="閾惰璐︽埛:"
-          prop="bankAccount"
-          :check-rules="[
-            { message: '璇疯緭鍏ラ摱琛岃处鎴�' },
-            { message: '閾惰璐︽埛浠呮敮鎸佹暟瀛�', pattern: BoleRegExp.RegNumber },
-          ]"
-        >
-          <ProFormText v-model.trim="form.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
-        </ProFormItemV2>
-        <ProFormItemV2 label="閾惰璐︽埛:" prop="verifyStatus">
-          {{ VerifyStatusText[form.verifyStatus] }}
-          <el-button style="margin-left: 10px" type="primary" link @click="handleCheckBankAccount"
-            >鏍¢獙</el-button
-          >
-        </ProFormItemV2>
-      </template> -->
-      <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.AliPay">
-        <ProFormItemV2
-          label="鏀粯瀹濊处鍙�:"
-          prop="alipayAccount"
-          :checkRules="[{ message: '璇疯緭鍏ユ敮浠樺疂璐﹀彿' }]"
-        >
-          <div style="display: flex; width: 100%">
-            <ProFormText v-model.trim="form.alipayAccount" placeholder="璇疯緭鍏ユ敮浠樺疂璐﹀彿">
-            </ProFormText>
-            <el-button style="margin-left: 10px" type="primary" link @click="openEnterpriseWallet"
-              >鑾峰彇绛剧害閾炬帴</el-button
-            >
-          </div>
-        </ProFormItemV2>
-        <ProFormItemV2
-          label="鏀粯瀹濆鍚�:"
-          prop="name"
-          :checkRules="[{ message: '璇疯緭鍏ユ敮浠樺疂濮撳悕' }]"
-        >
-          <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ユ敮浠樺疂濮撳悕" />
-        </ProFormItemV2>
-        <ProFormItemV2
-          label="鍟嗘埛ID:"
-          prop="alipayMerchantId"
-          :checkRules="[{ message: '璇疯緭鍏ュ晢鎴稩D' }]"
-        >
-          <ProFormText v-model.trim="form.alipayMerchantId" placeholder="璇疯緭鍏ュ晢鎴稩D" disabled />
-        </ProFormItemV2>
-        <ProFormItemV2 label="涓氬姟鍦烘櫙:" prop="scene" :checkRules="[{ message: '璇烽�夋嫨涓氬姟鍦烘櫙' }]">
-          <ProFormSelect
-            v-model="form.scene"
-            :valueEnum="EnumEnterpriseWalletExpandindirectOrderSceneText"
-            placeholder="璇烽�夋嫨涓氬姟鍦烘櫙"
-          >
-          </ProFormSelect>
-        </ProFormItemV2>
-        <ProFormItemV2
-          label="鍦烘櫙鎻忚堪:"
-          prop="sceneDirections"
-          :checkRules="[{ message: '璇疯緭鍏ュ満鏅弿杩�' }]"
-        >
-          <ProFormText
-            v-model.trim="form.sceneDirections"
-            placeholder="璋�/閫氳繃浠�涔堝獟浠嬶紙APP/web/灏忕▼搴�)/涓昏涓鸿皝鎻愪緵浠�涔堟湇鍔�/鐢ㄤ簬鍦ㄤ粈涔堝満鏅粰浠�涔堜汉缇よ浆璐�"
-          />
-        </ProFormItemV2>
-        <ProFormItemV2
-          label="杞处鍦烘櫙鎴浘:"
-          prop="sceneFiles"
-          :check-rules="[{ type: 'upload', message: '璇蜂笂浼犺浆璐﹀満鏅埅鍥�' }]"
-        >
-          <ProFormUpload
-            v-model:file-url="form.sceneFiles"
-            :limit="5"
-            :limitFileSize="10"
-            accept="png,jpg,jpeg,pdf"
-          ></ProFormUpload>
-        </ProFormItemV2>
-        <ProFormItemV2
-          label="璧勮川鏂囦欢:"
-          prop="sceneQualificationFiles"
-          :check-rules="[{ type: 'upload', message: '璇蜂笂浼犺祫璐ㄦ枃浠�' }]"
-        >
-          <ProFormUpload
-            v-model:file-url="form.sceneQualificationFiles"
-            :limit="5"
-            :limitFileSize="10"
-            accept="png,jpg,jpeg,pdf"
-          ></ProFormUpload>
-        </ProFormItemV2>
-        <ProFormItemV2 label="绛剧害鐘舵��:" prop="signStatus" required>
-          <span>{{ EnumEnterpriseWalletSignStatusText[form.signStatus] }}</span>
-          <el-button style="margin-left: 10px" type="primary" link @click="handleCheckBankAccount"
-            >鏍¢獙</el-button
-          >
-        </ProFormItemV2>
-        <ProFormItemV2 label="杩涗欢鐘舵��:" prop="expandindirectOrderStatus" required>
-          <span>{{
-            EnumEnterpriseWalletExpandindirectOrderStatusText[form.expandindirectOrderStatus]
-          }}</span>
-          <el-button style="margin-left: 10px" type="primary" link @click="handleCheckBankAccount"
-            >鏍¢獙</el-button
-          >
-        </ProFormItemV2>
-      </template>
-      <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.Electronic">
-        <div class="configure-dialog-form-title">閫氶亾閰嶇疆</div>
-        <ProFormItemV2
-          v-for="(item, index) in enabledElectronSignSettings"
-          :label="item.accessName"
-          :key="item.access"
-          prop="electronSignAccesses"
-          required
-        >
-          <ProFormSwitch
-            v-model="form.electronSignAccesses[index]"
-            :active-value="Number(item.access)"
-            :inactive-value="null"
-          ></ProFormSwitch>
-        </ProFormItemV2>
-      </template>
-      <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage">
-        <div class="configure-dialog-form-title">閫氶亾閰嶇疆</div>
-        <ProFormItemV2 label="鍚嶇О:" prop="smsAccess" :checkRules="[{ message: '璇烽�夋嫨鐭俊閫氶亾' }]">
-          <ProFormSelect
-            v-model="form.smsAccess"
-            :valueEnum="EnumSmsAccessText"
-            placeholder="璇烽�夋嫨鐭俊閫氶亾"
-          >
-          </ProFormSelect>
-        </ProFormItemV2>
-        <div class="configure-dialog-form-title">璐圭敤閰嶇疆</div>
-        <ProFormItemV2 label="鐭俊璐圭敤:" prop="smsCost">
-          <ProFormInputNumber
-            :controls="false"
-            v-model="form.smsCost"
-            placeholder="璇疯緭鍏�"
-            unit="鍏�/鏉�"
-          />
-        </ProFormItemV2>
-      </template>
-    </ProForm>
+    <FieldRadio
+      v-model="form.enterpriseConfigureType"
+      :value-enum="EnterpriseConfigureTypeText"
+      buttonStyle
+      style="margin-bottom: 22px"
+    />
+    <el-tabs v-model="form.enterpriseConfigureType" class="configure-dialog-tabs">
+      <el-tab-pane lazy :name="EnterpriseConfigureType.Bank">
+        <BankConfigureView :id="form.id" ref="bankConfigureViewRef" />
+      </el-tab-pane>
+      <el-tab-pane lazy :name="EnterpriseConfigureType.AliPay">
+        <AliPayConfigureView :id="form.id" ref="aliPayConfigureViewRef" />
+      </el-tab-pane>
+      <!-- <el-tab-pane lazy :name="EnterpriseConfigureType.Wechat">
+        <WechatConfigureView :id="form.id" ref="wechatConfigureViewRef" />
+      </el-tab-pane> -->
+      <el-tab-pane lazy :name="EnterpriseConfigureType.Electronic">
+        <ElectronicConfigureView :id="form.id" ref="electronicConfigureViewRef" />
+      </el-tab-pane>
+      <el-tab-pane lazy :name="EnterpriseConfigureType.ShortMessage">
+        <ShortMessageConfigureView :id="form.id" ref="shortMessageConfigureViewRef" />
+      </el-tab-pane>
+    </el-tabs>
     <template #footer>
       <span class="dialog-footer">
         <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
@@ -169,39 +30,16 @@
       </span>
     </template>
   </ProDialog>
-  <AlipayWalletOpen v-bind="dialogQrcodeProps"></AlipayWalletOpen>
 </template>
 
 <script setup lang="ts">
-import { FormInstance } from 'element-plus';
-import {
-  ProDialog,
-  ProForm,
-  ProFormItemV2,
-  ProFormText,
-  ProFormRadio,
-  ProFormInputNumber,
-  ProFormSelect,
-  ProFormSwitch,
-  useFormDialog,
-  UploadUserFile,
-  ProFormImageUpload,
-  ProFormUpload,
-} from '@bole-core/components';
-import { BoleRegExp } from '@bole-core/core';
-import {
-  EnterpriseConfigureType,
-  EnterpriseConfigureTypeText,
-  ChargeTypeEnum,
-  EnumElectronSignAccessText,
-  EnumSmsAccessText,
-  EnumElectronSignAccess,
-  EnumEnterpriseWalletSignStatusText,
-  EnumEnterpriseWalletExpandindirectOrderStatusText,
-  EnumEnterpriseWalletExpandindirectOrderSceneText,
-} from '@/constants';
-import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
-import AlipayWalletOpen from './AlipayWalletOpen.vue';
+import { ProDialog, FieldRadio } from '@bole-core/components';
+import { EnterpriseConfigureType, EnterpriseConfigureTypeText } from '@/constants';
+import BankConfigureView from './BankConfigureView.vue';
+import AliPayConfigureView from './AliPayConfigureView.vue';
+import ElectronicConfigureView from './ElectronicConfigureView.vue';
+import ShortMessageConfigureView from './ShortMessageConfigureView.vue';
+import WechatConfigureView from './WechatConfigureView.vue';
 
 defineOptions({
   name: 'ConfigureDialog',
@@ -209,27 +47,7 @@
 
 type Form = {
   enterpriseConfigureType: EnterpriseConfigureType;
-  // openBank: string;
-  // openBranchBank: string;
-  // bankAccount: string;
-  // verifyStatus: VerifyStatus;
-  electronSignAccesses: EnumElectronSignAccess[];
-  smsAccess: EnumSmsAccess;
-  smsCost: number;
-  alipayAccount: string;
-  alipayMerchantId: string;
   id: string;
-
-  signStatus: EnumEnterpriseWalletSignStatus;
-  expandindirectOrderStatus: EnumEnterpriseWalletExpandindirectOrderStatus;
-
-  name: string;
-  scene: EnumEnterpriseWalletExpandindirectOrderScene;
-  sceneDirections: string;
-  /**杞处鍦烘櫙鎴浘 */
-  sceneFiles: UploadUserFile[];
-  /**鍟嗘埛琛屼笟璧勮川鍥剧墖鎴栧崗璁枃鏈� */
-  sceneQualificationFiles: UploadUserFile[];
 };
 
 const form = defineModel<Form>('form');
@@ -240,88 +58,51 @@
   (e: 'onCancel'): void;
 }>();
 
-const dialogForm = ref<FormInstance>();
+const bankConfigureViewRef =
+  useTemplateRef<InstanceType<typeof BankConfigureView>>('bankConfigureViewRef');
+const aliPayConfigureViewRef =
+  useTemplateRef<InstanceType<typeof AliPayConfigureView>>('aliPayConfigureViewRef');
+const electronicConfigureViewRef = useTemplateRef<InstanceType<typeof ElectronicConfigureView>>(
+  'electronicConfigureViewRef'
+);
+const shortMessageConfigureViewRef = useTemplateRef<InstanceType<typeof ShortMessageConfigureView>>(
+  'shortMessageConfigureViewRef'
+);
 
-const { enabledElectronSignSettings } = useEnabledElectronSignSettings();
-
-async function handleCheckBankAccount() {
-  try {
-    let alipayWallet = await enterpriseWalletServices.getEnterpriseWallet({
-      enterpriseId: form.value.id,
-      access: EnumEnterpriseWalletAccess.Alipay,
-    });
-    if (alipayWallet) {
-      form.value.signStatus = alipayWallet.signStatus;
-      form.value.expandindirectOrderStatus = alipayWallet.expandindirectOrderStatus;
-    }
-  } catch (error) {}
-}
-
-async function getEnterpriseWalletExpandindirectOrder() {
-  try {
-    let res = await enterpriseWalletServices.getEnterpriseWalletExpandindirectOrder({
-      enterpriseId: form.value.id,
-    });
-    if (res) {
-      form.value.expandindirectOrderStatus = res.orderStatus;
-    }
-  } catch (error) {}
-}
+const wechatConfigureViewRef =
+  useTemplateRef<InstanceType<typeof WechatConfigureView>>('wechatConfigureViewRef');
 
 function onDialogClose() {
-  if (!dialogForm.value) return;
-  dialogForm.value.resetFields();
+  // if (!dialogForm.value) return;
+  // dialogForm.value.resetFields();
 }
 
-function handleConfirm() {
-  if (!dialogForm.value) return;
-  dialogForm.value.validate((valid) => {
-    if (valid) {
-      emit('onConfirm');
-    } else {
-      return;
-    }
-  });
-}
-
-const { dialogProps: dialogQrcodeProps, handleAdd } = useFormDialog({
-  defaultFormParams: {
-    alipayUrl: '',
-  },
-});
-
-// async function handleOpenEnterpriseWallet() {
-//   try {
-//     if (!dialogForm.value) return;
-//     const valid = await dialogForm.value.validateField(['alipayAccount', 'alipayMerchantId']);
-//     if (valid) {
-//       openEnterpriseWallet();
-//     }
-//   } catch (error) {}
-// }
-
-async function openEnterpriseWallet() {
-  try {
-    let params: API.OpenEnterpriseWalletCommand = {
-      access: EnumEnterpriseWalletAccess.Alipay,
-      enterpriseId: form.value.id,
-    };
-    let res = await enterpriseWalletServices.openEnterpriseWallet(params);
-    if (res) {
-      handleAdd({
-        alipayUrl: res.signUrl,
-      });
-    }
-  } catch (error) {}
+async function handleConfirm() {
+  let res: any;
+  if (form.value.enterpriseConfigureType === EnterpriseConfigureType.Bank) {
+    res = await bankConfigureViewRef.value?.onConfirm();
+  } else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.AliPay) {
+    res = await aliPayConfigureViewRef.value?.onConfirm?.();
+  } else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.Electronic) {
+    res = await electronicConfigureViewRef.value?.onConfirm?.();
+  } else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage) {
+    res = await shortMessageConfigureViewRef.value?.onConfirm?.();
+  } else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.Wechat) {
+    res = await wechatConfigureViewRef.value?.onConfirm?.();
+  }
+  if (res) {
+    emit('onConfirm');
+  }
 }
 </script>
 <style lang="scss" scoped>
 @use '@/style/common.scss' as *;
 
-.configure-dialog-form-title {
-  margin-bottom: 10px;
-  font-size: 15px;
-  font-weight: bold;
-  line-height: 36px;
+.configure-dialog-tabs {
+  :deep() {
+    .el-tabs__header {
+      display: none;
+    }
+  }
 }
 </style>

--
Gitblit v1.9.1