diff --git a/src/components/TransferUnits.tsx b/src/components/TransferUnits.tsx index 10bd90b..08b7ad7 100644 --- a/src/components/TransferUnits.tsx +++ b/src/components/TransferUnits.tsx @@ -2,6 +2,7 @@ import { Apis } from '@/gen/Apis'; import { Transfer } from 'antd'; import { useEffect, useState } from 'react'; const MyTransferUnits = (props: any) => { + const [getLoading, setLoading] = useState(false); const [dataSource, setTransferData] = useState([]); const [targetKeys, setTargetKeys] = useState([]); useEffect(() => { @@ -10,6 +11,7 @@ const MyTransferUnits = (props: any) => { asset_projects_id: props?.item?.asset_projects_id, }) .then((res) => { + setLoading(true); const data = res.data?.map((item: any) => ({ key: item.value?.toString(), @@ -23,50 +25,86 @@ const MyTransferUnits = (props: any) => { }); } }, [props?.item?.asset_projects_id]); - return ( - { - let dataIds: any = []; - targetKeys?.forEach((res: any) => { - dataSource?.forEach((k: any) => { - if (res === k.key) { - dataIds?.push({ - asset_projects_id: props?.item?.asset_projects_id, - asset_buildings_id: k?.asset_buildings_id, - asset_units_id: k?.key, - }); - } - }); + + useEffect(() => { + console.log(props.value, 'props.value'); + if (props.value?.length && !props.value[0]?.asset_units_id) { + let dataIds: any = []; + props.value?.forEach((res: any) => { + dataIds?.push(res?.toString()); + }); + setTargetKeys(dataIds); + } + }, [props.value]); + + 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); - }} - 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', - ); - // 处理选择变化,但不触发表单提交 - }} - /> + }); + console.log(dataIds, '22'); + console.log(props.value, 'props.value'); + console.log(dataSource, 'dataSource'); + props?.onChange?.(dataIds); + } + }, [getLoading]); + + return ( + getLoading && ( + { + let dataIds: any = []; + console.log(targetKeys, 'targetKeys', props.value); + targetKeys?.forEach((res: any) => { + dataSource?.forEach((k: any) => { + if (res === 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); + }} + 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', + ); + // 处理选择变化,但不触发表单提交 + }} + /> + ) ); }; diff --git a/src/pages/asset/grids/modals/GridCreate.tsx b/src/pages/asset/grids/modals/GridCreate.tsx index 509c8f0..01068b7 100644 --- a/src/pages/asset/grids/modals/GridCreate.tsx +++ b/src/pages/asset/grids/modals/GridCreate.tsx @@ -76,7 +76,7 @@ export default function Create(props: MyBetaModalFormProps) { formItemProps: { ...rulesHelper.text }, }), { - dataIndex: 'grid_ranges', + key: 'grid_ranges', title: '选择单元', colProps: { span: 24 }, formItemProps: { ...rulesHelper.array }, diff --git a/src/pages/asset/grids/modals/GridUpdate.tsx b/src/pages/asset/grids/modals/GridUpdate.tsx index c821621..2f51fb6 100644 --- a/src/pages/asset/grids/modals/GridUpdate.tsx +++ b/src/pages/asset/grids/modals/GridUpdate.tsx @@ -5,13 +5,13 @@ import { rulesHelper, } from '@/common'; import { Selects } from '@/components/Select'; +import MyTransferUnits from '@/components/TransferUnits'; 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'; export default function Update(props: MyBetaModalFormProps) { const [form] = Form.useForm(); - console.log(props.item, 'pppp'); return ( {...MyModalFormProps.props} @@ -26,17 +26,25 @@ export default function Update(props: MyBetaModalFormProps) { key={new Date().getTime()} onOpenChange={(open: any) => { if (open) { + let arr: any = []; 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) => { - values?.grid_ranges?.map((res: { asset_projects_id: string }) => { - res.asset_projects_id = props?.item?.id; - }); + console.log(values); + // values?.grid_ranges?.map((res: { asset_projects_id: string }) => { + // res.asset_projects_id = props?.item?.id; + // }); return Apis.Grid.Grids.Update({ ...values, + asset_projects_id: props?.item?.id || values?.asset_projects_id, id: props?.item?.id, }) .then(() => { @@ -57,96 +65,17 @@ export default function Update(props: MyBetaModalFormProps) { formItemProps: { ...rulesHelper.text }, }), { - valueType: 'formList', - dataIndex: 'grid_ranges', + key: 'grid_ranges', + title: '选择单元', colProps: { span: 24 }, - initialValue: [''], formItemProps: { ...rulesHelper.array }, - fieldProps: { - copyIconProps: false, - creatorButtonProps: { - creatorButtonText: '添加楼栋单元', - }, - itemRender: ( - { listDom, action }: any, - { index }: { index: number }, - ) => { - return ( - - {listDom} - - ); - }, - }, - 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, - }, - }), - ] - : []), - ], - }, - ]; - }, - }, - ], + renderFormItem: () => ( + + ), }, ]} />