2026-01-18 20:05:19 +08:00

185 lines
6.0 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 {
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',
// valueEnum: GoodsReleasesAuditStatusEnum,
}),
{
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',
// valueEnum: GoodsReleasesPassedTypeEnum,
}),
{
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}>
{/* {item?.status ===
GoodsReleasesAuditStatusEnum.Pending.value && (
<Audit item={item} reload={action?.reload} title={title} />
)} */}
<Audit item={item} reload={action?.reload} title={title} />
<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>
);
}