154 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
MyBetaModalFormProps,
MyButtons,
MyFormItems,
MyModalFormProps,
rulesHelper,
} from '@/common';
import { Apis } from '@/gen/Apis';
import { BillsStatusEnum, HouseOrdersPaymentMethodEnum } from '@/gen/Enums';
import { BetaSchemaForm } from '@ant-design/pro-components';
import { Form, message } from 'antd';
import * as React from 'react';
export interface PayCreateProps extends MyBetaModalFormProps {
// 单个账单收款,不需要选择多个账单
}
export default function PayCreate(props: PayCreateProps): React.ReactElement {
const [form] = Form.useForm();
return (
<BetaSchemaForm<ApiTypes.Bill.Bills.OfflinePayment>
{...MyModalFormProps.props}
title="录入收款信息"
trigger={
<MyButtons.Default
type="primary"
size="small"
title="线下收款"
disabled={
props?.item?.status === BillsStatusEnum.Paid.value ||
props?.item?.status === BillsStatusEnum.Cancelled.value ||
props?.item?.status === BillsStatusEnum.UnderApproval.value ||
props?.item?.status === BillsStatusEnum.ToBeConfirmed.value
}
/>
}
labelAlign="left"
width="800px"
form={form}
key={new Date().getTime()}
onOpenChange={(open: boolean): void => {
if (open) {
form.resetFields(); // 清空表单数据
form.setFieldsValue({
item: props.item,
});
}
}}
onFinish={async (values: any) =>
Apis.Bill.Bills.OfflinePayment({
...values,
total_paid_amount: parseFloat(props?.item?.payable_amount || 0),
id: props.item?.id || '',
})
.then(() => {
props.reload?.();
message.success('手动添加账单成功');
return true;
})
.catch(() => false)
}
columns={[
{
valueType: 'divider',
fieldProps: {
orientation: 'left',
children: '账单信息',
},
},
{
colProps: { span: 24 },
renderFormItem: () => (
<div
style={{
padding: '12px',
backgroundColor: '#f5f5f5',
borderRadius: '6px',
}}
>
<p>ID{props.item?.id || '-'}</p>
<p>
{props.item?.asset_project?.name || '-'}
</p>
<p>
¥ {parseFloat(props?.item?.payable_amount || 0)}
</p>
<p>{props.item?.remark || '-'}</p>
</div>
),
},
MyFormItems.EnumRadio({
key: 'payment_method',
title: '收款方式',
colProps: { span: 12 },
valueEnum: () => {
const obj: Record<string, any> = JSON.parse(
JSON.stringify(HouseOrdersPaymentMethodEnum),
);
delete obj.WeChat;
delete obj.Alipay;
delete obj.TongLian;
delete obj.Prepayment;
delete obj.CCB;
return obj;
},
required: true,
}),
// {
// key: 'total_paid_amount',
// title: '收款金额',
// valueType: 'digit',
// colProps: { span: 6 },
// fieldProps: {
// style: { width: '100%' },
// addonAfter: '元',
// disabled: true,
// },
// formItemProps: { ...rulesHelper.number },
// },
{
key: 'paid_time',
title: '收款日期',
valueType: 'date',
formItemProps: { ...rulesHelper.text },
colProps: { span: 8 },
},
{
title: '收款备注',
dataIndex: 'remark',
colProps: { span: 24 },
},
MyFormItems.UploadImages({
key: 'pay_certificate',
title: '收款凭证图片',
uploadType: 'file',
colProps: { span: 24 },
max: 10,
}),
{
colProps: { span: 24 },
renderFormItem: () => (
<span style={{ color: '#5b5b5bff' }}>
</span>
),
},
]}
/>
);
}