From ded5c2c6594aa59e8fd3b2366806a841a4991c0b Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期五, 11 四月 2025 14:18:41 +0800
Subject: [PATCH] fix:动态字段默认值

---
 rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx |  133 +++++++++++++++++++++++++++++---------------
 1 files changed, 87 insertions(+), 46 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx
index d90d6ff..2d14bcd 100644
--- a/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx
@@ -19,9 +19,10 @@
     required,
     useRecordContext,
     DeleteButton,
+    useNotify,
 } from 'react-admin';
 import PropTypes from 'prop-types';
-import { useWatch, useFormContext } from "react-hook-form";
+import { useWatch, useFormContext, useForm, useFormState } from "react-hook-form";
 import { Stack, Grid, Box, Typography, Tabs, Tab, } from '@mui/material';
 import * as Common from '@/utils/common';
 import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
@@ -29,9 +30,10 @@
 import CustomerTopToolBar from "@/page/components/EditTopToolBar";
 import MemoInput from "@/page/components/MemoInput";
 import StatusSelectInput from "@/page/components/StatusSelectInput";
-
+import TreeSelectInput from "@/page/components/TreeSelectInput";
+import request from '@/utils/request';
 const FormToolbar = () => {
-    const { getValues } = useFormContext();
+    const { getValues } = useFormState();
     return (
         <Toolbar sx={{ justifyContent: 'space-between' }}>
             <SaveButton />
@@ -72,25 +74,34 @@
 const MatnrEdit = () => {
     const translate = useTranslate();
     const [value, setValue] = React.useState(0);
+
+    const notify = useNotify();
+    const [dynamicFields, setDynamicFields] = useState([]);
+
+    useEffect(() => {
+        getDynamicFields();
+    }, []);
+    const getDynamicFields = async () => {
+        const {
+            data: { code, data, msg },
+        } = await request.get("/fields/enable/list");
+        if (code === 200) {
+            setDynamicFields(data || [])
+
+
+        } else {
+            notify(msg);
+        }
+    };
     const handleChange = (event, newValue) => {
         setValue(newValue);
-    };
-    const validateForm = (values) => {
-        const errors = {};
-        if (!values.shipperId) {
-            errors.shipperId = translate('form.matnr.shipper');
-        }
-        if (!values.groupId) {
-            errors.groupId = translate('form.matnr.groupId');
-        }
-        return errors;
     };
     return (
         <Edit
             redirect="list"
             mutationMode={EDIT_MODE}
             actions={<CustomerTopToolBar />}
-            aside={<EditBaseAside />}
+            title={"menu.matnr"}
         >
             <SimpleForm
                 shouldUnregister
@@ -98,10 +109,9 @@
                 toolbar={<FormToolbar />}
                 mode="onTouched"
                 defaultValues={{}}
-                validate={validateForm}
             // validate={(values) => { }}
             >
-                <Grid container width={{ xs: '20%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+                <Grid container rowSpacing={3} columnSpacing={3}>
 
                     <Grid item xs={12} md={10}>
                         <Typography variant="h6" gutterBottom>
@@ -133,13 +143,8 @@
                                     />
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
-                                    <ReferenceInput
-                                        source="shipperId"
-                                        reference="shipper"
-                                        perPage={REFERENCE_INPUT_PAGESIZE}
-                                    >
+                                    <ReferenceInput source="shipperId" reference="companys" filter={{ type: 'shipper' }}>
                                         <AutocompleteInput
-                                            validate={[required()]}
                                             label="table.field.matnr.shipperId"
                                             optionText="name"
                                             filterToQuery={(val) => ({ name: val })}
@@ -147,36 +152,30 @@
                                     </ReferenceInput>
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
-                                    <ReferenceInput
+                                    {/* <ReferenceInput
                                         source="groupId"
                                         reference="matnrGroup"
                                         perPage={REFERENCE_INPUT_PAGESIZE}
                                     >
                                         <AutocompleteInput
                                             label="table.field.matnr.groupId"
-                                            optionText="code"
+                                            optionText="label"
                                             validate={[required()]}
                                             filterToQuery={(val) => ({ code: val })}
                                         />
-                                    </ReferenceInput>
+                                    </ReferenceInput> */}
+
+                                    <TreeSelectInput
+                                        label="table.field.matnr.groupId"
+                                        resource={'matnrGroup'}
+                                        source="groupId"
+                                    />
                                 </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <ReferenceInput
-                                        source="rglarId"
-                                        reference="rglarId"
-                                        perPage={REFERENCE_INPUT_PAGESIZE}
-                                    >
-                                        <AutocompleteInput
-                                            label="table.field.matnr.rglarId"
-                                            optionText="code"
-                                            filterToQuery={(val) => ({ code: val })}
-                                        />
-                                    </ReferenceInput>
-                                </Grid>
+
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
-                                        label="table.field.matnr.erpCode"
-                                        source="erpCode"
+                                        label="table.field.matnr.platCode"
+                                        source="platCode"
                                         parse={v => v}
                                     />
                                 </Grid>
@@ -256,7 +255,7 @@
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <SelectInput
                                         label="table.field.matnr.isLabelMange"
-                                        source="isLabelMange"
+                                        source="flagLabelMange"
                                         choices={[
                                             { id: 0, name: ' 鍚�' },
                                             { id: 1, name: ' 鏄�' },
@@ -265,7 +264,17 @@
                                     />
                                 </Grid>
 
-
+                                {dynamicFields.map((item) => {
+                                    return (
+                                        <Grid key={item.id} item xs={6} display="flex" gap={1}>
+                                            <DynamicFields
+                                                label={item.fieldsAlise}
+                                                source={item.fields}
+                                                validate={item.unique === 1 ? required() : false}
+                                            />
+                                        </Grid>
+                                    )
+                                })}
 
                             </Grid>
 
@@ -308,15 +317,32 @@
                                         source="valid"
                                     />
                                 </Grid>
+                                <Grid item xs={6} display="flex" gap={1}>
+                                    <SelectInput
+                                        label="table.field.matnr.flagCheck"
+                                        source="flagCheck"
+                                        choices={[
+                                            { id: 0, name: ' 鍚�' },
+                                            { id: 1, name: ' 鏄�' },
+                                        ]}
+                                    />
+                                </Grid>
                             </Grid>
                         </CustomTabPanel>
                         <CustomTabPanel value={value} index={2}>
                             <Grid container rowSpacing={2} columnSpacing={2}>
                                 <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.matnr.flagCheck"
-                                        source="flagCheck"
-                                    />
+                                    <ReferenceInput
+                                        source="rglar_id"
+                                        reference="serialRule"
+                                        perPage={REFERENCE_INPUT_PAGESIZE}
+                                    >
+                                        <AutocompleteInput
+                                            label="table.field.matnr.rglarId"
+                                            optionText="name"
+                                            filterToQuery={(val) => ({ name: val })}
+                                        />
+                                    </ReferenceInput>
                                 </Grid>
                             </Grid>
                         </CustomTabPanel>
@@ -338,3 +364,18 @@
 }
 
 export default MatnrEdit;
+
+const DynamicFields = (props) => {
+    const { ...parmas } = props;
+    const form = useFormContext();
+    const field = `extendFields.${parmas.source}`;
+
+    const value = form.getValues(field) || form.formState.defaultValues?.extendFields?.[parmas.source];
+
+    value && form.setValue(parmas.source, value);
+    return (
+        <TextInput
+            {...parmas}
+        />
+    )
+}

--
Gitblit v1.9.1