From 3170c2aca0583f801a5527c124103cfbff2bb306 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 14 七月 2025 15:01:13 +0800
Subject: [PATCH] 盘点单功能优化
---
rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx | 156 ++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 121 insertions(+), 35 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx
index cb35859..0cf5299 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,6 +74,25 @@
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);
};
@@ -80,7 +101,7 @@
redirect="list"
mutationMode={EDIT_MODE}
actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
+ title={"menu.matnr"}
>
<SimpleForm
shouldUnregister
@@ -90,7 +111,7 @@
defaultValues={{}}
// 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>
@@ -122,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 })}
@@ -136,32 +152,26 @@
</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="batchRegular"
- 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.platCode"
@@ -245,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: ' 鏄�' },
@@ -254,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"
@@ -297,29 +334,63 @@
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="rglarId"
+ reference="serialRule"
+ perPage={REFERENCE_INPUT_PAGESIZE}
+ >
+ <AutocompleteInput
+ label="table.field.matnr.rglarId"
+ optionText="name"
+ filterToQuery={(val) => ({ name: val })}
+ />
+ </ReferenceInput>
</Grid>
</Grid>
</CustomTabPanel>
</Grid>
- <Grid item xs={12} md={2}>
+ {/* <Grid item xs={12} md={2}>
<Typography variant="h6" gutterBottom>
{translate('common.edit.title.common')}
</Typography>
<StatusSelectInput />
<Box mt="2em" />
<MemoInput />
- </Grid>
+ </Grid> */}
</Grid>
</SimpleForm>
</Edit >
@@ -327,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