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