243 lines
7.6 KiB
TypeScript
Raw Normal View History

2025-06-30 14:20:46 +08:00
import {
MyBetaModalFormProps,
MyButtons,
MyColumns,
MyProTableProps,
} from '@/common';
2025-06-29 18:42:50 +08:00
import { Apis } from '@/gen/Apis';
import {
AssetHousesOwnershipTypeEnum,
AssetHousesStatusEnum,
AssetHousesUsageEnum,
} from '@/gen/Enums';
import { ProCard, ProTable } from '@ant-design/pro-components';
import { Space } from 'antd';
import { useRef, useState } from 'react';
import BuildingsCreate from '../modals/AssetBuildingsCreate';
2025-06-30 14:20:46 +08:00
import AssetBuildingsUpdate from '../modals/AssetBuildingsUpdate';
2025-06-29 18:42:50 +08:00
import AssetHousesCreate from '../modals/AssetHousesCreate';
2025-06-30 14:20:46 +08:00
import AssetHousesShow from '../modals/AssetHousesShow';
import AssetHousesUpdate from '../modals/AssetHousesUpdate';
2025-06-29 18:42:50 +08:00
import AssetUnitsCreate from '../modals/AssetUnitsCreate';
2025-06-30 14:20:46 +08:00
import AssetUnitsUpdate from '../modals/AssetUnitsUpdate';
2025-06-29 18:42:50 +08:00
export default function AssetBuildings(props: MyBetaModalFormProps) {
const actionBuildingsRef: any = useRef();
const actionUnitsRef: any = useRef();
const actionHousesRef: any = useRef();
const [selectKey, setSelectkey] = useState<any>({});
const [selectKeyUnits, setSelectKeyUnits] = useState<any>({});
return (
<ProCard
2025-06-30 14:20:46 +08:00
title={
2025-06-29 18:42:50 +08:00
<Space>
<BuildingsCreate
key="BuildingsCreate"
item={props?.item}
reload={() => actionBuildingsRef?.current?.reload()}
title="楼栋"
/>
<AssetUnitsCreate
key="UnitsCreate"
item={{
...props?.item,
2025-06-30 14:20:46 +08:00
// asset_buildings_id: selectKey?.id || undefined,
2025-06-29 18:42:50 +08:00
}}
reload={() => actionUnitsRef?.current?.reload()}
title="单元"
/>
<AssetHousesCreate
key="HousesCreate"
item={{
...props?.item,
2025-06-30 14:20:46 +08:00
// asset_buildings_id: selectKey?.id || undefined,
// asset_units_id: selectKeyUnits?.id || undefined,
2025-06-29 18:42:50 +08:00
}}
reload={() => actionHousesRef?.current?.reload()}
2025-06-30 14:20:46 +08:00
title="房屋"
2025-06-29 18:42:50 +08:00
/>
</Space>
}
>
<Space align="start" size="large">
<ProTable
{...MyProTableProps.props}
search={false}
actionRef={actionBuildingsRef}
rowClassName={(record: any) => {
console.log(selectKey?.id, 'key', record?.id);
return selectKey?.id === record?.id ? 'ant-table-row-selected' : '';
}}
onRow={(record: any) => {
return {
onClick: () => {
setSelectkey(record);
setSelectKeyUnits({});
actionUnitsRef?.current?.reload();
actionHousesRef?.current?.reload();
},
style: {
cursor: 'pointer',
},
};
}}
request={async (params, sort) =>
MyProTableProps.request(
{ ...params, asset_projects_id: props?.item?.id },
sort,
Apis.Asset.AssetBuildings.List,
)
}
options={false}
columns={[
MyColumns.ID(),
{
2025-06-30 14:20:46 +08:00
title: '楼栋名称',
2025-06-29 18:42:50 +08:00
dataIndex: 'name',
},
2025-06-30 14:20:46 +08:00
MyColumns.Option({
render: (_, item: any, index, action) => (
<Space key={index}>
<AssetBuildingsUpdate item={item} reload={action?.reload} />
<MyButtons.Delete
size="small"
onConfirm={() =>
Apis.Asset.AssetBuildings.Delete({ id: item.id }).then(
() => action?.reload(),
)
}
/>
</Space>
),
}),
2025-06-29 18:42:50 +08:00
]}
/>
2025-06-30 14:20:46 +08:00
{selectKey?.id && (
<ProTable
{...MyProTableProps.props}
search={false}
actionRef={actionUnitsRef}
request={async (params, sort) =>
MyProTableProps.request(
{
...params,
asset_projects_id: props?.item?.id,
asset_buildings_id: selectKey?.id,
},
sort,
Apis.Asset.AssetUnits.List,
)
}
rowClassName={(record: any) => {
return selectKeyUnits?.id === record?.id
? 'ant-table-row-selected'
: '';
}}
onRow={(record: any) => {
return {
onClick: () => {
setSelectKeyUnits(record);
actionHousesRef?.current?.reload();
},
style: {
cursor: 'pointer',
},
};
}}
options={false}
columns={[
MyColumns.ID(),
2025-06-29 18:42:50 +08:00
{
2025-06-30 14:20:46 +08:00
title: '单元名称',
dataIndex: 'name',
2025-06-29 18:42:50 +08:00
},
2025-06-30 14:20:46 +08:00
MyColumns.Option({
render: (_, item: any, index, action) => (
<Space key={index}>
<AssetUnitsUpdate item={item} reload={action?.reload} />
<MyButtons.Delete
size="small"
onConfirm={() =>
Apis.Asset.AssetUnits.Delete({ id: item.id }).then(() =>
action?.reload(),
)
}
/>
</Space>
),
}),
]}
/>
)}
2025-06-29 18:42:50 +08:00
2025-06-30 14:20:46 +08:00
{selectKeyUnits?.id && (
<ProTable
{...MyProTableProps.props}
search={false}
actionRef={actionHousesRef}
request={async (params, sort) =>
MyProTableProps.request(
{
...params,
asset_projects_id: props?.item?.id,
asset_buildings_id: selectKey?.id,
asset_units_id: selectKeyUnits?.id,
},
sort,
Apis.Asset.AssetHouses.List,
)
}
options={false}
columns={[
MyColumns.ID(),
MyColumns.EnumTag({
title: '用途',
dataIndex: 'usage',
valueEnum: AssetHousesUsageEnum,
}),
2025-06-29 18:42:50 +08:00
{
2025-06-30 14:20:46 +08:00
title: '房号',
dataIndex: 'name',
2025-06-29 18:42:50 +08:00
},
2025-06-30 14:20:46 +08:00
{
title: '楼层',
dataIndex: 'floor',
render(_, record) {
return `${record?.floor}`;
},
},
MyColumns.EnumTag({
title: '产权性质',
dataIndex: 'ownership_type',
valueEnum: AssetHousesOwnershipTypeEnum,
}),
MyColumns.EnumTag({
title: '房屋状态',
dataIndex: 'status',
valueEnum: AssetHousesStatusEnum,
}),
MyColumns.Option({
render: (_, item: any, index, action) => (
<Space key={index}>
<AssetHousesShow item={item} reload={action?.reload} />
<AssetHousesUpdate item={item} reload={action?.reload} />
<MyButtons.Delete
onConfirm={() =>
Apis.Asset.AssetBuildings.Delete({ id: item.id }).then(
() => action?.reload(),
)
}
/>
</Space>
),
}),
]}
/>
)}
2025-06-29 18:42:50 +08:00
</Space>
</ProCard>
);
}