235 lines
6.9 KiB
TypeScript
Raw Normal View History

2026-01-08 16:35:06 +08:00
import {
MyButtons,
MyColumns,
MyImportModal,
MyPageContainer,
MyProTableProps,
MyTableActions,
MyToolBarActions,
2026-01-08 16:35:06 +08:00
} from '@/common';
import { MyExport } from '@/components/MyExport';
import { Selects } from '@/components/Select';
import { Apis } from '@/gen/Apis';
import {
HouseBillsBillStatusEnum,
HouseOrdersAuditStatusEnum,
HouseOrdersPaymentMethodEnum,
} from '@/gen/Enums';
import { useNavigate } from '@@/exports';
2026-01-08 16:35:06 +08:00
import { ProTable } from '@ant-design/pro-components';
import { useState } from 'react';
import Audit from './modals/Audit';
import SerialNumber from './modals/SerialNumber';
import Show from './modals/Show';
2026-01-19 18:43:11 +08:00
export default function Index({ title = '线下收款单' }) {
2026-01-08 16:35:06 +08:00
const [getParams, setParams] = useState({});
const navigate = useNavigate();
2026-01-08 16:35:06 +08:00
return (
<MyPageContainer
title={title}
enableTabs={true}
tabKey="houseorders"
tabLabel={title}
>
<ProTable
{...MyProTableProps.props}
headerTitle="线下收款单"
2026-01-08 16:35:06 +08:00
request={async (params, sort) => {
setParams(params);
return MyProTableProps.request(
{
...params,
payment_methods: [
HouseOrdersPaymentMethodEnum.BankTransfer.value,
HouseOrdersPaymentMethodEnum.Prepayment.value,
HouseOrdersPaymentMethodEnum.POS.value,
HouseOrdersPaymentMethodEnum.Cash.value,
],
},
2026-01-08 16:35:06 +08:00
sort,
Apis.HouseOrder.HouseOrders.List,
);
}}
toolBarRender={(action: any) => [
<MyToolBarActions
key="toolbar"
actions={{
import: (
<MyImportModal
key="import"
title="导入流水"
type="default"
size="middle"
templateApi={
Apis.HouseOrder.HouseOrders.DownloadSerialNumberTemplate
}
importApi={Apis.HouseOrder.HouseOrders.ImportSerialNumber}
reload={action?.reload}
/>
),
export: (
<MyExport
key="export"
item={getParams}
download={Apis.HouseOrder.HouseOrders}
/>
),
}}
/>,
]}
2026-01-08 16:35:06 +08:00
columns={[
// MyColumns.ID({ search: false }),
{
title: '收款单ID',
dataIndex: 'id',
search: false,
},
MyColumns.Boolean({
dataIndex: 'is_serial_number',
title: '关联流水',
hidden: true,
}),
MyColumns.EnumTag({
title: '审核状态',
dataIndex: 'audit_status',
valueEnum: HouseOrdersAuditStatusEnum,
}),
Selects?.AssetProjects({
title: '选择项目',
key: 'asset_projects_id',
hidden: true,
}),
{
title: '项目名称',
dataIndex: ['asset_project', 'name'],
search: false,
},
{
title: '房屋',
dataIndex: ['asset_house', 'full_name'],
render: (_, record) =>
record.house_order_items?.[0]?.asset_house?.full_name || '-',
search: {
transform: (value) => {
return { full_name: value };
},
},
},
MyColumns.EnumTag({
title: '收款方式',
dataIndex: 'payment_method',
valueEnum: HouseOrdersPaymentMethodEnum,
}),
MyColumns.EnumTag({
title: '支付状态',
dataIndex: 'order_status',
valueEnum: HouseBillsBillStatusEnum,
search: false,
}),
{
title: '收款金额',
dataIndex: 'actual_paid_amount',
search: false,
},
{
title: '收款时间',
dataIndex: 'paid_time',
render: (_, record) => {
return record?.paid_time?.substring(0, 10);
},
search: false,
},
{
title: '收款账户',
dataIndex: 'accept_name',
// search: false,
},
{
title: '收款银行',
dataIndex: 'accept_bank',
// search: false,
},
{
title: '收款账号',
dataIndex: 'accept_account',
// search: false,
},
{
title: '银行流水',
dataIndex: 'accept_serial_number',
// search: false,
},
{
title: '系统关联编号',
dataIndex: 'payment_no',
search: false,
},
// {
// title: '录入人',
// dataIndex: 'creator',
// search: false,
// },
MyColumns.CreatedAt(),
MyColumns.Option({
render: (_, item: any, _index, action) => (
<MyTableActions
actions={{
show: (
<Show item={item} reload={action?.reload} title="查看" />
),
serialNumber: (
<SerialNumber
item={item}
reload={action?.reload}
title="关联流水"
/>
),
transferBills: (
<MyButtons.Default
title="调账"
type="primary"
size="small"
disabled={
item.order_status !==
HouseBillsBillStatusEnum.Paid.value
}
onClick={() => {
navigate(
`/bills/order_online/pages/transfer_bills?id=${item.id}`,
);
}}
/>
),
audit: (
<>
{item.audit_status ===
HouseOrdersAuditStatusEnum.Pending.value && (
<Audit
item={item}
reload={action?.reload}
title="审核"
/>
)}
</>
),
delete: (
<MyButtons.Delete
onConfirm={() =>
Apis.HouseOrder.HouseOrders.Delete({
id: item.id,
}).then(() => action?.reload())
}
/>
),
}}
/>
2026-01-08 16:35:06 +08:00
),
}),
]}
/>
</MyPageContainer>
);
}