155 lines
5.2 KiB
TypeScript
Raw Normal View History

2025-06-30 18:42:21 +08:00
import {
MyBetaModalFormProps,
MyButtons,
MyModalFormProps,
rulesHelper,
} from '@/common';
import { Selects } from '@/components/Select';
import { Apis } from '@/gen/Apis';
import { BetaSchemaForm, ProCard } from '@ant-design/pro-components';
import { Form, message } from 'antd';
export default function Create(props: MyBetaModalFormProps) {
const [form] = Form.useForm();
console.log(props?.item, 'item');
return (
<BetaSchemaForm<ApiTypes.Grid.Grids.Store>
{...MyModalFormProps.props}
2025-09-08 17:22:58 +08:00
title={`划分范围`}
// 基本表单
2025-06-30 18:42:21 +08:00
width="700px"
2025-09-08 17:22:58 +08:00
layout="horizontal"
labelCol={{ span: 4 }}
wrapperCol={{ span: 24 }}
labelAlign="right"
trigger={<MyButtons.Create title={`划分范围`} />}
2025-06-30 18:42:21 +08:00
form={form}
key={new Date().getTime()}
2025-06-30 18:42:21 +08:00
onOpenChange={(open: any) => {
if (open) {
form.resetFields(); // 清空表单数据
}
}}
onFinish={async (values: any) => {
2025-07-02 16:43:04 +08:00
values?.grid_ranges?.forEach((res: { asset_projects_id: string }) => {
2025-06-30 18:42:21 +08:00
res.asset_projects_id = props?.item?.id;
});
2025-07-01 10:40:00 +08:00
return Apis.Grid.Grids.Store({
2025-06-30 18:42:21 +08:00
...values,
asset_projects_id: props?.item?.id,
})
.then(() => {
props.reload?.();
2025-09-08 17:22:58 +08:00
message.success('范围划分成功');
2025-06-30 18:42:21 +08:00
return true;
})
.catch(() => false);
}}
columns={[
Selects?.GetGridMark({
key: 'grid_mark',
2025-09-08 17:22:58 +08:00
title: '范围标识',
2025-06-30 18:42:21 +08:00
params: {
asset_projects_id: props?.item?.id,
},
colProps: { span: 24 },
formItemProps: { ...rulesHelper.text },
}),
{
valueType: 'formList',
dataIndex: 'grid_ranges',
colProps: { span: 24 },
initialValue: [''],
formItemProps: { ...rulesHelper.array },
fieldProps: {
copyIconProps: false,
creatorButtonProps: {
creatorButtonText: '添加楼栋单元',
},
itemRender: (
{ listDom, action }: any,
{ index }: { index: number },
) => {
return (
<ProCard
bordered
2025-09-08 17:22:58 +08:00
style={{ marginBlockEnd: 5 }}
title={`选择范围${index + 1}`}
2025-06-30 18:42:21 +08:00
extra={action}
bodyStyle={{ paddingBlockEnd: 0 }}
>
{listDom}
</ProCard>
);
},
},
columns: [
{
valueType: 'dependency',
name: ['asset_buildings_id', 'asset_units_id'],
columns: ({ asset_buildings_id }) => {
return [
{
valueType: 'group',
columns: [
Selects?.AssetBuildings({
key: 'asset_buildings_id',
title: '选择楼栋',
params: {
asset_projects_id: props?.item?.id,
},
colProps: { span: 12 },
formItemProps: { ...rulesHelper.number },
fieldProps: {
showSearch: true,
2025-09-08 17:22:58 +08:00
onChange: (value: any) => {
// 获取当前表单的所有值
const formValues = form.getFieldsValue();
const gridRanges = formValues.grid_ranges || [];
// 清空所有行的asset_units_id因为楼栋变化会影响所有单元选择
const updatedGridRanges = gridRanges.map(
(item: any, index: number) => {
if (item.asset_buildings_id === value) {
return { ...item, asset_units_id: undefined };
}
return item;
},
);
// 更新表单值
2025-06-30 18:42:21 +08:00
form.setFieldsValue({
2025-09-08 17:22:58 +08:00
grid_ranges: updatedGridRanges,
2025-06-30 18:42:21 +08:00
});
},
},
}),
2025-09-08 17:22:58 +08:00
...(asset_buildings_id
? [
Selects?.GridUnits({
key: 'asset_units_id',
title: '选择单元',
params: {
asset_projects_id: props?.item?.id,
asset_buildings_id: asset_buildings_id,
},
colProps: { span: 12 },
formItemProps: { ...rulesHelper.text },
fieldProps: {
showSearch: true,
},
}),
]
: []),
2025-06-30 18:42:21 +08:00
],
},
];
},
},
],
},
]}
/>
);
}