<template>
|
<ProDialog
|
title="充值"
|
v-model="innerVisible"
|
@close="onDialogClose"
|
destroy-on-close
|
draggable
|
top="10vh"
|
:width="900"
|
>
|
<div class="reward-recharge-wrapper">
|
<div class="reward-recharge-wrapper-title">
|
请您通过网银转账或线下汇款的方式打款至下方指定账号
|
</div>
|
<div class="reward-recharge-wrapper-content">
|
<ProForm label-width="auto" is-read>
|
<ProFormItemV2 label="进账单位:">
|
<ProFormText :model-value="innerForm?.incomeEnterpriseName ?? ''"></ProFormText>
|
</ProFormItemV2>
|
<ProFormItemV2 label="开户名称:">
|
<ProFormText :model-value="innerForm?.incomeEnterpriseName ?? ''"></ProFormText>
|
</ProFormItemV2>
|
<ProFormItemV2 label="开户银行:">
|
<ProFormText :model-value="innerForm?.bankBranchName ?? ''"></ProFormText>
|
</ProFormItemV2>
|
<ProFormItemV2 label="银行账号:">
|
<ProFormText :model-value="innerForm?.incomeBankNum">
|
<template #readContent>
|
<span>{{ StringUtils.insertSpaces(innerForm?.incomeBankNum) }}</span>
|
<el-button
|
type="primary"
|
link
|
class="el-button-link-clear"
|
style="margin-left: 16px"
|
@click="copyTextToClipboard(innerForm?.incomeBankNum)"
|
>复制账号</el-button
|
>
|
</template>
|
</ProFormText>
|
</ProFormItemV2>
|
</ProForm>
|
</div>
|
</div>
|
<ProForm :model="innerForm" label-width="120px" ref="dialogForm">
|
<FormCellV2 title="转账/汇款信息确认">
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2
|
label="汇款账户名称:"
|
prop="outEnterpriseName"
|
:check-rules="[{ message: '请输入您汇款的账户名称' }]"
|
>
|
<ProFormText
|
v-model.trim="innerForm.outEnterpriseName"
|
:maxlength="30"
|
placeholder="请输入您汇款的账户名称"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2
|
label="汇款银行账号:"
|
prop="outBankNum"
|
:check-rules="[
|
{
|
trigger: 'blur',
|
validator: (rule, value, callback) => {
|
const _value = value.replace(/\s+/g, '');
|
if (!_value) {
|
callback(new Error('请输入您汇款的对公帐号!'));
|
} else if (!BoleRegExp.RegBankCard.test(_value)) {
|
callback(new Error('请输入正确的银行卡号!'));
|
} else {
|
callback();
|
}
|
},
|
},
|
]"
|
>
|
<ProFormText
|
v-model.trim="innerForm.outBankNum"
|
:maxlength="30"
|
placeholder="请输入您汇款的对公帐号"
|
:formatter="(value: string) => value.replace(/\s+/g, '')"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormItemV2
|
label="汇款金额:"
|
prop="prechargeAmount"
|
:check-rules="[{ type: 'number', message: '请输入您的汇款金额' }]"
|
>
|
<ProFormInputNumber
|
v-model.trim="innerForm.prechargeAmount"
|
placeholder="请输入您的汇款金额"
|
:controls="false"
|
:min="0"
|
:max="99999999999999"
|
:precision="2"
|
unit="元"
|
style="width: 200px"
|
/>
|
</ProFormItemV2>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2
|
label="开户银行:"
|
prop="outBankName"
|
:check-rules="[{ message: '请输入您的开户银行' }]"
|
>
|
<ProFormText
|
v-model.trim="innerForm.outBankName"
|
:maxlength="30"
|
placeholder="请输入您的开户银行"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormCol>
|
<ProFormColItem :span="12">
|
<ProFormItemV2 label="开户支行:" prop="outBankResumeName">
|
<ProFormText
|
v-model.trim="innerForm.outBankResumeName"
|
:maxlength="30"
|
placeholder="请输入您的开户支行"
|
/>
|
</ProFormItemV2>
|
</ProFormColItem>
|
</ProFormCol>
|
<ProFormItemV2
|
label="上传汇款回单:"
|
prop="outReceiptFileUrl"
|
:check-rules="[{ type: 'upload', message: '请上传汇款回单' }]"
|
>
|
<ProFormUpload
|
v-model:file-url="innerForm.outReceiptFileUrl"
|
:limitFileSize="10"
|
accept="jpg/jpeg,png,pdf"
|
>
|
</ProFormUpload>
|
</ProFormItemV2>
|
</FormCellV2>
|
</ProForm>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button type="default" @click="emit('onCancel')">返回</el-button>
|
<el-button type="primary" @click="handleConfirm">确认提交</el-button>
|
</span>
|
</template>
|
</ProDialog>
|
</template>
|
|
<script setup lang="ts">
|
import { FormInstance } from 'element-plus';
|
import {
|
ProDialog,
|
ProForm,
|
ProFormItemV2,
|
ProFormText,
|
ProFormUpload,
|
ProFormInputNumber,
|
UploadUserFile,
|
ProFormCol,
|
ProFormColItem,
|
} from '@bole-core/components';
|
import { StringUtils, copyTextToClipboard } from '@/utils';
|
import { BoleRegExp } from '@bole-core/core';
|
|
defineOptions({
|
name: 'RewardRechargeDialog',
|
});
|
|
type Props = {
|
modelValue: boolean;
|
form: {
|
title?: string;
|
incomeBankNum: string;
|
incomeEnterpriseName: string;
|
bankBranchName: string;
|
outBankNum: string;
|
outBankName: string;
|
outBankResumeName: string;
|
outEnterpriseName: string;
|
prechargeAmount: number;
|
outReceiptFileUrl: UploadUserFile[];
|
};
|
};
|
|
const props = withDefaults(defineProps<Props>(), {
|
modelValue: false,
|
});
|
|
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 innerForm = computed({
|
get() {
|
return props.form;
|
},
|
set(val) {
|
emit('update:form', val);
|
},
|
});
|
function onDialogClose() {
|
if (!dialogForm.value) return;
|
dialogForm.value.resetFields();
|
}
|
|
function handleConfirm() {
|
if (!dialogForm.value) return;
|
dialogForm.value.validate((valid) => {
|
if (valid) {
|
emit('onConfirm');
|
} else {
|
return;
|
}
|
});
|
}
|
</script>
|
<style lang="scss" scoped>
|
.reward-recharge-wrapper {
|
margin-bottom: 24px;
|
padding: 20px;
|
border: 1px solid #e8e8e8;
|
border-radius: 4px;
|
|
.reward-recharge-wrapper-title {
|
margin-bottom: 24px;
|
font-size: 14px;
|
color: getCssVar('text-color', 'primary');
|
line-height: 19px;
|
}
|
|
.reward-recharge-wrapper-content {
|
padding: 20px 40px;
|
border: 1px dashed #ffd64f;
|
border-radius: 4px;
|
background: #fffcf2;
|
|
.el-form {
|
:deep() {
|
.el-form-item__label {
|
padding-right: 8px;
|
}
|
}
|
}
|
}
|
}
|
</style>
|