175 lines
5.5 KiB
TypeScript
Raw Normal View History

import {
MyButtons,
MyColumns,
2026-04-27 10:37:21 +08:00
MyPageContainer,
MyProTableProps,
MyTableActions,
MyToolBarActions,
} from '@/common';
2026-04-14 21:36:19 +08:00
import { Apis } from '@/gen/Apis';
import { ContractArchiveBorrowStatusEnum } from '@/gen/Enums';
import EmployeeShow from '@/pages/company/employees/modals/EmployeeShow';
import CodeInfo from '@/pages/contract/contract_archives/modals/Show';
2026-04-14 21:36:19 +08:00
import { ProTable } from '@ant-design/pro-components';
import Create from './modals/Create';
import Show from './modals/Show';
import Update from './modals/Update';
import Read from './read/modals/Read';
2026-04-14 21:36:19 +08:00
2026-04-27 10:37:21 +08:00
export default function Index({ title = '合同档案借用' }) {
2026-04-14 21:36:19 +08:00
return (
2026-04-27 10:37:21 +08:00
<MyPageContainer
title={title}
enableTabs={true}
tabKey="contract_borrows"
tabLabel={title}
>
<ProTable
{...MyProTableProps.props}
request={async (params, sort) =>
MyProTableProps.request(
params,
sort,
Apis.Contract.ContractArchiveBorrows.List,
)
}
headerTitle="合同借用列表"
toolBarRender={(action) => [
<MyToolBarActions
key="toolbar"
actions={{
add: (
<Create key="Create" reload={action?.reload} title={title} />
),
read: (
<Read key="Read" reload={action?.reload} title="合同借阅" />
),
}}
/>,
]}
columns={[
MyColumns.ID({
search: false,
}),
MyColumns.EnumTag({
title: '借用状态',
dataIndex: 'borrow_status',
valueEnum: ContractArchiveBorrowStatusEnum,
}),
// MyColumns.EnumTag({
// title: '归还状态',
// dataIndex: 'return_status',
// valueEnum: ContractArchiveFileReturnStatusEnum,
// }),
{
title: '档案编号',
dataIndex: ['contract_archive', 'code'],
render: (_, item: any) => (
<CodeInfo
item={{ ...item, type: 'link', id: item?.contract_archives_id }}
title={item?.contract_archive?.code}
/>
),
},
{
title: '借用信息',
search: false,
render: (_, item: any) => {
if (!item?.contract_archive_borrow_files) {
return '-';
}
return (
<div>
{item.contract_archive_borrow_files.map(
(res: any, index: number) => (
<div key={index} style={{ marginBottom: 4 }}>
: {res?.contract_archive_file?.name}:
{res?.contract_archive_file?.borrow_number}:
{res?.contract_archive_file?.lost_number}:
{
res?.contract_archive_file?.contract_archive_file
?.lost_number
}
: {res?.contract_archive_file?.damaged_number}
</div>
),
)}
</div>
);
},
},
{
title: '借用人',
dataIndex: 'borrower_name',
search: false,
render: (_, item: any) => (
<EmployeeShow
item={{ ...item, type: 'link', id: item?.borrower_id }}
title={item?.borrower_name}
/>
),
2026-04-14 21:36:19 +08:00
},
2026-04-27 10:37:21 +08:00
{
title: '借用日期',
dataIndex: 'borrow_date',
search: false,
},
{
title: '应归还日期',
dataIndex: 'expected_return_date',
search: false,
},
MyColumns.Boolean({
title: '需要归还',
dataIndex: 'is_need_return',
search: false,
}),
{
title: '登记人',
dataIndex: ['registrar', 'name'],
search: false,
render: (_, item: any) => (
<EmployeeShow
item={{ ...item, type: 'link', id: item?.operator_id }}
title={item?.operator_name}
/>
),
},
// MyColumns.CreatedAt(),
MyColumns.UpdatedAt(),
MyColumns.Option({
width: 100,
render: (_, item: any, _index, action) => (
<MyTableActions
actions={{
show: (
<Show item={item} reload={action?.reload} title={title} />
),
record: (
<MyButtons.Default
title="登记"
type="primary"
disabled={item?.borrow_status !== 'Approved'}
isConfirm={true}
description={`是否确认借用人已领取?`}
onConfirm={() =>
Apis.Contract.ContractArchiveBorrows.Borrow({
id: item.id,
}).then(() => action?.reload())
}
/>
),
update: (
<Update item={item} reload={action?.reload} title={title} />
),
}}
/>
),
}),
]}
/>
</MyPageContainer>
2026-04-14 21:36:19 +08:00
);
}