Merge branch 'develop' of ssh://code.juyouwu.cn:2222/pay/pay-admin into develop

This commit is contained in:
uiuJun 2025-09-19 11:32:42 +08:00
commit 24e19ac9db
3 changed files with 105 additions and 138 deletions

View File

@ -2,6 +2,7 @@ import { Apis } from '@/gen/Apis';
import { Transfer } from 'antd'; import { Transfer } from 'antd';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
const MyTransferUnits = (props: any) => { const MyTransferUnits = (props: any) => {
const [getLoading, setLoading] = useState(false);
const [dataSource, setTransferData] = useState<any[]>([]); const [dataSource, setTransferData] = useState<any[]>([]);
const [targetKeys, setTargetKeys] = useState<string[]>([]); const [targetKeys, setTargetKeys] = useState<string[]>([]);
useEffect(() => { useEffect(() => {
@ -10,6 +11,7 @@ const MyTransferUnits = (props: any) => {
asset_projects_id: props?.item?.asset_projects_id, asset_projects_id: props?.item?.asset_projects_id,
}) })
.then((res) => { .then((res) => {
setLoading(true);
const data = const data =
res.data?.map((item: any) => ({ res.data?.map((item: any) => ({
key: item.value?.toString(), key: item.value?.toString(),
@ -23,50 +25,86 @@ const MyTransferUnits = (props: any) => {
}); });
} }
}, [props?.item?.asset_projects_id]); }, [props?.item?.asset_projects_id]);
return (
<Transfer useEffect(() => {
dataSource={dataSource} console.log(props.value, 'props.value');
targetKeys={targetKeys} if (props.value?.length && !props.value[0]?.asset_units_id) {
onChange={(targetKeys) => { let dataIds: any = [];
let dataIds: any = []; props.value?.forEach((res: any) => {
targetKeys?.forEach((res: any) => { dataIds?.push(res?.toString());
dataSource?.forEach((k: any) => { });
if (res === k.key) { setTargetKeys(dataIds);
dataIds?.push({ }
asset_projects_id: props?.item?.asset_projects_id, }, [props.value]);
asset_buildings_id: k?.asset_buildings_id,
asset_units_id: k?.key, useEffect(() => {
}); if (dataSource?.length && props?.value?.length) {
} let dataIds: any = [];
}); props.value?.forEach((res: any) => {
dataSource?.forEach((k: any) => {
if (res?.toString() === k.key) {
dataIds?.push({
asset_projects_id: props?.item?.asset_projects_id,
asset_buildings_id: k?.asset_buildings_id,
asset_units_id: k?.key,
});
}
}); });
setTargetKeys(targetKeys as string[]); });
props?.onChange?.(dataIds); console.log(dataIds, '22');
}} console.log(props.value, 'props.value');
render={(item) => item.title} console.log(dataSource, 'dataSource');
titles={['可选单元', '已选单元']} props?.onChange?.(dataIds);
showSearch }
listStyle={{ }, [getLoading]);
width: 250,
height: 300, return (
}} getLoading && (
operations={['选择', '移除']} <Transfer
operationStyle={{ marginTop: 20 }} dataSource={dataSource}
locale={{ targetKeys={targetKeys}
itemUnit: '项', onChange={(targetKeys) => {
itemsUnit: '项', let dataIds: any = [];
searchPlaceholder: '请输入搜索内容', console.log(targetKeys, 'targetKeys', props.value);
notFoundContent: '列表为空', targetKeys?.forEach((res: any) => {
}} dataSource?.forEach((k: any) => {
onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => { if (res === k.key) {
console.log( dataIds?.push({
sourceSelectedKeys, asset_projects_id: props?.item?.asset_projects_id,
targetSelectedKeys, asset_buildings_id: k?.asset_buildings_id,
'sourceSelectedKeys', asset_units_id: k?.key,
); });
// 处理选择变化,但不触发表单提交 }
}} });
/> });
setTargetKeys(targetKeys as string[]);
props?.onChange?.(dataIds);
}}
render={(item) => item.title}
titles={['可选单元', '已选单元']}
showSearch
listStyle={{
width: 250,
height: 300,
}}
operations={['选择', '移除']}
operationStyle={{ marginTop: 20 }}
locale={{
itemUnit: '项',
itemsUnit: '项',
searchPlaceholder: '请输入搜索内容',
notFoundContent: '列表为空',
}}
onSelectChange={(sourceSelectedKeys, targetSelectedKeys) => {
console.log(
sourceSelectedKeys,
targetSelectedKeys,
'sourceSelectedKeys',
);
// 处理选择变化,但不触发表单提交
}}
/>
)
); );
}; };

View File

@ -76,7 +76,7 @@ export default function Create(props: MyBetaModalFormProps) {
formItemProps: { ...rulesHelper.text }, formItemProps: { ...rulesHelper.text },
}), }),
{ {
dataIndex: 'grid_ranges', key: 'grid_ranges',
title: '选择单元', title: '选择单元',
colProps: { span: 24 }, colProps: { span: 24 },
formItemProps: { ...rulesHelper.array }, formItemProps: { ...rulesHelper.array },

View File

@ -5,13 +5,13 @@ import {
rulesHelper, rulesHelper,
} from '@/common'; } from '@/common';
import { Selects } from '@/components/Select'; import { Selects } from '@/components/Select';
import MyTransferUnits from '@/components/TransferUnits';
import { Apis } from '@/gen/Apis'; import { Apis } from '@/gen/Apis';
import { BetaSchemaForm, ProCard } from '@ant-design/pro-components'; import { BetaSchemaForm } from '@ant-design/pro-components';
import { Form, message } from 'antd'; import { Form, message } from 'antd';
export default function Update(props: MyBetaModalFormProps) { export default function Update(props: MyBetaModalFormProps) {
const [form] = Form.useForm(); const [form] = Form.useForm();
console.log(props.item, 'pppp');
return ( return (
<BetaSchemaForm<ApiTypes.Grid.Grids.Update> <BetaSchemaForm<ApiTypes.Grid.Grids.Update>
{...MyModalFormProps.props} {...MyModalFormProps.props}
@ -26,17 +26,25 @@ export default function Update(props: MyBetaModalFormProps) {
key={new Date().getTime()} key={new Date().getTime()}
onOpenChange={(open: any) => { onOpenChange={(open: any) => {
if (open) { if (open) {
let arr: any = [];
Apis.Grid.Grids.Show({ id: props?.item?.id }).then((res) => { Apis.Grid.Grids.Show({ id: props?.item?.id }).then((res) => {
form.setFieldsValue(res?.data); if (res?.data?.grid_ranges) {
res?.data?.grid_ranges?.forEach((k: any) => {
arr.push(k.asset_units_id);
});
}
form.setFieldsValue({ ...res?.data, grid_ranges: arr });
}); });
} }
}} }}
onFinish={async (values: any) => { onFinish={async (values: any) => {
values?.grid_ranges?.map((res: { asset_projects_id: string }) => { console.log(values);
res.asset_projects_id = props?.item?.id; // values?.grid_ranges?.map((res: { asset_projects_id: string }) => {
}); // res.asset_projects_id = props?.item?.id;
// });
return Apis.Grid.Grids.Update({ return Apis.Grid.Grids.Update({
...values, ...values,
asset_projects_id: props?.item?.id || values?.asset_projects_id,
id: props?.item?.id, id: props?.item?.id,
}) })
.then(() => { .then(() => {
@ -57,96 +65,17 @@ export default function Update(props: MyBetaModalFormProps) {
formItemProps: { ...rulesHelper.text }, formItemProps: { ...rulesHelper.text },
}), }),
{ {
valueType: 'formList', key: 'grid_ranges',
dataIndex: 'grid_ranges', title: '选择单元',
colProps: { span: 24 }, colProps: { span: 24 },
initialValue: [''],
formItemProps: { ...rulesHelper.array }, formItemProps: { ...rulesHelper.array },
fieldProps: { renderFormItem: () => (
copyIconProps: false, <MyTransferUnits
creatorButtonProps: { item={{
creatorButtonText: '添加楼栋单元', asset_projects_id: props?.item?.asset_projects_id,
}, }}
itemRender: ( />
{ listDom, action }: any, ),
{ index }: { index: number },
) => {
return (
<ProCard
bordered
style={{ marginBlockEnd: 5 }}
title={`选择范围${index + 1}`}
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,
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;
},
);
// 更新表单值
form.setFieldsValue({
grid_ranges: updatedGridRanges,
});
},
},
}),
...(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,
},
}),
]
: []),
],
},
];
},
},
],
}, },
]} ]}
/> />