From ce7ff0effee22807c8d29a31d6f5f2713d3bf95c Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 11 九月 2025 17:39:51 +0800 Subject: [PATCH] Merge branch 'master' into dev-v1.1 --- src/views/EnterpriseManage/components/ConfigureDialog.vue | 319 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 205 insertions(+), 114 deletions(-) diff --git a/src/views/EnterpriseManage/components/ConfigureDialog.vue b/src/views/EnterpriseManage/components/ConfigureDialog.vue index 0224cb3..4a8e7f9 100644 --- a/src/views/EnterpriseManage/components/ConfigureDialog.vue +++ b/src/views/EnterpriseManage/components/ConfigureDialog.vue @@ -1,24 +1,24 @@ <template> - <ProDialog title="閰嶇疆" v-model="innerVisible" @close="onDialogClose" destroy-on-close draggable> - <ProForm :model="innerForm" ref="dialogForm" label-width="100px"> + <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="innerForm.enterpriseConfigureType" + v-model="form.enterpriseConfigureType" :value-enum="EnterpriseConfigureTypeText" buttonStyle /> </ProFormItemV2> - <template v-if="innerForm.enterpriseConfigureType === EnterpriseConfigureType.Bank"> + <!-- <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.Bank"> <ProFormItemV2 label="寮�鎴锋�昏:" prop="openBank"> <ProFormText - v-model.trim="innerForm.openBank" + v-model.trim="form.openBank" placeholder="璇疯緭鍏ュ紑鎴锋�昏" :maxlength="40" /> </ProFormItemV2> <ProFormItemV2 label="寮�鎴锋敮琛�:" prop="openBranchBank"> <ProFormText - v-model.trim="innerForm.openBranchBank" + v-model.trim="form.openBranchBank" placeholder="璇疯緭鍏ュ紑鎴锋敮琛�" :maxlength="40" /> @@ -31,89 +31,131 @@ { message: '閾惰璐︽埛浠呮敮鎸佹暟瀛�', pattern: BoleRegExp.RegNumber }, ]" > - <ProFormText v-model.trim="innerForm.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" /> + <ProFormText v-model.trim="form.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" /> </ProFormItemV2> <ProFormItemV2 label="閾惰璐︽埛:" prop="verifyStatus"> - {{ VerifyStatusText[innerForm.verifyStatus] }} - <el-button style="margin-left: 40px" type="primary" link @click="handleCheckBankAccount" + {{ 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="innerForm.enterpriseConfigureType === EnterpriseConfigureType.Electronic"> + <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.Electronic"> <div class="configure-dialog-form-title">閫氶亾閰嶇疆</div> <ProFormItemV2 - label="鍚嶇О:" - prop="signChannel" - :checkRules="[{ message: '璇烽�夋嫨鐢靛瓙绛鹃�氶亾' }]" + v-for="(item, index) in enabledElectronSignSettings" + :label="item.accessName" + :key="item.access" + prop="electronSignAccesses" + required > - <ProFormSelect - v-model="form.signChannel" - :valueEnum="SignChannelEnumText" - placeholder="璇烽�夋嫨鐢靛瓙绛鹃�氶亾" - > - </ProFormSelect> + <ProFormSwitch + v-model="form.electronSignAccesses[index]" + :active-value="Number(item.access)" + :inactive-value="null" + ></ProFormSwitch> </ProFormItemV2> - <div class="configure-dialog-form-title">璐圭敤閰嶇疆</div> - <ProFormItemV2 - label="璁¤垂鏂瑰紡:" - prop="chargeType" - :checkRules="[{ message: '璇烽�夋嫨璁¤垂鏂瑰紡' }]" - > - <ProFormRadio - :button-style="false" - v-model="innerForm.chargeType" - :value-enum="ChargeTypeEnumText" - /> - </ProFormItemV2> - <template v-if="innerForm.chargeType === ChargeTypeEnum.Group"> - <ProFormItemV2 label="瀹炲悕璐圭敤:" prop="realVerifyCost"> - <ProFormInputNumber - :controls="false" - v-model="innerForm.realVerifyCost" - placeholder="璇疯緭鍏�" - unit="鍏�/鏉�" - /> - </ProFormItemV2> - <ProFormItemV2 label="绛剧害璐圭敤:" prop="signCost"> - <ProFormInputNumber - :controls="false" - v-model="innerForm.signCost" - placeholder="璇疯緭鍏�" - unit="鍏�/浠�" - /> - </ProFormItemV2> - </template> - <template v-if="innerForm.chargeType === ChargeTypeEnum.Merge"> - <ProFormItemV2 label="缁熶竴鐢靛瓙绛�:" prop="mergeSignCost"> - <ProFormInputNumber - :controls="false" - v-model="innerForm.mergeSignCost" - placeholder="璇疯緭鍏�" - unit="鍏�/浠�" - /> - </ProFormItemV2> - </template> </template> - <template v-if="innerForm.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage"> + <template v-if="form.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage"> <div class="configure-dialog-form-title">閫氶亾閰嶇疆</div> - <ProFormItemV2 - label="鍚嶇О:" - prop="messageChannel" - :checkRules="[{ message: '璇烽�夋嫨鐭俊閫氶亾' }]" - > + <ProFormItemV2 label="鍚嶇О:" prop="smsAccess" :checkRules="[{ message: '璇烽�夋嫨鐭俊閫氶亾' }]"> <ProFormSelect - v-model="form.messageChannel" - :valueEnum="MessageChannelEnumText" + v-model="form.smsAccess" + :valueEnum="EnumSmsAccessText" placeholder="璇烽�夋嫨鐭俊閫氶亾" > </ProFormSelect> </ProFormItemV2> <div class="configure-dialog-form-title">璐圭敤閰嶇疆</div> - <ProFormItemV2 label="鐭俊璐圭敤:" prop="messageCost"> + <ProFormItemV2 label="鐭俊璐圭敤:" prop="smsCost"> <ProFormInputNumber :controls="false" - v-model="innerForm.messageCost" + v-model="form.smsCost" placeholder="璇疯緭鍏�" unit="鍏�/鏉�" /> @@ -127,6 +169,7 @@ </span> </template> </ProDialog> + <AlipayWalletOpen v-bind="dialogQrcodeProps"></AlipayWalletOpen> </template> <script setup lang="ts"> @@ -139,76 +182,93 @@ ProFormRadio, ProFormInputNumber, ProFormSelect, + ProFormSwitch, + useFormDialog, + UploadUserFile, + ProFormImageUpload, + ProFormUpload, } from '@bole-core/components'; import { BoleRegExp } from '@bole-core/core'; import { EnterpriseConfigureType, EnterpriseConfigureTypeText, ChargeTypeEnum, - ChargeTypeEnumText, - SignChannelEnum, - SignChannelEnumText, - VerifyStatusText, - VerifyStatusColor, - VerifyStatus, - MessageChannelEnum, - MessageChannelEnumText, + EnumElectronSignAccessText, + EnumSmsAccessText, + EnumElectronSignAccess, + EnumEnterpriseWalletSignStatusText, + EnumEnterpriseWalletExpandindirectOrderStatusText, + EnumEnterpriseWalletExpandindirectOrderSceneText, } from '@/constants'; +import * as enterpriseWalletServices from '@/services/api/enterpriseWallet'; +import AlipayWalletOpen from './AlipayWalletOpen.vue'; defineOptions({ name: 'ConfigureDialog', }); -type Props = { - modelValue: boolean; - form?: { - enterpriseConfigureType: EnterpriseConfigureType; - openBank: string; - openBranchBank: string; - bankAccount: string; - verifyStatus: VerifyStatus; - signChannel: SignChannelEnum; - chargeType: ChargeTypeEnum; - realVerifyCost: number; - signCost: number; - mergeSignCost: number; - messageCost: number; - messageChannel: MessageChannelEnum; - }; +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 props = withDefaults(defineProps<Props>(), { - modelValue: false, -}); +const form = defineModel<Form>('form'); +const visible = defineModel({ type: Boolean }); const emit = defineEmits<{ - (e: 'update:modelValue', value: boolean): void; - (e: 'update:form', value: Props['form']): void; (e: 'onConfirm'): void; (e: 'onCancel'): void; }>(); const dialogForm = ref<FormInstance>(); -const innerVisible = computed({ - get() { - return props.modelValue; - }, - set(val) { - emit('update:modelValue', val); - }, +const { enabledElectronSignSettings } = useEnabledElectronSignSettings({ + all: true, }); -const innerForm = computed({ - get() { - return props.form; - }, - set(val) { - emit('update:form', val); - }, -}); +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) {} +} -function handleCheckBankAccount() {} +async function getEnterpriseWalletExpandindirectOrder() { + try { + let res = await enterpriseWalletServices.getEnterpriseWalletExpandindirectOrder({ + enterpriseId: form.value.id, + }); + if (res) { + form.value.expandindirectOrderStatus = res.orderStatus; + } + } catch (error) {} +} function onDialogClose() { if (!dialogForm.value) return; @@ -225,6 +285,37 @@ } }); } + +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) {} +} </script> <style lang="scss" scoped> @use '@/style/common.scss' as *; -- Gitblit v1.9.1