From a1f5c7974cb66943c2d0edd285902bc34c4294c8 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 15 四月 2025 17:29:06 +0800 Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop --- rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx | 167 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 121 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..fe32356 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,13 +264,40 @@ /> </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> </CustomTabPanel> <CustomTabPanel value={value} index={1}> <Grid container rowSpacing={2} columnSpacing={2}> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.matnr.name" + source="name" + parse={v => v} + required + autoFocus + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.matnr.code" + source="code" + required + parse={v => v} + /> + </Grid> <Grid item xs={6} display="flex" gap={1}> <NumberInput label="table.field.matnr.safeQty" @@ -308,15 +334,49 @@ 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" + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.matnr.name" + source="name" + parse={v => v} + required + autoFocus /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.matnr.code" + source="code" + required + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <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 +398,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