|  |  |  | 
|---|
|  |  |  | import React, { useState, useRef, useEffect, useMemo } from "react"; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | Edit, | 
|---|
|  |  |  | SimpleForm, | 
|---|
|  |  |  | FormDataConsumer, | 
|---|
|  |  |  | useTranslate, | 
|---|
|  |  |  | TextInput, | 
|---|
|  |  |  | NumberInput, | 
|---|
|  |  |  | BooleanInput, | 
|---|
|  |  |  | DateInput, | 
|---|
|  |  |  | SelectInput, | 
|---|
|  |  |  | ReferenceInput, | 
|---|
|  |  |  | ReferenceArrayInput, | 
|---|
|  |  |  | AutocompleteInput, | 
|---|
|  |  |  | SaveButton, | 
|---|
|  |  |  | Toolbar, | 
|---|
|  |  |  | Labeled, | 
|---|
|  |  |  | NumberField, | 
|---|
|  |  |  | required, | 
|---|
|  |  |  | useRecordContext, | 
|---|
|  |  |  | DeleteButton, | 
|---|
|  |  |  | } from 'react-admin'; | 
|---|
|  |  |  | import { useWatch, useFormContext } from "react-hook-form"; | 
|---|
|  |  |  | import { Stack, Grid, Box, Typography } from '@mui/material'; | 
|---|
|  |  |  | import * as Common from '@/utils/common.js'; | 
|---|
|  |  |  | import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting.js'; | 
|---|
|  |  |  | import EditBaseAside from "../../components/EditBaseAside.jsx"; | 
|---|
|  |  |  | import CustomerTopToolBar from "../../components/EditTopToolBar.jsx"; | 
|---|
|  |  |  | import MemoInput from "../../components/MemoInput.jsx"; | 
|---|
|  |  |  | Edit, | 
|---|
|  |  |  | SimpleForm, | 
|---|
|  |  |  | FormDataConsumer, | 
|---|
|  |  |  | useTranslate, | 
|---|
|  |  |  | TextInput, | 
|---|
|  |  |  | NumberInput, | 
|---|
|  |  |  | BooleanInput, | 
|---|
|  |  |  | DateInput, | 
|---|
|  |  |  | SelectInput, | 
|---|
|  |  |  | ReferenceInput, | 
|---|
|  |  |  | ReferenceArrayInput, | 
|---|
|  |  |  | AutocompleteInput, | 
|---|
|  |  |  | SaveButton, | 
|---|
|  |  |  | Toolbar, | 
|---|
|  |  |  | Labeled, | 
|---|
|  |  |  | NumberField, | 
|---|
|  |  |  | required, | 
|---|
|  |  |  | useRecordContext, | 
|---|
|  |  |  | DeleteButton, | 
|---|
|  |  |  | } from "react-admin"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from "@/config/setting.js"; | 
|---|
|  |  |  | import StatusSelectInput from "../../components/StatusSelectInput.jsx"; | 
|---|
|  |  |  | import CustomerTopToolBar from "../../components/EditTopToolBar.jsx"; | 
|---|
|  |  |  | import EditBaseAside from "../../components/EditBaseAside.jsx"; | 
|---|
|  |  |  | import { Stack, Grid, Box, Typography } from "@mui/material"; | 
|---|
|  |  |  | import { useWatch, useFormContext } from "react-hook-form"; | 
|---|
|  |  |  | import MemoInput from "../../components/MemoInput.jsx"; | 
|---|
|  |  |  | import TransferItemList from "./TransferItemList.jsx"; | 
|---|
|  |  |  | import * as Common from "@/utils/common.js"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const FormToolbar = () => { | 
|---|
|  |  |  | const { getValues } = useFormContext(); | 
|---|
|  |  |  | const { getValues } = useFormContext(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <Toolbar sx={{ justifyContent: 'space-between' }}> | 
|---|
|  |  |  | <SaveButton /> | 
|---|
|  |  |  | <DeleteButton mutationMode="optimistic" /> | 
|---|
|  |  |  | </Toolbar> | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <Toolbar sx={{ justifyContent: "flex-end" }}> | 
|---|
|  |  |  | <SaveButton /> | 
|---|
|  |  |  | <DeleteButton mutationMode="optimistic" /> | 
|---|
|  |  |  | </Toolbar> | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const TransferEdit = () => { | 
|---|
|  |  |  | const translate = useTranslate(); | 
|---|
|  |  |  | const translate = useTranslate(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <Edit | 
|---|
|  |  |  | redirect="list" | 
|---|
|  |  |  | mutationMode={EDIT_MODE} | 
|---|
|  |  |  | actions={<CustomerTopToolBar />} | 
|---|
|  |  |  | aside={<EditBaseAside />} | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <> | 
|---|
|  |  |  | <Edit | 
|---|
|  |  |  | redirect="list" | 
|---|
|  |  |  | mutationMode={EDIT_MODE} | 
|---|
|  |  |  | actions={<CustomerTopToolBar />} | 
|---|
|  |  |  | aside={<EditBaseAside />} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <SimpleForm | 
|---|
|  |  |  | sx={{ | 
|---|
|  |  |  | "& .MuiFormLabel-root.MuiInputLabel-root.Mui-disabled": { | 
|---|
|  |  |  | bgcolor: 'white', | 
|---|
|  |  |  | WebkitTextFillColor: "rgba(0, 0, 0)" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | "& .MuiInputBase-input.MuiFilledInput-input.Mui-disabled": { | 
|---|
|  |  |  | bgcolor: 'white', | 
|---|
|  |  |  | WebkitTextFillColor: "rgba(0, 0, 0)" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | "& .MuiFilledInput-root.MuiInputBase-sizeSmall": { | 
|---|
|  |  |  | bgcolor: 'white', | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | shouldUnregister | 
|---|
|  |  |  | warnWhenUnsavedChanges | 
|---|
|  |  |  | toolbar={false} | 
|---|
|  |  |  | mode="onTouched" | 
|---|
|  |  |  | defaultValues={{}} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <SimpleForm | 
|---|
|  |  |  | shouldUnregister | 
|---|
|  |  |  | warnWhenUnsavedChanges | 
|---|
|  |  |  | toolbar={<FormToolbar />} | 
|---|
|  |  |  | mode="onTouched" | 
|---|
|  |  |  | defaultValues={{}} | 
|---|
|  |  |  | // validate={(values) => { }} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> | 
|---|
|  |  |  | <Grid item xs={12} md={8}> | 
|---|
|  |  |  | <Typography variant="h6" gutterBottom> | 
|---|
|  |  |  | {translate('common.edit.title.main')} | 
|---|
|  |  |  | </Typography> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.code" | 
|---|
|  |  |  | source="code" | 
|---|
|  |  |  | parse={v => v} | 
|---|
|  |  |  | autoFocus | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.type" | 
|---|
|  |  |  | source="type" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <SelectInput | 
|---|
|  |  |  | label="table.field.transfer.source" | 
|---|
|  |  |  | source="source" | 
|---|
|  |  |  | choices={[ | 
|---|
|  |  |  | { id: 1, name: 'ERP系统' }, | 
|---|
|  |  |  | { id:  2, name: 'WMS系统生成' }, | 
|---|
|  |  |  | { id:  3, name: 'EXCEL导入 ' }, | 
|---|
|  |  |  | { id:  4, name: 'QMS系统' }, | 
|---|
|  |  |  | ]} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <SelectInput | 
|---|
|  |  |  | label="table.field.transfer.exceStatus" | 
|---|
|  |  |  | source="exceStatus" | 
|---|
|  |  |  | choices={[ | 
|---|
|  |  |  | { id: 0, name: '未执行' }, | 
|---|
|  |  |  | { id:  1, name: '执行中' }, | 
|---|
|  |  |  | { id:  2, name: '执行完成' }, | 
|---|
|  |  |  | ]} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.orgWareId" | 
|---|
|  |  |  | source="orgWareId" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.orgWareName" | 
|---|
|  |  |  | source="orgWareName" | 
|---|
|  |  |  | parse={v => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.tarWareId" | 
|---|
|  |  |  | source="tarWareId" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.tarWareName" | 
|---|
|  |  |  | source="tarWareName" | 
|---|
|  |  |  | parse={v => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.orgAreaId" | 
|---|
|  |  |  | source="orgAreaId" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.orgAreaName" | 
|---|
|  |  |  | source="orgAreaName" | 
|---|
|  |  |  | parse={v => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.tarAreaId" | 
|---|
|  |  |  | source="tarAreaId" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction='row' gap={2}> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.tarAreaName" | 
|---|
|  |  |  | source="tarAreaName" | 
|---|
|  |  |  | parse={v => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </Grid> | 
|---|
|  |  |  | <Grid item xs={12} md={4}> | 
|---|
|  |  |  | <Typography variant="h6" gutterBottom> | 
|---|
|  |  |  | {translate('common.edit.title.common')} | 
|---|
|  |  |  | </Typography> | 
|---|
|  |  |  | <StatusSelectInput /> | 
|---|
|  |  |  | <Box mt="2em" /> | 
|---|
|  |  |  | <MemoInput /> | 
|---|
|  |  |  | </Grid> | 
|---|
|  |  |  | </Grid> | 
|---|
|  |  |  | </SimpleForm> | 
|---|
|  |  |  | </Edit > | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | <Grid | 
|---|
|  |  |  | container | 
|---|
|  |  |  | width={{ xs: "100%", xl: "90%", }} | 
|---|
|  |  |  | rowSpacing={3} | 
|---|
|  |  |  | columnSpacing={3} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <Grid item xs={24} md={16}> | 
|---|
|  |  |  | <Typography variant="h6" gutterBottom> | 
|---|
|  |  |  | {translate("common.edit.title.main")} | 
|---|
|  |  |  | </Typography> | 
|---|
|  |  |  | <Stack direction="row" gap={2}> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.code" | 
|---|
|  |  |  | source="code" | 
|---|
|  |  |  | parse={(v) => v} | 
|---|
|  |  |  | autoFocus | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <TextInput label="table.field.transfer.type" source="type$" readOnly/> | 
|---|
|  |  |  | <SelectInput | 
|---|
|  |  |  | label="table.field.transfer.source" | 
|---|
|  |  |  | source="source" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | choices={[ | 
|---|
|  |  |  | { id: 1, name: "ERP系统" }, | 
|---|
|  |  |  | { id: 2, name: "WMS系统生成" }, | 
|---|
|  |  |  | { id: 3, name: "EXCEL导入 " }, | 
|---|
|  |  |  | { id: 4, name: "QMS系统" }, | 
|---|
|  |  |  | ]} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <SelectInput | 
|---|
|  |  |  | label="table.field.transfer.exceStatus" | 
|---|
|  |  |  | source="exceStatus$" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | choices={[ | 
|---|
|  |  |  | { id: 0, name: "未执行" }, | 
|---|
|  |  |  | { id: 1, name: "执行中" }, | 
|---|
|  |  |  | { id: 2, name: "执行完成" }, | 
|---|
|  |  |  | ]} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction="row" gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.orgWareId" | 
|---|
|  |  |  | source="orgWareId" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.orgWareName" | 
|---|
|  |  |  | source="orgWareName" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | parse={(v) => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.tarWareId" | 
|---|
|  |  |  | source="tarWareId" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.tarWareName" | 
|---|
|  |  |  | source="tarWareName" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | parse={(v) => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | <Stack direction="row" gap={2}> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.orgAreaId" | 
|---|
|  |  |  | source="orgAreaId" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.orgAreaName" | 
|---|
|  |  |  | source="orgAreaName" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | parse={(v) => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <NumberInput | 
|---|
|  |  |  | label="table.field.transfer.tarAreaId" | 
|---|
|  |  |  | source="tarAreaId" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <TextInput | 
|---|
|  |  |  | label="table.field.transfer.tarAreaName" | 
|---|
|  |  |  | source="tarAreaName" | 
|---|
|  |  |  | readOnly | 
|---|
|  |  |  | parse={(v) => v} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Stack> | 
|---|
|  |  |  | </Grid> | 
|---|
|  |  |  | </Grid> | 
|---|
|  |  |  | </SimpleForm> | 
|---|
|  |  |  | </Edit> | 
|---|
|  |  |  | <TransferItemList /> | 
|---|
|  |  |  | </> | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default TransferEdit; | 
|---|