From cc2984eeb289b54cfa193dde558417c46f309e8f Mon Sep 17 00:00:00 2001 From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com> Date: 星期日, 13 四月 2025 19:32:38 +0800 Subject: [PATCH] #修改 1. 采购单界面优化及修改 --- /dev/null | 18 ------------------ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java | 19 ------------------- rsf-admin/src/page/qlyInspect/QlyIsptItemList.jsx | 2 -- rsf-admin/src/page/ResourceContent.js | 3 +-- 4 files changed, 1 insertions(+), 41 deletions(-) diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js index f5c5497..5a90285 100644 --- a/rsf-admin/src/page/ResourceContent.js +++ b/rsf-admin/src/page/ResourceContent.js @@ -21,7 +21,6 @@ import container from './container'; import contract from './contract'; import qlyInspect from './qlyInspect'; -import qlyIsptItem from './qlyIsptItem'; import dictType from './system/dicts/dictType'; import companys from './basicInfo/companys'; import locType from './basicInfo/locType'; @@ -31,7 +30,7 @@ import serialRule from './system/serialRule'; import whMat from './basicInfo/whMat'; import asnOrder from './orders/asnOrder'; -import purchase from './purchase'; +import purchase from './orders/purchase'; import fields from './fields'; import fieldsItem from './fieldsItem'; import warehouseAreasItem from './warehouseAreasItem'; diff --git a/rsf-admin/src/page/purchase/PurchaseCreate.jsx b/rsf-admin/src/page/purchase/PurchaseCreate.jsx deleted file mode 100644 index 768de68..0000000 --- a/rsf-admin/src/page/purchase/PurchaseCreate.jsx +++ /dev/null @@ -1,194 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - CreateBase, - useTranslate, - TextInput, - NumberInput, - BooleanInput, - DateInput, - SaveButton, - SelectInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - Toolbar, - required, - useDataProvider, - useNotify, - Form, - useCreateController, -} from 'react-admin'; -import { - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Stack, - Grid, - Box, -} from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; - -const PurchaseCreate = (props) => { - const { open, setOpen } = props; - - const translate = useTranslate(); - const notify = useNotify(); - - const handleClose = (event, reason) => { - if (reason !== "backdropClick") { - setOpen(false); - } - }; - - const handleSuccess = async (data) => { - setOpen(false); - notify('common.response.success'); - }; - - const handleError = async (error) => { - notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); - }; - - return ( - <> - <CreateBase - record={{}} - transform={(data) => { - return data; - }} - mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} - > - <Dialog - open={open} - onClose={handleClose} - aria-labelledby="form-dialog-title" - fullWidth - disableRestoreFocus - maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' - > - <Form> - <DialogTitle id="form-dialog-title" sx={{ - position: 'sticky', - top: 0, - backgroundColor: 'background.paper', - zIndex: 1000 - }} - > - {translate('create.title')} - <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> - <DialogCloseButton onClose={handleClose} /> - </Box> - </DialogTitle> - <DialogContent sx={{ mt: 2 }}> - <Grid container rowSpacing={2} columnSpacing={2}> - {/* <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchase.code" - source="code" - parse={v => v} - autoFocus - /> - </Grid> */} - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchase.type" - source="type" - parse={v => v} - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchase.source" - source="source" - parse={v => v} - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <DateInput - label="table.field.purchase.preArr" - source="preArr" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchase.anfme" - source="anfme" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchase.qty" - source="qty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchase.workQty" - source="workQty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchase.channel" - source="channel" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchase.platCode" - source="platCode" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <DateInput - label="table.field.purchase.startTime" - source="startTime" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <DateInput - label="table.field.purchase.endTime" - source="endTime" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchase.project" - source="project" - parse={v => v} - /> - </Grid> - - <Grid item xs={6} display="flex" gap={1}> - <StatusSelectInput /> - </Grid> - <Grid item xs={12} display="flex" gap={1}> - <Stack direction="column" spacing={1} width={'100%'}> - <MemoInput /> - </Stack> - </Grid> - </Grid> - </DialogContent> - <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> - <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > - <SaveButton /> - </Toolbar> - </DialogActions> - </Form> - </Dialog> - </CreateBase> - </> - ) -} - -export default PurchaseCreate; diff --git a/rsf-admin/src/page/purchase/PurchaseEdit.jsx b/rsf-admin/src/page/purchase/PurchaseEdit.jsx deleted file mode 100644 index 93bb094..0000000 --- a/rsf-admin/src/page/purchase/PurchaseEdit.jsx +++ /dev/null @@ -1,153 +0,0 @@ -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'; -import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; -import PurchaseItemList from "./PurchaseItemList"; - -const FormToolbar = () => { - const { getValues } = useFormContext(); - - return ( - <Toolbar sx={{ justifyContent: 'end' }}> - <SaveButton /> - <DeleteButton mutationMode="optimistic" /> - </Toolbar> - ) -} - -const PurchaseEdit = () => { - const translate = useTranslate(); - - return ( - <> - <Edit - redirect="list" - mutationMode={EDIT_MODE} - actions={<CustomerTopToolBar />} - aside={<EditBaseAside />} - > - <SimpleForm - shouldUnregister - warnWhenUnsavedChanges - toolbar={<FormToolbar />} - mode="onTouched" - defaultValues={{}} - // validate={(values) => { }} - > - <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> - <Grid item xs={18} md={10}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.main')} - </Typography> - {/* <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchase.code" - source="code" - parse={v => v} - autoFocus - /> - </Stack> */} - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchase.type" - source="type$" - parse={v => v} - validate={required()} - /> - <TextInput - label="table.field.purchase.source" - source="source" - parse={v => v} - validate={required()} - /> - <DateInput - label="table.field.purchase.preArr" - source="preArr" - /> - <NumberInput - label="table.field.purchase.anfme" - source="anfme" - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.purchase.qty" - source="qty" - validate={required()} - /> - <NumberInput - label="table.field.purchase.workQty" - source="workQty" - validate={required()} - /> - <TextInput - label="table.field.purchase.channel" - source="channel" - parse={v => v} - /> - <TextInput - label="table.field.purchase.platCode" - source="platCode" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <DateInput - label="table.field.purchase.startTime" - source="startTime" - /> - <DateInput - label="table.field.purchase.endTime" - source="endTime" - /> - <TextInput - label="table.field.purchase.project" - source="project" - parse={v => v} - /> - </Stack> - </Grid> - <Grid item xs={6} md={2}> - <Typography variant="h6" gutterBottom> - {translate('common.edit.title.common')} - </Typography> - <StatusSelectInput /> - <Box mt="2em" /> - <MemoInput /> - </Grid> - </Grid> - </SimpleForm> - </Edit > - <PurchaseItemList /> - </> - ) -} - -export default PurchaseEdit; diff --git a/rsf-admin/src/page/purchase/PurchaseItemCreate.jsx b/rsf-admin/src/page/purchase/PurchaseItemCreate.jsx deleted file mode 100644 index abc53cc..0000000 --- a/rsf-admin/src/page/purchase/PurchaseItemCreate.jsx +++ /dev/null @@ -1,201 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - CreateBase, - useTranslate, - TextInput, - NumberInput, - BooleanInput, - DateInput, - SaveButton, - SelectInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - Toolbar, - required, - useDataProvider, - useNotify, - Form, - useCreateController, -} from 'react-admin'; -import { - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Stack, - Grid, - Box, -} from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; - -const PurchaseItemCreate = (props) => { - const { open, setOpen, row } = props; - - const translate = useTranslate(); - const notify = useNotify(); - - const handleClose = (event, reason) => { - if (reason !== "backdropClick") { - setOpen(false); - } - }; - - const handleSuccess = async (data) => { - setOpen(false); - notify('common.response.success'); - }; - - const handleError = async (error) => { - notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); - }; - - return ( - <> - <CreateBase - record={{}} - transform={(data) => { - return data; - }} - mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} - > - <Dialog - open={open} - onClose={handleClose} - aria-labelledby="form-dialog-title" - fullWidth - disableRestoreFocus - maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' - > - <Form> - <DialogTitle id="form-dialog-title" sx={{ - position: 'sticky', - top: 0, - backgroundColor: 'background.paper', - zIndex: 1000 - }} - > - {translate('create.title')} - <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> - <DialogCloseButton onClose={handleClose} /> - </Box> - </DialogTitle> - <DialogContent sx={{ mt: 2 }}> - <Grid container rowSpacing={2} columnSpacing={2}> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchaseItem.purchaseId" - source="purchaseId" - defaultValue={row.poId} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.platItemId" - source="platItemId" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.matnrCode" - source="matnrCode" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.matnrName" - source="matnrName" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.unit" - source="unit" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchaseItem.anfme" - source="anfme" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchaseItem.qty" - source="qty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchaseItem.nromQty" - source="nromQty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchaseItem.asnQty" - source="asnQty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.purchaseItem.printQty" - source="printQty" - validate={required()} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.splrName" - source="splrName" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.splrCode" - source="splrCode" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.purchaseItem.splrBatch" - source="splrBatch" - parse={v => v} - /> - </Grid> - - <Grid item xs={6} display="flex" gap={1}> - <StatusSelectInput /> - </Grid> - <Grid item xs={12} display="flex" gap={1}> - <Stack direction="column" spacing={1} width={'100%'}> - <MemoInput /> - </Stack> - </Grid> - </Grid> - </DialogContent> - <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> - <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > - <SaveButton /> - </Toolbar> - </DialogActions> - </Form> - </Dialog> - </CreateBase> - </> - ) -} - -export default PurchaseItemCreate; diff --git a/rsf-admin/src/page/purchase/PurchaseItemEdit.jsx b/rsf-admin/src/page/purchase/PurchaseItemEdit.jsx deleted file mode 100644 index f7103d7..0000000 --- a/rsf-admin/src/page/purchase/PurchaseItemEdit.jsx +++ /dev/null @@ -1,173 +0,0 @@ -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'; -import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; - -const FormToolbar = () => { - const { getValues } = useFormContext(); - - return ( - <Toolbar sx={{ justifyContent: 'space-between' }}> - <SaveButton /> - <DeleteButton mutationMode="optimistic" /> - </Toolbar> - ) -} - -const PurchaseItemEdit = () => { - const translate = useTranslate(); - - return ( - <Edit - redirect="list" - mutationMode={EDIT_MODE} - actions={<CustomerTopToolBar />} - aside={<EditBaseAside />} - > - <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}> - <NumberInput - label="table.field.purchaseItem.purchaseId" - source="purchaseId" - autoFocus - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.platItemId" - source="platItemId" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.matnrCode" - source="matnrCode" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.matnrName" - source="matnrName" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.unit" - source="unit" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.purchaseItem.anfme" - source="anfme" - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.purchaseItem.qty" - source="qty" - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.purchaseItem.nromQty" - source="nromQty" - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.purchaseItem.asnQty" - source="asnQty" - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.purchaseItem.printQty" - source="printQty" - validate={required()} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.splrName" - source="splrName" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.splrCode" - source="splrCode" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.purchaseItem.splrBatch" - source="splrBatch" - 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 > - ) -} - -export default PurchaseItemEdit; diff --git a/rsf-admin/src/page/purchase/PurchaseItemList.jsx b/rsf-admin/src/page/purchase/PurchaseItemList.jsx deleted file mode 100644 index ae4fd96..0000000 --- a/rsf-admin/src/page/purchase/PurchaseItemList.jsx +++ /dev/null @@ -1,154 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { - List, - DatagridConfigurable, - SearchInput, - TopToolbar, - SelectColumnsButton, - EditButton, - FilterButton, - BulkDeleteButton, - WrapperField, - useTranslate, - TextField, - NumberField, - DateField, - BooleanField, - TextInput, - SelectInput, - NumberInput, - DeleteButton, - useGetRecordId, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import PurchaseItemCreate from "./PurchaseItemCreate"; -import EmptyData from "../components/EmptyData"; -import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; -import PageDrawer from "../components/PageDrawer"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; - -const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - '& .css-1vooibu-MuiSvgIcon-root': { - height: '.9em' - }, - '& .RaDatagrid-row': { - cursor: 'auto' - }, - '& .column-name': { - }, - '& .opt': { - width: 200 - }, -})); - -const filters = [ - <SearchInput source="condition" alwaysOn />, - <NumberInput source="purchaseId" label="table.field.purchaseItem.purchaseId" />, - <TextInput source="platItemId" label="table.field.purchaseItem.platItemId" />, - <TextInput source="matnrCode" label="table.field.purchaseItem.matnrCode" />, - <TextInput source="matnrName" label="table.field.purchaseItem.matnrName" />, - <TextInput source="unit" label="table.field.purchaseItem.unit" />, - <NumberInput source="anfme" label="table.field.purchaseItem.anfme" />, - <NumberInput source="qty" label="table.field.purchaseItem.qty" />, - <NumberInput source="nromQty" label="table.field.purchaseItem.nromQty" />, - <NumberInput source="asnQty" label="table.field.purchaseItem.asnQty" />, - <NumberInput source="printQty" label="table.field.purchaseItem.printQty" />, - <TextInput source="splrName" label="table.field.purchaseItem.splrName" />, - <TextInput source="splrCode" label="table.field.purchaseItem.splrCode" />, - <TextInput source="splrBatch" label="table.field.purchaseItem.splrBatch" />, - <TextInput label="common.field.memo" source="memo" />, - <SelectInput - label="common.field.status" - source="status" - choices={[ - { id: '1', name: 'common.enums.statusTrue' }, - { id: '0', name: 'common.enums.statusFalse' }, - ]} - resettable - />, -] - -const PurchaseItemList = () => { - const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); - const [drawerVal, setDrawerVal] = useState(false); - const poId = useGetRecordId(); - - return ( - <> - <Box display="flex"> - <List - resource="purchaseItem" - sx={{ - flexGrow: 1, - transition: (theme) => - theme.transitions.create(['all'], { - duration: theme.transitions.duration.enteringScreen, - }), - marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, - }} - title={"menu.purchaseItem"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} - filters={filters} - filter={{ purchaseId: poId }} - sort={{ field: "create_time", order: "desc" }} - actions={( - <TopToolbar> - <FilterButton /> - <MyCreateButton onClick={() => { setCreateDialog(true) }} /> - <SelectColumnsButton preferenceKey='purchaseItem' /> - <MyExportButton /> - </TopToolbar> - )} - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey='purchaseItem' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} - rowClick={(id, resource, record) => false} - omit={['id', 'createTime','purchaseId', 'platItemId', 'createBy', 'memo']} - > - <NumberField source="id" /> - <NumberField source="purchaseId" label="table.field.purchaseItem.purchaseId" /> - <TextField source="platItemId" label="table.field.purchaseItem.platItemId" /> - <TextField source="matnrCode" label="table.field.purchaseItem.matnrCode" /> - <TextField source="matnrName" label="table.field.purchaseItem.matnrName" /> - <TextField source="unit" label="table.field.purchaseItem.unit" /> - <NumberField source="anfme" label="table.field.purchaseItem.anfme" /> - <NumberField source="qty" label="table.field.purchaseItem.qty" /> - <NumberField source="nromQty" label="table.field.purchaseItem.nromQty" /> - <NumberField source="asnQty" label="table.field.purchaseItem.asnQty" /> - <NumberField source="printQty" label="table.field.purchaseItem.printQty" /> - <TextField source="splrName" label="table.field.purchaseItem.splrName" /> - <TextField source="splrCode" label="table.field.purchaseItem.splrCode" /> - <TextField source="splrBatch" label="table.field.purchaseItem.splrBatch" /> - <TextField source="updateBy$" label="common.field.updateBy" reference="user" /> - <DateField source="updateTime" label="common.field.updateTime" showTime /> - <TextField source="createBy$" label="common.field.createBy" /> - <DateField source="createTime" label="common.field.createTime" showTime /> - <BooleanField source="statusBool" label="common.field.status" sortable={false} /> - <TextField source="memo" label="common.field.memo" sortable={false} /> - <WrapperField cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> - </WrapperField> - </StyledDatagrid> - </List> - <PurchaseItemCreate - open={createDialog} - setOpen={setCreateDialog} - row={{ poId }} - /> - <PageDrawer - title='PurchaseItem Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box></> - ) -} - -export default PurchaseItemList; diff --git a/rsf-admin/src/page/purchase/PurchaseList.jsx b/rsf-admin/src/page/purchase/PurchaseList.jsx deleted file mode 100644 index 0a45197..0000000 --- a/rsf-admin/src/page/purchase/PurchaseList.jsx +++ /dev/null @@ -1,170 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; -import { - List, - DatagridConfigurable, - SearchInput, - TopToolbar, - SelectColumnsButton, - EditButton, - FilterButton, - CreateButton, - ExportButton, - BulkDeleteButton, - WrapperField, - useRecordContext, - useTranslate, - useNotify, - useListContext, - FunctionField, - TextField, - NumberField, - DateField, - BooleanField, - ReferenceField, - TextInput, - DateTimeInput, - DateInput, - SelectInput, - NumberInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - DeleteButton, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import PurchaseCreate from "./PurchaseCreate"; -import PurchasePanel from "./PurchasePanel"; -import EmptyData from "../components/EmptyData"; -import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; -import PageDrawer from "../components/PageDrawer"; -import MyField from "../components/MyField"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import * as Common from '@/utils/common'; - -const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - '& .css-1vooibu-MuiSvgIcon-root': { - height: '.9em' - }, - '& .RaDatagrid-row': { - cursor: 'auto' - }, - '& .column-name': { - }, - '& .opt': { - width: 200 - }, -})); - -const filters = [ - <SearchInput source="condition" alwaysOn />, - <TextInput source="code" label="table.field.purchase.code" />, - <TextInput source="type" label="table.field.purchase.type" />, - <TextInput source="source" label="table.field.purchase.source" />, - <DateInput source="preArr" label="table.field.purchase.preArr" />, - <NumberInput source="anfme" label="table.field.purchase.anfme" />, - <NumberInput source="qty" label="table.field.purchase.qty" />, - <NumberInput source="workQty" label="table.field.purchase.workQty" />, - <TextInput source="channel" label="table.field.purchase.channel" />, - <TextInput source="platCode" label="table.field.purchase.platCode" />, - <DateInput source="startTime" label="table.field.purchase.startTime" />, - <DateInput source="endTime" label="table.field.purchase.endTime" />, - <TextInput source="project" label="table.field.purchase.project" />, - <TextInput label="common.field.memo" source="memo" />, - <SelectInput - label="common.field.status" - source="status" - choices={[ - { id: '1', name: 'common.enums.statusTrue' }, - { id: '0', name: 'common.enums.statusFalse' }, - ]} - resettable - />, -] - -const PurchaseList = () => { - const translate = useTranslate(); - - const [createDialog, setCreateDialog] = useState(false); - const [drawerVal, setDrawerVal] = useState(false); - - const navigate = useNavigate(); - const assign = (record) => { - navigate(`/purchaseItem?poId=${record.id}`); - }; - - return ( - <Box display="flex"> - <List - sx={{ - flexGrow: 1, - transition: (theme) => - theme.transitions.create(['all'], { - duration: theme.transitions.duration.enteringScreen, - }), - marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, - }} - title={"menu.purchase"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} - filters={filters} - sort={{ field: "create_time", order: "desc" }} - actions={( - <TopToolbar> - <FilterButton /> - <MyCreateButton onClick={() => { setCreateDialog(true) }} /> - <SelectColumnsButton preferenceKey='purchase' /> - <MyExportButton /> - </TopToolbar> - )} - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey='purchase' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} - rowClick={'edit'} - expand={false} - expandSingle={true} - omit={['id', 'createTime', 'createBy', 'memo', 'preArr', 'channel','startTime','workQty', 'endTime']} - > - <NumberField source="id" /> - <TextField source="code" label="table.field.purchase.code" /> - <TextField source="type$" label="table.field.purchase.type" /> - <TextField source="source" label="table.field.purchase.source" /> - <DateField source="preArr" label="table.field.purchase.preArr" showTime /> - <NumberField source="anfme" label="table.field.purchase.anfme" /> - <NumberField source="qty" label="table.field.purchase.qty" /> - <NumberField source="workQty" label="table.field.purchase.workQty" /> - <TextField source="channel" label="table.field.purchase.channel" /> - <TextField source="platCode" label="table.field.purchase.platCode" /> - <DateField source="startTime" label="table.field.purchase.startTime" showTime /> - <DateField source="endTime" label="table.field.purchase.endTime" showTime /> - <TextField source="project" label="table.field.purchase.project" /> - <TextField source="updateBy$" label="common.field.updateBy" /> - <DateField source="updateTime" label="common.field.updateTime" showTime /> - <TextField source="createBy$" label="common.field.createBy" /> - <DateField source="createTime" label="common.field.createTime" showTime /> - <BooleanField source="statusBool" label="common.field.status" sortable={false} /> - <TextField source="memo" label="common.field.memo" sortable={false} /> - <WrapperField cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> - </WrapperField> - </StyledDatagrid> - </List> - <PurchaseCreate - open={createDialog} - setOpen={setCreateDialog} - /> - <PageDrawer - title='Purchase Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} - -export default PurchaseList; diff --git a/rsf-admin/src/page/purchase/PurchasePanel.jsx b/rsf-admin/src/page/purchase/PurchasePanel.jsx deleted file mode 100644 index 39b1d20..0000000 --- a/rsf-admin/src/page/purchase/PurchasePanel.jsx +++ /dev/null @@ -1,182 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { Box, Card, CardContent, Grid, Typography, Tooltip, Paper, TableContainer, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material'; -import { - useTranslate, - useRecordContext, - useNotify -} from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; -import * as Common from '@/utils/common' -import { styled } from "@mui/material/styles"; -import request from '@/utils/request'; -const PurchasePanel = () => { - const record = useRecordContext(); - if (!record) return null; - const translate = useTranslate(); - const notify = useNotify(); - const [rows, setRows] = useState([]); - const poId = record.id; - - useEffect(() => { - http(); - }, [poId]); - - const http = async () => { - const res = await request.post('/purchaseItem/page', { purchaseId: poId }); - if (res?.data?.code === 200) { - setRows(res.data.data.records) - } else { - notify(res.data.msg); - } - } - - const StyledTable = styled(TableRow)(({ theme }) => ({ - "& .MuiButtonBase-root.": { - padding: "0px 0px", - }, - })); - - const StyledTableRow = styled(TableRow)(({ theme }) => ({ - "& .MuiButtonBase-root.": { - padding: "0px 0px", - }, - })); - - const StyledTableCell = styled(TableCell)(({ theme }) => ({ - "& .MuiButtonBase-root": { - padding: "0px 0px", - }, - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap", - maxWidth: 600, - })); - - const columns = [ - { - id: 'purchaseId', - label: 'table.field.purchaseItem.purchaseId', - minWidth: 100 - }, - { - id: 'platItemId', - label: 'table.field.purchaseItem.platItemId', - minWidth: 100 - }, - { - id: 'matnrCode', - label: 'table.field.purchaseItem.matnrCode', - minWidth: 100 - }, - { - id: 'matnrName', - label: 'table.field.purchaseItem.matnrName', - minWidth: 100 - }, - { - id: 'unit', - label: 'table.field.purchaseItem.unit', - minWidth: 100 - }, - { - id: 'anfme', - label: 'table.field.purchaseItem.anfme', - minWidth: 100 - }, - { - id: 'qty', - label: 'table.field.purchaseItem.qty', - minWidth: 100 - }, - { - id: 'nromQty', - label: 'table.field.purchaseItem.nromQty', - minWidth: 100 - }, - { - id: 'asnQty', - label: 'table.field.purchaseItem.asnQty', - minWidth: 100 - }, - { - id: 'printQty', - label: 'table.field.purchaseItem.printQty', - minWidth: 100 - }, - { - id: 'splrName', - label: 'table.field.purchaseItem.splrName', - minWidth: 100 - }, - { - id: 'splrCode', - label: 'table.field.purchaseItem.splrCode', - minWidth: 100 - }, - { - id: 'splrBatch', - label: 'table.field.purchaseItem.splrBatch', - minWidth: 100 - }, - { - id: 'statusBool', - label: 'common.field.status', - minWidth: 100, - formatter: (value) => value ? 'Yes' : 'No' - }, - { - id: 'memo', - label: 'common.field.memo', - minWidth: 100 - } - ]; - - - return ( - - <Box sx={{ - position: 'relative', - padding: '5px 10px' - }}> - <TableContainer component={Paper} > - <Table size="small" > - <TableHead> - <StyledTableRow key={'head'}> - {columns.map((column, idx) => { - const value = column.label; - return ( - <> - <StyledTableCell - key={column.id} - align={column.align || "left"} - // style={{ paddingLeft: idx === 0 && (depth * 16 + 16) }} - > - {column.format ? column.format(value) : translate(value)} - </StyledTableCell> - </> - ); - - })} - </StyledTableRow> - </TableHead> - - <TableBody> - {rows.map((row) => ( - <StyledTableRow key={row.id || Math.random()}> - {columns.map((column) => ( - <StyledTableCell key={column.id} > - {row[column.id]} - </StyledTableCell> - ))} - </StyledTableRow> - ))} - - </TableBody> - </Table> - </TableContainer> - </Box> - - ); -}; - -export default PurchasePanel; diff --git a/rsf-admin/src/page/purchase/index.jsx b/rsf-admin/src/page/purchase/index.jsx deleted file mode 100644 index a03738a..0000000 --- a/rsf-admin/src/page/purchase/index.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - ListGuesser, - EditGuesser, - ShowGuesser, -} from "react-admin"; - -import PurchaseList from "./PurchaseList"; -import PurchaseEdit from "./PurchaseEdit"; - -export default { - list: PurchaseList, - edit: PurchaseEdit, - show: ShowGuesser, - recordRepresentation: (record) => { - return `${record.id}` - } -}; diff --git a/rsf-admin/src/page/qlyInspect/QlyIsptItemList.jsx b/rsf-admin/src/page/qlyInspect/QlyIsptItemList.jsx index 9721c0e..5c90bc8 100644 --- a/rsf-admin/src/page/qlyInspect/QlyIsptItemList.jsx +++ b/rsf-admin/src/page/qlyInspect/QlyIsptItemList.jsx @@ -59,7 +59,6 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <NumberInput source="ispectId" label="table.field.qlyIsptItem.ispectId" />, <TextInput source="matnrCode" label="table.field.qlyIsptItem.matnrCode" />, <TextInput source="maktx" label="table.field.qlyIsptItem.maktx" />, @@ -72,7 +71,6 @@ <NumberInput source="disQty" label="table.field.qlyIsptItem.disQty" />, <NumberInput source="safeQty" label="table.field.qlyIsptItem.safeQty" />, <TextInput source="picPath" label="table.field.qlyIsptItem.picPath" />, - <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" diff --git a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemCreate.jsx b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemCreate.jsx deleted file mode 100644 index 8517b34..0000000 --- a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemCreate.jsx +++ /dev/null @@ -1,190 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - CreateBase, - useTranslate, - TextInput, - NumberInput, - BooleanInput, - DateInput, - SaveButton, - SelectInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - Toolbar, - required, - useDataProvider, - useNotify, - Form, - useCreateController, -} from 'react-admin'; -import { - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Stack, - Grid, - Box, -} from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; - -const QlyIsptItemCreate = (props) => { - const { open, setOpen } = props; - - const translate = useTranslate(); - const notify = useNotify(); - - const handleClose = (event, reason) => { - if (reason !== "backdropClick") { - setOpen(false); - } - }; - - const handleSuccess = async (data) => { - setOpen(false); - notify('common.response.success'); - }; - - const handleError = async (error) => { - notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); - }; - - return ( - <> - <CreateBase - record={{}} - transform={(data) => { - return data; - }} - mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} - > - <Dialog - open={open} - onClose={handleClose} - aria-labelledby="form-dialog-title" - fullWidth - disableRestoreFocus - maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' - > - <Form> - <DialogTitle id="form-dialog-title" sx={{ - position: 'sticky', - top: 0, - backgroundColor: 'background.paper', - zIndex: 1000 - }} - > - {translate('create.title')} - <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> - <DialogCloseButton onClose={handleClose} /> - </Box> - </DialogTitle> - <DialogContent sx={{ mt: 2 }}> - <Grid container rowSpacing={2} columnSpacing={2}> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.qlyIsptItem.ispectId" - source="ispectId" - autoFocus - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.matnrCode" - source="matnrCode" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.maktx" - source="maktx" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.label" - source="label" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.splrName" - source="splrName" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.splrBatch" - source="splrBatch" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.stockBatch" - source="stockBatch" - parse={v => v} - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.qlyIsptItem.rcptQty" - source="rcptQty" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.qlyIsptItem.dlyQty" - source="dlyQty" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.qlyIsptItem.disQty" - source="disQty" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <NumberInput - label="table.field.qlyIsptItem.safeQty" - source="safeQty" - /> - </Grid> - <Grid item xs={6} display="flex" gap={1}> - <TextInput - label="table.field.qlyIsptItem.picPath" - source="picPath" - parse={v => v} - /> - </Grid> - - <Grid item xs={6} display="flex" gap={1}> - <StatusSelectInput /> - </Grid> - <Grid item xs={12} display="flex" gap={1}> - <Stack direction="column" spacing={1} width={'100%'}> - <MemoInput /> - </Stack> - </Grid> - </Grid> - </DialogContent> - <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> - <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > - <SaveButton /> - </Toolbar> - </DialogActions> - </Form> - </Dialog> - </CreateBase> - </> - ) -} - -export default QlyIsptItemCreate; diff --git a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemEdit.jsx b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemEdit.jsx deleted file mode 100644 index 43944ab..0000000 --- a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemEdit.jsx +++ /dev/null @@ -1,162 +0,0 @@ -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'; -import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; - -const FormToolbar = () => { - const { getValues } = useFormContext(); - - return ( - <Toolbar sx={{ justifyContent: 'space-between' }}> - <SaveButton /> - <DeleteButton mutationMode="optimistic" /> - </Toolbar> - ) -} - -const QlyIsptItemEdit = () => { - const translate = useTranslate(); - - return ( - <Edit - redirect="list" - mutationMode={EDIT_MODE} - actions={<CustomerTopToolBar />} - aside={<EditBaseAside />} - > - <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}> - <NumberInput - label="table.field.qlyIsptItem.ispectId" - source="ispectId" - autoFocus - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.matnrCode" - source="matnrCode" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.maktx" - source="maktx" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.label" - source="label" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.splrName" - source="splrName" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.splrBatch" - source="splrBatch" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.stockBatch" - source="stockBatch" - parse={v => v} - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyIsptItem.rcptQty" - source="rcptQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyIsptItem.dlyQty" - source="dlyQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyIsptItem.disQty" - source="disQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <NumberInput - label="table.field.qlyIsptItem.safeQty" - source="safeQty" - /> - </Stack> - <Stack direction='row' gap={2}> - <TextInput - label="table.field.qlyIsptItem.picPath" - source="picPath" - 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 > - ) -} - -export default QlyIsptItemEdit; diff --git a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx deleted file mode 100644 index fa17cff..0000000 --- a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx +++ /dev/null @@ -1,170 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; -import { useNavigate } from 'react-router-dom'; -import { - List, - DatagridConfigurable, - SearchInput, - TopToolbar, - SelectColumnsButton, - EditButton, - FilterButton, - CreateButton, - ExportButton, - BulkDeleteButton, - WrapperField, - useRecordContext, - useTranslate, - useNotify, - useListContext, - FunctionField, - TextField, - NumberField, - DateField, - BooleanField, - ReferenceField, - TextInput, - DateTimeInput, - DateInput, - SelectInput, - NumberInput, - ReferenceInput, - ReferenceArrayInput, - AutocompleteInput, - DeleteButton, -} from 'react-admin'; -import { Box, Typography, Card, Stack } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import QlyIsptItemCreate from "./QlyIsptItemCreate"; -import QlyIsptItemPanel from "./QlyIsptItemPanel"; -import EmptyData from "../components/EmptyData"; -import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; -import PageDrawer from "../components/PageDrawer"; -import MyField from "../components/MyField"; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import * as Common from '@/utils/common'; - -const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ - '& .css-1vooibu-MuiSvgIcon-root': { - height: '.9em' - }, - '& .RaDatagrid-row': { - cursor: 'auto' - }, - '& .column-name': { - }, - '& .opt': { - width: 200 - }, -})); - -const filters = [ - <SearchInput source="condition" alwaysOn />, - - <NumberInput source="ispectId" label="table.field.qlyIsptItem.ispectId" />, - <TextInput source="matnrCode" label="table.field.qlyIsptItem.matnrCode" />, - <TextInput source="maktx" label="table.field.qlyIsptItem.maktx" />, - <TextInput source="label" label="table.field.qlyIsptItem.label" />, - <TextInput source="splrName" label="table.field.qlyIsptItem.splrName" />, - <TextInput source="splrBatch" label="table.field.qlyIsptItem.splrBatch" />, - <TextInput source="stockBatch" label="table.field.qlyIsptItem.stockBatch" />, - <NumberInput source="rcptQty" label="table.field.qlyIsptItem.rcptQty" />, - <NumberInput source="dlyQty" label="table.field.qlyIsptItem.dlyQty" />, - <NumberInput source="disQty" label="table.field.qlyIsptItem.disQty" />, - <NumberInput source="safeQty" label="table.field.qlyIsptItem.safeQty" />, - <TextInput source="picPath" label="table.field.qlyIsptItem.picPath" />, - - <TextInput label="common.field.memo" source="memo" />, - <SelectInput - label="common.field.status" - source="status" - choices={[ - { id: '1', name: 'common.enums.statusTrue' }, - { id: '0', name: 'common.enums.statusFalse' }, - ]} - resettable - />, -] - -const QlyIsptItemList = () => { - const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); - const [drawerVal, setDrawerVal] = useState(false); - - return ( - <Box display="flex"> - <List - sx={{ - flexGrow: 1, - transition: (theme) => - theme.transitions.create(['all'], { - duration: theme.transitions.duration.enteringScreen, - }), - marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, - }} - title={"menu.qlyIsptItem"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} - filters={filters} - sort={{ field: "create_time", order: "desc" }} - actions={( - <TopToolbar> - <FilterButton /> - <MyCreateButton onClick={() => { setCreateDialog(true) }} /> - <SelectColumnsButton preferenceKey='qlyIsptItem' /> - <MyExportButton /> - </TopToolbar> - )} - perPage={DEFAULT_PAGE_SIZE} - > - <StyledDatagrid - preferenceKey='qlyIsptItem' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} - rowClick={(id, resource, record) => false} - omit={['id', 'createTime', 'createBy', 'memo']} - > - <NumberField source="id" /> - <NumberField source="ispectId" label="table.field.qlyIsptItem.ispectId" /> - <TextField source="matnrCode" label="table.field.qlyIsptItem.matnrCode" /> - <TextField source="maktx" label="table.field.qlyIsptItem.maktx" /> - <TextField source="label" label="table.field.qlyIsptItem.label" /> - <TextField source="splrName" label="table.field.qlyIsptItem.splrName" /> - <TextField source="splrBatch" label="table.field.qlyIsptItem.splrBatch" /> - <TextField source="stockBatch" label="table.field.qlyIsptItem.stockBatch" /> - <NumberField source="rcptQty" label="table.field.qlyIsptItem.rcptQty" /> - <NumberField source="isptResult$" label="table.field.qlyIsptItem.isptResult" /> - <NumberField source="dlyQty" label="table.field.qlyIsptItem.dlyQty" /> - <NumberField source="disQty" label="table.field.qlyIsptItem.disQty" /> - <NumberField source="safeQty" label="table.field.qlyIsptItem.safeQty" /> - <TextField source="picPath" label="table.field.qlyIsptItem.picPath" /> - - <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> - <DateField source="updateTime" label="common.field.updateTime" showTime /> - <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> - <DateField source="createTime" label="common.field.createTime" showTime /> - <BooleanField source="statusBool" label="common.field.status" sortable={false} /> - <TextField source="memo" label="common.field.memo" sortable={false} /> - <WrapperField cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> - </WrapperField> - </StyledDatagrid> - </List> - <QlyIsptItemCreate - open={createDialog} - setOpen={setCreateDialog} - /> - <PageDrawer - title='QlyIsptItem Detail' - drawerVal={drawerVal} - setDrawerVal={setDrawerVal} - > - </PageDrawer> - </Box> - ) -} - -export default QlyIsptItemList; diff --git a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemPanel.jsx b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemPanel.jsx deleted file mode 100644 index b769c14..0000000 --- a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemPanel.jsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material'; -import { - useTranslate, - useRecordContext, -} from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; -import * as Common from '@/utils/common' - -const QlyIsptItemPanel = () => { - const record = useRecordContext(); - if (!record) return null; - const translate = useTranslate(); - return ( - <> - <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}> - <CardContent> - <Grid container spacing={2}> - <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}> - <Typography variant="h6" gutterBottom align="left" sx={{ - maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' }, - whiteSpace: 'nowrap', - overflow: 'hidden', - textOverflow: 'ellipsis', - }}> - {Common.camelToPascalWithSpaces(translate('table.field.qlyIsptItem.id'))}: {record.id} - </Typography> - {/* inherit, primary, secondary, textPrimary, textSecondary, error */} - <Typography variant="h6" gutterBottom align="right" > - ID: {record.id} - </Typography> - </Grid> - </Grid> - <Grid container spacing={2}> - <Grid item xs={12} container alignContent="flex-end"> - <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}> - {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo} - </Typography> - </Grid> - </Grid> - <Box height={20}> </Box> - <Grid container spacing={2}> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.ispectId" - property={record.ispectId} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.matnrCode" - property={record.matnrCode} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.maktx" - property={record.maktx} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.label" - property={record.label} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.splrName" - property={record.splrName} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.splrBatch" - property={record.splrBatch} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.stockBatch" - property={record.stockBatch} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.rcptQty" - property={record.rcptQty} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.dlyQty" - property={record.dlyQty} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.disQty" - property={record.disQty} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.safeQty" - property={record.safeQty} - /> - </Grid> - <Grid item xs={6}> - <PanelTypography - title="table.field.qlyIsptItem.picPath" - property={record.picPath} - /> - </Grid> - - </Grid> - </CardContent> - </Card > - </> - ); -}; - -export default QlyIsptItemPanel; diff --git a/rsf-admin/src/page/qlyIsptItem/index.jsx b/rsf-admin/src/page/qlyIsptItem/index.jsx deleted file mode 100644 index 64dff1e..0000000 --- a/rsf-admin/src/page/qlyIsptItem/index.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; -import { - ListGuesser, - EditGuesser, - ShowGuesser, -} from "react-admin"; - -import QlyIsptItemList from "./QlyIsptItemList"; -import QlyIsptItemEdit from "./QlyIsptItemEdit"; - -export default { - list: QlyIsptItemList, - edit: QlyIsptItemEdit, - show: ShowGuesser, - recordRepresentation: (record) => { - return `${record.id}` - } -}; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java index bacd303..6efb8c0 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java @@ -175,25 +175,6 @@ this.memo = memo; } -// WarehouseAreas warehouseAreas = new WarehouseAreas( -// null, // 缂栧彿 -// null, // 鍚嶇О -// null, // 缂栫爜 -// null, // 璐т富鏍囪瘑(*) -// null, // 渚涘簲鍟嗘爣璇� -// null, // 鍏佽璐熷簱瀛�(*) -// null, // 鏄惁鏍囩绠$悊(*)[闈炵┖] -// null, // 鏀寔娣锋斁(*)[闈炵┖] -// null, // 鐘舵�乕闈炵┖] -// null, // 鏄惁鍒犻櫎[闈炵┖] -// null, // 绉熸埛 -// null, // 娣诲姞浜哄憳 -// null, // 娣诲姞鏃堕棿[闈炵┖] -// null, // 淇敼浜哄憳 -// null, // 淇敼鏃堕棿[闈炵┖] -// null // 澶囨敞 -// ); - public String getShipperId$(){ CompanysService service = SpringUtils.getBean(CompanysService.class); Companys shipper = service.getById(this.shipperId); -- Gitblit v1.9.1