<template>
|
<ProDialog :title="title" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
|
<PortraitTableWithAttachment v-bind="portraitTableWithAttachmentProps" />
|
<ProForm
|
:model="form"
|
ref="dialogForm"
|
label-width="90px"
|
style="margin-top: 20px"
|
:is-read="form.isDetail"
|
>
|
<ProFormItemV2
|
label="充值状态:"
|
prop="transactionStatus"
|
:check-rules="[{ message: '请选择充值状态' }]"
|
>
|
<ProFormRadio v-model="form.transactionStatus" :value-enum="transactionStatusText" />
|
</ProFormItemV2>
|
<ProFormItemV2 label="备注:" prop="remark">
|
<ProFormTextArea
|
v-model="form.remark"
|
placeholder="请输入备注"
|
:rows="4"
|
:maxlength="150"
|
show-word-limit
|
/>
|
</ProFormItemV2>
|
</ProForm>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @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,
|
ProFormRadio,
|
ProFormTextArea,
|
} from '@bole-core/components';
|
import { usePortraitTableWithAttachment } from '@/hooks';
|
import { convertApi2FormUrl } from '@/utils';
|
import { useQuery } from '@tanstack/vue-query';
|
import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
|
import { EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm } from '@/constants';
|
import _ from 'lodash';
|
|
defineOptions({
|
name: 'CustomerRechargeDialog',
|
});
|
|
const visible = defineModel({ type: Boolean });
|
|
type Form = {
|
title?: string;
|
id: string;
|
cooperationId: string;
|
transactionStatus: EnumEnterpriseCooperationWalletTransactionStatus;
|
remark: string;
|
isDetail: boolean;
|
};
|
|
const form = defineModel<Form>('form');
|
|
const title = computed(() => (form.value.isDetail ? '充值记录' : '确认充值'));
|
|
const transactionStatusText = computed(() =>
|
form.value.isDetail
|
? EnumEnterpriseCooperationWalletTransactionStatusText
|
: EnumEnterpriseCooperationWalletTransactionStatusTextForConfirm
|
);
|
|
const emit = defineEmits<{
|
(e: 'onConfirm'): void;
|
(e: 'onCancel'): void;
|
}>();
|
|
watch(
|
() => visible.value,
|
(val) => {
|
if (val) {
|
refetch();
|
}
|
}
|
);
|
|
const { data: detail, refetch } = useQuery({
|
queryKey: [
|
'enterpriseCooperationWalletServices/getCooperationWalletRechargeTransaction',
|
form.value.id,
|
],
|
queryFn: async () => {
|
return await enterpriseCooperationWalletServices.getCooperationWalletRechargeTransaction({
|
id: form.value.id,
|
});
|
},
|
placeholderData: () => ({} as API.GetCooperationWalletRechargeTransactionQueryResult),
|
onSuccess(data) {
|
form.value.cooperationId = data.cooperationId ?? '';
|
if (form.value.isDetail) {
|
form.value.transactionStatus = data.transactionStatus;
|
form.value.remark = data.remark ?? '';
|
}
|
},
|
enabled: computed(() => !!form.value.id),
|
});
|
|
const { portraitTableWithAttachmentProps } = usePortraitTableWithAttachment({
|
data: detail,
|
annexList: computed(() =>
|
detail.value?.files ? detail.value?.files.map((item) => convertApi2FormUrl(item)) : []
|
),
|
columns: [
|
{
|
label: '充值单位',
|
key: 'receiveUnit',
|
},
|
{
|
label: '开户账号',
|
key: 'receiveAccount',
|
},
|
{
|
label: '充值金额',
|
key: 'amount',
|
type: 'money',
|
},
|
{
|
label: '充值时间',
|
key: 'createdTime',
|
type: 'date',
|
},
|
],
|
});
|
const dialogForm = ref<FormInstance>();
|
|
function onDialogClose() {
|
if (!dialogForm.value) return;
|
dialogForm.value.resetFields();
|
}
|
|
const handleConfirm = _.debounce(
|
() => {
|
if (!dialogForm.value) return;
|
dialogForm.value.validate((valid) => {
|
if (valid) {
|
emit('onConfirm');
|
} else {
|
return;
|
}
|
});
|
},
|
1000,
|
{
|
leading: true,
|
trailing: false,
|
}
|
);
|
</script>
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
</style>
|