185 lines
6.0 KiB
TypeScript
Raw Normal View History

2026-01-08 16:35:06 +08:00
import {
MyButtons,
MyColumns,
MyPageContainer,
MyProTableProps,
} from '@/common';
import { Apis } from '@/gen/Apis';
import { ProTable } from '@ant-design/pro-components';
import { useNavigate } from '@umijs/max';
import { Space, Tooltip } from 'antd';
import Audit from './modals/Audit';
export default function Index({ title = '物品放行' }) {
const navigate = useNavigate();
return (
<MyPageContainer
title={title}
enableTabs={true}
tabKey="goods_releases_list"
tabLabel={title}
>
<ProTable
{...MyProTableProps.props}
request={async (params, sort) =>
MyProTableProps.request(
params,
sort,
Apis.GoodsReleases.GoodsReleases.List,
)
}
headerTitle={`${title}列表`}
toolBarRender={() => [
<MyButtons.Create
key="Create"
size="middle"
type="primary"
onClick={() => {
navigate('/goods_releases/list/pages/create');
}}
title="物品放行申请"
/>,
]}
columns={[
MyColumns.ID({
search: false,
}),
MyColumns.EnumTag({
title: '申请状态',
dataIndex: 'status',
2026-01-18 20:05:19 +08:00
// valueEnum: GoodsReleasesAuditStatusEnum,
2026-01-08 16:35:06 +08:00
}),
{
title: '房屋',
dataIndex: ['asset_house', 'full_name'],
search: false,
},
{
title: '申请人',
dataIndex: 'apply_name',
search: false,
},
{
title: '通行日期',
dataIndex: 'passed_time',
search: false,
},
MyColumns.EnumTag({
title: '通行类型',
dataIndex: 'passed_type',
2026-01-18 20:05:19 +08:00
// valueEnum: GoodsReleasesPassedTypeEnum,
2026-01-08 16:35:06 +08:00
}),
{
title: '物品清单',
render(_, record) {
// 确保content始终是数组类型
const content = Array.isArray(record?.goods) ? record.goods : [];
// 过滤有效数据
const validItems = content.filter(
(item: any) => item?.name && item?.number,
);
// 表格中显示的简化内容最多显示2项
const displayItems = validItems.slice(0, 1);
return (
<Tooltip
title={
<div
style={{
maxWidth: 400,
// maxHeight: 200,
overflow: 'auto',
}}
>
{validItems.length > 0 ? (
validItems.map((item: any, index: number) => (
<div key={index} style={{ marginBottom: 8 }}>
<div style={{ marginBottom: 4, lineHeight: '1.4' }}>
<strong>:</strong> {item.name || '-'}
</div>
<div
style={{
marginBottom: 4,
paddingLeft: 12,
lineHeight: '1.4',
}}
>
<strong>:</strong> {item.number || '-'}
</div>
<div
style={{
marginBottom: 4,
paddingLeft: 12,
lineHeight: '1.4',
}}
>
<strong>:</strong> {item.remark || '-'}
</div>
</div>
))
) : (
<div></div>
)}
</div>
}
placement="topLeft"
>
<div style={{ cursor: 'pointer' }}>
{validItems.length > 0 ? (
<>
{displayItems.map((item: any, index: number) => (
<div key={index} style={{ lineHeight: '1.4' }}>
{item.name} : {item.number}
</div>
))}
{validItems.length > 1 && (
<div
style={{
color: '#1890ff',
fontSize: '12px',
marginTop: 2,
}}
>
+{validItems.length - 1}
</div>
)}
</>
) : (
<span>-</span>
)}
</div>
</Tooltip>
);
},
search: false,
},
MyColumns.CreatedAt(),
MyColumns.Option({
render: (_, item: any, index, action) => (
<Space key={index}>
2026-01-18 20:05:19 +08:00
{/* {item?.status ===
2026-01-08 16:35:06 +08:00
GoodsReleasesAuditStatusEnum.Pending.value && (
<Audit item={item} reload={action?.reload} title={title} />
2026-01-18 20:05:19 +08:00
)} */}
<Audit item={item} reload={action?.reload} title={title} />
2026-01-08 16:35:06 +08:00
<MyButtons.Default
key="Create"
size="small"
type="primary"
disabled={item.status !== 'Pending'}
onClick={() => {
navigate(`/goods_releases/list/pages/review?id=${item.id}`);
}}
title="查看并审核"
/>
</Space>
),
}),
]}
/>
</MyPageContainer>
);
}