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>
|
|
|
|
|
);
|
|
|
|
|
}
|