From bb3b9d75c09472618f1aebd6f0080fea30969599 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 23 九月 2025 14:25:09 +0800
Subject: [PATCH] fix: 企业配置
---
src/views/EnterpriseManage/components/ConfigureDialog.vue | 346 +++----------------
src/views/EnterpriseManage/components/ElectronicConfigureView.vue | 98 +++++
src/services/api/typings.d.ts | 4
src/views/EnterpriseManage/components/ShortMessageConfigureView.vue | 98 +++++
src/views/EnterpriseManage/components/BankConfigureView.vue | 101 +++++
src/constants/enterprise.ts | 4
src/views/EnterpriseManage/EnterpriseManageList.vue | 165 --------
src/views/EnterpriseManage/components/AliPayConfigureView.vue | 231 ++++++++++++
8 files changed, 602 insertions(+), 445 deletions(-)
diff --git a/src/constants/enterprise.ts b/src/constants/enterprise.ts
index 636974c..167088d 100644
--- a/src/constants/enterprise.ts
+++ b/src/constants/enterprise.ts
@@ -23,8 +23,8 @@
}
export const EnterpriseConfigureTypeText = {
- // [EnterpriseConfigureType.Bank]: '閾惰淇℃伅閰嶇疆',
- [EnterpriseConfigureType.AliPay]: '鏀粯淇℃伅閰嶇疆',
+ [EnterpriseConfigureType.Bank]: '閾惰淇℃伅閰嶇疆',
+ [EnterpriseConfigureType.AliPay]: '鏀粯瀹濋厤缃�',
[EnterpriseConfigureType.Electronic]: '鐢靛瓙绛鹃厤缃�',
[EnterpriseConfigureType.ShortMessage]: '鐭俊閫氶亾閰嶇疆',
};
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 0ada393..737d081 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -3455,6 +3455,10 @@
/** 鍗忚澶辨晥鏃堕棿 */
invalidTime?: string;
signStatus?: EnumEnterpriseWalletSignStatus;
+ /** 鎵�灞為摱琛� */
+ bank?: string;
+ /** 鎵�灞炴敮琛� */
+ bankBranch?: string;
/** 鏀粯瀹濆鍚� */
name?: string;
/** 鏀粯瀹濈櫥褰曡处鍙� */
diff --git a/src/views/EnterpriseManage/EnterpriseManageList.vue b/src/views/EnterpriseManage/EnterpriseManageList.vue
index 1c28138..9df9afe 100644
--- a/src/views/EnterpriseManage/EnterpriseManageList.vue
+++ b/src/views/EnterpriseManage/EnterpriseManageList.vue
@@ -47,10 +47,8 @@
LoadingLayout,
AppContainer,
QueryFilterItem,
- useTable,
useFormDialog,
FieldRadio,
- UploadUserFile,
useTableV2,
} from '@bole-core/components';
import { useAccess, useGlobalEventContext } from '@/hooks';
@@ -58,8 +56,6 @@
import ConfigureDialog from './components/ConfigureDialog.vue';
import { Message } from '@bole-core/core';
import * as enterpriseServices from '@/services/api/enterprise';
-import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
-import { convertWalletApiToFiles, convertWalletFilesToApi } from '@/utils';
defineOptions({
name: 'EnterpriseManageList',
@@ -86,8 +82,6 @@
});
const router = useRouter();
-
-const { invalidateQueries } = useEnabledElectronSignSettings();
const {
getDataSource: getList,
@@ -131,165 +125,26 @@
}
);
-async function getEnterpriseElectronSignSetting(id: string) {
- return await enterpriseServices.getEnterpriseElectronSignSetting({ id: id });
+function openDialog(row?: API.GetEnterprisesQueryResultItem) {
+ handleEdit({
+ id: row.id,
+ enterpriseConfigureType: EnterpriseConfigureType.Bank,
+ });
}
-async function getEnterpriseSmsSetting(id: string) {
- return await enterpriseServices.getEnterpriseSmsSetting({ id: id });
-}
-
-const EnumElectronSignAccessList = computed(() =>
- Object.values(EnumElectronSignAccess)
- .filter(Number)
- .map((x) => Number(x))
-);
-
-async function openDialog(row?: API.GetEnterprisesQueryResultItem) {
- try {
- if (row) {
- let electronSignSetting = await getEnterpriseElectronSignSetting(row.id);
- let smsSetting = await getEnterpriseSmsSetting(row.id);
- let alipayWallet = await enterpriseWalletServices.getEnterpriseWallet({
- enterpriseId: row.id,
- access: EnumEnterpriseWalletAccess.Alipay,
- });
- handleEdit({
- id: row.id,
- enterpriseConfigureType: EnterpriseConfigureType.AliPay,
- electronSignAccesses: EnumElectronSignAccessList.value.map((value) =>
- electronSignSetting.electronSignAccesses.includes(value) ? value : null
- ),
- smsAccess: smsSetting.smsAccess,
- smsCost: smsSetting.smsCost,
- alipayAccount: alipayWallet.identity,
- alipayMerchantId: alipayWallet.code,
- signStatus: alipayWallet.signStatus,
- expandindirectOrderStatus: alipayWallet.expandindirectOrderStatus,
-
- name: alipayWallet.name,
- scene: alipayWallet.scene || EnumEnterpriseWalletExpandindirectOrderScene.YONGJIN_BAOCHOU,
- sceneDirections: alipayWallet.sceneDirections,
- sceneFiles: convertWalletApiToFiles(
- alipayWallet.files,
- EnumEnterpriseWalletExpandindirectOrderFileType.Scene
- ),
- sceneQualificationFiles: convertWalletApiToFiles(
- alipayWallet.files,
- EnumEnterpriseWalletExpandindirectOrderFileType.SceneQualification
- ),
- });
- } else {
- handleAdd({
- enterpriseConfigureType: EnterpriseConfigureType.AliPay,
- });
- }
- } catch (error) {}
-}
-
-const { dialogProps, handleAdd, handleEdit, editForm, dialogState } = useFormDialog({
+const { dialogProps, handleEdit, dialogState } = useFormDialog({
onConfirm: handleAddOrEdit,
defaultFormParams: {
id: '',
- enterpriseConfigureType: EnterpriseConfigureType.AliPay,
- electronSignAccesses: [] as EnumElectronSignAccess[],
- smsAccess: '' as any as EnumSmsAccess,
- smsCost: 0,
- alipayAccount: '',
- alipayMerchantId: '',
- signStatus: '' as any as EnumEnterpriseWalletSignStatus,
- expandindirectOrderStatus: '' as any as EnumEnterpriseWalletExpandindirectOrderStatus,
-
- name: '',
- scene: '' as any as EnumEnterpriseWalletExpandindirectOrderScene,
- sceneDirections: '',
- /**杞处鍦烘櫙鎴浘 */
- sceneFiles: [] as UploadUserFile[],
- /**鍟嗘埛琛屼笟璧勮川鍥剧墖鎴栧崗璁枃鏈� */
- sceneQualificationFiles: [] as UploadUserFile[],
+ enterpriseConfigureType: EnterpriseConfigureType.Bank,
},
});
async function handleAddOrEdit() {
try {
- let res;
- // if (type === EnterpriseConfigureType.Bank) {
- // res = await createOrEditFlexEnterpriseBankSetting();
- // }
- if (editForm.enterpriseConfigureType === EnterpriseConfigureType.Electronic) {
- res = await createOrEditFlexEnterpriseSignSetting();
- }
- if (editForm.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage) {
- res = await createOrEditFlexEnterpriseMessageSetting();
- }
- if (editForm.enterpriseConfigureType === EnterpriseConfigureType.AliPay) {
- res = await enterpriseWalletExpandindirectCreate();
- }
- if (res) {
- Message.successMessage('鎿嶄綔鎴愬姛');
- getList(paginationState.pageIndex);
- dialogState.dialogVisible = false;
- }
- } catch (error) {}
-}
-
-async function enterpriseWalletExpandindirectCreate() {
- try {
- let params: API.EnterpriseWalletExpandindirectCreateCommand = {
- enterpriseId: editForm.id,
- identity: editForm.alipayAccount,
- name: editForm.name,
- scene: editForm.scene,
- sceneDirections: editForm.sceneDirections,
- sitesInfo: null,
- files: [
- ...convertWalletFilesToApi(
- editForm.sceneFiles,
- EnumEnterpriseWalletExpandindirectOrderFileType.Scene
- ),
- ...convertWalletFilesToApi(
- editForm.sceneQualificationFiles,
- EnumEnterpriseWalletExpandindirectOrderFileType.SceneQualification
- ),
- ],
- };
- return await enterpriseWalletServices.enterpriseWalletExpandindirectCreate(params);
- } catch (error) {}
-}
-
-// async function createOrEditFlexEnterpriseBankSetting() {
-// try {
-// let params: API.CreateOrEditFlexEnterpriseBankInput = {
-// id: editForm.id,
-// openBank: editForm.openBank,
-// openBranchBank: editForm.openBranchBank,
-// bankAccount: editForm.bankAccount,
-// verifyStatus: editForm.verifyStatus,
-// flexEnterpirseId: editForm.flexEnterpirseId,
-// };
-// return await flexEnterpriseServices.createOrEditFlexEnterpriseBankSetting(params);
-// } catch (error) {}
-// }
-
-async function createOrEditFlexEnterpriseSignSetting() {
- try {
- let params: API.SetEnterpriseElectronSignSettingCommand = {
- id: editForm.id,
- electronSignAccesses: editForm.electronSignAccesses.filter(Boolean),
- };
- let res = await enterpriseServices.setEnterpriseElectronSignSetting(params);
- invalidateQueries();
- return res;
- } catch (error) {}
-}
-async function createOrEditFlexEnterpriseMessageSetting() {
- try {
- let params: API.SetEnterpriseSmsSettingCommand = {
- id: editForm.id,
- smsAccess: editForm.smsAccess,
- smsCost: editForm.smsCost,
- };
- return await enterpriseServices.setEnterpriseSmsSetting(params);
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ dialogState.dialogVisible = false;
} catch (error) {}
}
diff --git a/src/views/EnterpriseManage/components/AliPayConfigureView.vue b/src/views/EnterpriseManage/components/AliPayConfigureView.vue
new file mode 100644
index 0000000..adfc111
--- /dev/null
+++ b/src/views/EnterpriseManage/components/AliPayConfigureView.vue
@@ -0,0 +1,231 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <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="refetch({ type: 'inactive' })"
+ >鏍¢獙</el-button
+ >
+ </ProFormItemV2>
+ <ProFormItemV2 label="杩涗欢鐘舵��:" prop="expandindirectOrderStatus" required>
+ <span>{{
+ EnumEnterpriseWalletExpandindirectOrderStatusText[form.expandindirectOrderStatus]
+ }}</span>
+ <el-button
+ style="margin-left: 10px"
+ type="primary"
+ link
+ @click="refetch({ type: 'inactive' })"
+ >鏍¢獙</el-button
+ >
+ </ProFormItemV2>
+ </ProForm>
+ <AlipayWalletOpen v-bind="dialogQrcodeProps"></AlipayWalletOpen>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ LoadingLayout,
+ UploadUserFile,
+ ProFormSelect,
+ ProFormUpload,
+ useFormDialog,
+} from '@bole-core/components';
+import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
+import { useQuery } from '@tanstack/vue-query';
+import {
+ EnumEnterpriseWalletExpandindirectOrderSceneText,
+ EnumEnterpriseWalletSignStatusText,
+ EnumEnterpriseWalletExpandindirectOrderStatusText,
+} from '@/constants';
+import { convertWalletApiToFiles, convertWalletFilesToApi } from '@/utils';
+import AlipayWalletOpen from './AlipayWalletOpen.vue';
+
+defineOptions({
+ name: 'AliPayConfigureView',
+});
+
+type Props = {
+ id: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const dialogForm = ref<FormInstance>();
+
+const form = reactive({
+ alipayAccount: '',
+ alipayMerchantId: '',
+ signStatus: '' as any as EnumEnterpriseWalletSignStatus,
+ expandindirectOrderStatus: '' as any as EnumEnterpriseWalletExpandindirectOrderStatus,
+ name: '',
+ scene: '' as any as EnumEnterpriseWalletExpandindirectOrderScene,
+ sceneDirections: '',
+ /**杞处鍦烘櫙鎴浘 */
+ sceneFiles: [] as UploadUserFile[],
+ /**鍟嗘埛琛屼笟璧勮川鍥剧墖鎴栧崗璁枃鏈� */
+ sceneQualificationFiles: [] as UploadUserFile[],
+});
+
+const { isLoading, refetch } = useQuery({
+ queryKey: [
+ 'enterpriseWalletServices/getEnterpriseWallet',
+ props.id,
+ EnumEnterpriseWalletAccess.Alipay,
+ ],
+ queryFn: async (ctx) => {
+ return await enterpriseWalletServices.getEnterpriseWallet({
+ enterpriseId: props.id,
+ access: EnumEnterpriseWalletAccess.Alipay,
+ });
+ },
+ onSuccess(data) {
+ form.alipayAccount = data.identity;
+ form.alipayMerchantId = data.code;
+ form.expandindirectOrderStatus = data.expandindirectOrderStatus;
+ form.signStatus = data.signStatus;
+ form.name = data.name;
+ form.scene = data.scene || EnumEnterpriseWalletExpandindirectOrderScene.YONGJIN_BAOCHOU;
+ form.name = data.sceneDirections;
+ form.sceneFiles = convertWalletApiToFiles(
+ data.files,
+ EnumEnterpriseWalletExpandindirectOrderFileType.Scene
+ );
+ form.sceneQualificationFiles = convertWalletApiToFiles(
+ data.files,
+ EnumEnterpriseWalletExpandindirectOrderFileType.SceneQualification
+ );
+ },
+});
+
+const { dialogProps: dialogQrcodeProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ alipayUrl: '',
+ },
+});
+
+async function openEnterpriseWallet() {
+ try {
+ let params: API.OpenEnterpriseWalletCommand = {
+ access: EnumEnterpriseWalletAccess.Alipay,
+ enterpriseId: props.id,
+ };
+ let res = await enterpriseWalletServices.openEnterpriseWallet(params);
+ if (res) {
+ handleAdd({
+ alipayUrl: res.signUrl,
+ });
+ }
+ } catch (error) {}
+}
+
+async function enterpriseWalletExpandindirectCreate() {
+ try {
+ if (!dialogForm.value) return;
+ const valid = await dialogForm.value.validate();
+ if (!valid) return;
+ let params: API.EnterpriseWalletExpandindirectCreateCommand = {
+ enterpriseId: props.id,
+ identity: form.alipayAccount,
+ name: form.name,
+ scene: form.scene,
+ sceneDirections: form.sceneDirections,
+ sitesInfo: null,
+ files: [
+ ...convertWalletFilesToApi(
+ form.sceneFiles,
+ EnumEnterpriseWalletExpandindirectOrderFileType.Scene
+ ),
+ ...convertWalletFilesToApi(
+ form.sceneQualificationFiles,
+ EnumEnterpriseWalletExpandindirectOrderFileType.SceneQualification
+ ),
+ ],
+ };
+ let res = await enterpriseWalletServices.enterpriseWalletExpandindirectCreate(params);
+ return res;
+ } catch (error) {}
+}
+
+defineExpose({
+ onConfirm: enterpriseWalletExpandindirectCreate,
+});
+</script>
diff --git a/src/views/EnterpriseManage/components/BankConfigureView.vue b/src/views/EnterpriseManage/components/BankConfigureView.vue
new file mode 100644
index 0000000..3ca62c1
--- /dev/null
+++ b/src/views/EnterpriseManage/components/BankConfigureView.vue
@@ -0,0 +1,101 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2 label="寮�鎴锋�昏:" prop="bank">
+ <ProFormText v-model.trim="form.bank" placeholder="璇疯緭鍏ュ紑鎴锋�昏" :maxlength="40" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="寮�鎴锋敮琛�:" prop="bankBranch">
+ <ProFormText v-model.trim="form.bankBranch" 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="signStatus">
+ {{ EnumEnterpriseWalletSignStatusText[form.signStatus] }}
+ <el-button
+ style="margin-left: 10px"
+ type="primary"
+ link
+ @click="refetch({ type: 'inactive' })"
+ >鏍¢獙</el-button
+ >
+ </ProFormItemV2>
+ </ProForm>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import { ProForm, ProFormItemV2, ProFormText, LoadingLayout } from '@bole-core/components';
+import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
+import { EnumEnterpriseWalletSignStatusText } from '@/constants';
+import { BoleRegExp } from '@bole-core/core';
+import { useQuery } from '@tanstack/vue-query';
+
+defineOptions({
+ name: 'BankConfigureView',
+});
+
+type Props = {
+ id: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const dialogForm = ref<FormInstance>();
+
+const form = reactive({
+ bank: '',
+ bankBranch: '',
+ bankAccount: '',
+ signStatus: '' as any as EnumEnterpriseWalletSignStatus,
+});
+
+const { isLoading, refetch } = useQuery({
+ queryKey: [
+ 'enterpriseWalletServices/getEnterpriseWallet',
+ props.id,
+ EnumEnterpriseWalletAccess.PingAnPay,
+ ],
+ queryFn: async () => {
+ return await enterpriseWalletServices.getEnterpriseWallet({
+ enterpriseId: props.id,
+ access: EnumEnterpriseWalletAccess.PingAnPay,
+ });
+ },
+ onSuccess(data) {
+ form.bank = data.bank;
+ form.bankBranch = data.bankBranch;
+ form.bankAccount = data.identity;
+ form.signStatus = data.signStatus;
+ },
+});
+
+async function openEnterpriseWallet() {
+ try {
+ if (!dialogForm.value) return;
+ const valid = await dialogForm.value.validate();
+ if (!valid) return;
+ let params: API.OpenEnterpriseWalletCommand = {
+ access: EnumEnterpriseWalletAccess.PingAnPay,
+ enterpriseId: props.id,
+ bank: form.bank,
+ bankBranch: form.bankBranch,
+ identity: form.bankAccount,
+ };
+ let res = await enterpriseWalletServices.openEnterpriseWallet(params);
+ return res;
+ } catch (error) {}
+}
+
+defineExpose({
+ onConfirm: openEnterpriseWallet,
+});
+</script>
diff --git a/src/views/EnterpriseManage/components/ConfigureDialog.vue b/src/views/EnterpriseManage/components/ConfigureDialog.vue
index 4a8e7f9..e96bea7 100644
--- a/src/views/EnterpriseManage/components/ConfigureDialog.vue
+++ b/src/views/EnterpriseManage/components/ConfigureDialog.vue
@@ -1,167 +1,25 @@
<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.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 +27,15 @@
</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';
defineOptions({
name: 'ConfigureDialog',
@@ -209,27 +43,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,90 +54,46 @@
(e: 'onCancel'): void;
}>();
-const dialogForm = ref<FormInstance>();
-
-const { enabledElectronSignSettings } = useEnabledElectronSignSettings({
- all: true,
-});
-
-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 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'
+);
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?.();
+ }
+ 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>
diff --git a/src/views/EnterpriseManage/components/ElectronicConfigureView.vue b/src/views/EnterpriseManage/components/ElectronicConfigureView.vue
new file mode 100644
index 0000000..1597a93
--- /dev/null
+++ b/src/views/EnterpriseManage/components/ElectronicConfigureView.vue
@@ -0,0 +1,98 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <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>
+ </ProForm>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import { ProForm, ProFormItemV2, ProFormSwitch, LoadingLayout } from '@bole-core/components';
+import * as enterpriseServices from '@/services/api/enterprise';
+import { useQuery } from '@tanstack/vue-query';
+import { useEnabledElectronSignSettings } from '@/hooks';
+
+defineOptions({
+ name: 'ElectronicConfigureView',
+});
+
+type Props = {
+ id: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const dialogForm = ref<FormInstance>();
+
+const { enabledElectronSignSettings, invalidateQueries } = useEnabledElectronSignSettings({
+ all: true,
+});
+
+const form = reactive({
+ electronSignAccesses: [] as EnumElectronSignAccess[],
+});
+
+const EnumElectronSignAccessList = computed(() =>
+ Object.values(EnumElectronSignAccess)
+ .filter(Number)
+ .map((x) => Number(x))
+);
+
+const { isLoading } = useQuery({
+ queryKey: ['enterpriseServices/getEnterpriseElectronSignSetting', props.id],
+ queryFn: async () => {
+ return await enterpriseServices.getEnterpriseElectronSignSetting({
+ id: props.id,
+ });
+ },
+ onSuccess(data) {
+ form.electronSignAccesses = EnumElectronSignAccessList.value.map((value) =>
+ data.electronSignAccesses.includes(value) ? value : null
+ );
+ },
+});
+
+async function createOrEditFlexEnterpriseSignSetting() {
+ try {
+ if (!dialogForm.value) return;
+ const valid = await dialogForm.value.validate();
+ if (!valid) return;
+ let params: API.SetEnterpriseElectronSignSettingCommand = {
+ id: props.id,
+ electronSignAccesses: form.electronSignAccesses.filter(Boolean),
+ };
+ let res = await enterpriseServices.setEnterpriseElectronSignSetting(params);
+ invalidateQueries();
+ return res;
+ } catch (error) {}
+}
+
+defineExpose({
+ onConfirm: createOrEditFlexEnterpriseSignSetting,
+});
+</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;
+}
+</style>
diff --git a/src/views/EnterpriseManage/components/ShortMessageConfigureView.vue b/src/views/EnterpriseManage/components/ShortMessageConfigureView.vue
new file mode 100644
index 0000000..2284d2e
--- /dev/null
+++ b/src/views/EnterpriseManage/components/ShortMessageConfigureView.vue
@@ -0,0 +1,98 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <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>
+ </ProForm>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProForm,
+ ProFormItemV2,
+ ProFormSelect,
+ LoadingLayout,
+ ProFormInputNumber,
+} from '@bole-core/components';
+import * as enterpriseServices from '@/services/api/enterprise';
+import { useQuery } from '@tanstack/vue-query';
+import { EnumSmsAccessText } from '@/constants';
+
+defineOptions({
+ name: 'ShortMessageConfigureView',
+});
+
+type Props = {
+ id: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const dialogForm = ref<FormInstance>();
+
+const form = reactive({
+ smsAccess: '' as any as EnumSmsAccess,
+ smsCost: 0,
+});
+
+const { isLoading } = useQuery({
+ queryKey: ['enterpriseServices/getEnterpriseSmsSetting', props.id],
+ queryFn: async () => {
+ return await enterpriseServices.getEnterpriseSmsSetting({
+ id: props.id,
+ });
+ },
+ onSuccess(data) {
+ form.smsAccess = data.smsAccess;
+ form.smsCost = data.smsCost;
+ },
+});
+
+async function createOrEditFlexEnterpriseMessageSetting() {
+ try {
+ if (!dialogForm.value) return;
+ const valid = await dialogForm.value.validate();
+ if (!valid) return;
+ let params: API.SetEnterpriseSmsSettingCommand = {
+ id: props.id,
+ smsAccess: form.smsAccess,
+ smsCost: form.smsCost,
+ };
+ let res = await enterpriseServices.setEnterpriseSmsSetting(params);
+ return res;
+ } catch (error) {}
+}
+
+defineExpose({
+ onConfirm: createOrEditFlexEnterpriseMessageSetting,
+});
+</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;
+}
+</style>
--
Gitblit v1.9.1