From bc25523bd723e92e85f3463edca27f0fe18a7a71 Mon Sep 17 00:00:00 2001
From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com>
Date: 星期日, 13 四月 2025 16:49:19 +0800
Subject: [PATCH] #修改 收货单据界面优化修改

---
 /dev/null                                         |   18 ------------------
 rsf-admin/src/page/ResourceContent.js             |    4 ++--
 rsf-admin/src/config/setting.js                   |    2 ++
 rsf-server/src/main/resources/application-dev.yml |    4 ++--
 4 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/rsf-admin/src/config/setting.js b/rsf-admin/src/config/setting.js
index 2e86d71..23e458a 100644
--- a/rsf-admin/src/config/setting.js
+++ b/rsf-admin/src/config/setting.js
@@ -27,6 +27,8 @@
 
 export const DEFAULT_PAGE_SIZE = 25;
 
+export const DEFAULT_ITEM_PAGE_SIZE = 10;
+
 export const PAGE_DRAWER_WIDTH = 400;
 
 export const REFERENCE_INPUT_PAGESIZE = 1000;
diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js
index 82f7ee1..ab19384 100644
--- a/rsf-admin/src/page/ResourceContent.js
+++ b/rsf-admin/src/page/ResourceContent.js
@@ -32,8 +32,8 @@
 // import serialRuleItem from './system/serialRuleItem';
 import serialRule from './system/serialRule';
 import whMat from './basicInfo/whMat';
-import asnOrder from './asnOrder';
-import asnOrderItem from './asnOrderItem';
+import asnOrder from './orders/asnOrder';
+// import asnOrderItem from './orders/asnOrderItem';
 // import purchaseItem from './purchaseItem';
 import purchase from './purchase';
 import fields from './fields';
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx b/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx
deleted file mode 100644
index 6ace1c2..0000000
--- a/rsf-admin/src/page/asnOrder/AsnOrderCreate.jsx
+++ /dev/null
@@ -1,184 +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 AsnOrderCreate = (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.asnOrder.code"
-                                        source="code"
-                                        parse={v => v}
-                                        autoFocus
-                                    />
-                                </Grid> */}
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrder.poCode"
-                                        source="poCode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrder.poId"
-                                        source="poId"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrder.type"
-                                        source="type"
-                                        parse={v => v}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrder.wkType"
-                                        source="wkType"
-                                        parse={v => v}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                {/* <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrder.anfme"
-                                        source="anfme"
-                                        validate={required()}
-                                    />
-                                </Grid> */}
-                                {/* <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrder.qty"
-                                        source="qty"
-                                        validate={required()}
-                                    />
-                                </Grid> */}
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrder.logisNo"
-                                        source="logisNo"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <DateInput
-                                        label="table.field.asnOrder.arrTime"
-                                        source="arrTime"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <SelectInput
-                                        label="table.field.asnOrder.rleStatus"
-                                        source="rleStatus"
-                                        choices={[
-                                            { id: 0, name: ' 姝e父' },
-                                            { id: 1, name: ' 宸查噴鏀�' },
-                                        ]}
-                                    />
-                                </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 AsnOrderCreate;
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx b/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx
deleted file mode 100644
index 92753d8..0000000
--- a/rsf-admin/src/page/asnOrder/AsnOrderEdit.jsx
+++ /dev/null
@@ -1,158 +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 AsnOrderEdit = () => {
-    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}>
-                            <TextInput
-                                label="table.field.asnOrder.code"
-                                source="code"
-                                parse={v => v}
-                                autoFocus
-                            />
-                        </Stack> */}
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrder.poCode"
-                                source="poCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.asnOrder.poId"
-                                source="poId"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrder.type"
-                                source="type"
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrder.wkType"
-                                source="wkType"
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        {/* <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.asnOrder.anfme"
-                                source="anfme"
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.asnOrder.qty"
-                                source="qty"
-                                validate={required()}
-                            />
-                        </Stack> */}
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrder.logisNo"
-                                source="logisNo"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <DateInput
-                                label="table.field.asnOrder.arrTime"
-                                source="arrTime"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <SelectInput
-                                label="table.field.asnOrder.rleStatus"
-                                source="rleStatus"
-                                choices={[
-                                    { id: 0, name: ' 姝e父' },
-                                    { id: 1, name: ' 宸查噴鏀�' },
-                                ]}
-                                validate={required()}
-                            />
-                        </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 AsnOrderEdit;
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
deleted file mode 100644
index c73a22c..0000000
--- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
+++ /dev/null
@@ -1,335 +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,
-  useRefresh,
-  useListContext,
-  FunctionField,
-  TextField,
-  NumberField,
-  DateField,
-  BooleanField,
-  ReferenceField,
-  TextInput,
-  DateTimeInput,
-  DateInput,
-  SelectInput,
-  NumberInput,
-  ReferenceInput,
-  ReferenceArrayInput,
-  AutocompleteInput,
-  DeleteButton,
-  Button,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import AsnOrderModal from "./AsnOrderModal";
-import AsnOrderPanel from "./AsnOrderPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import BillStatusField from '../components/BillStatusField';
-import ConfirmButton from '../components/ConfirmButton';
-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';
-import ConstructionIcon from "@mui/icons-material/Construction";
-import FileDownloadIcon from '@mui/icons-material/FileDownload';
-import EditIcon from '@mui/icons-material/Edit';
-import TaskIcon from '@mui/icons-material/Task';
-import CloseIcon from '@mui/icons-material/Close';
-import request from '@/utils/request';
-import DictionarySelect from "../components/DictionarySelect";
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
-  '& .css-1vooibu-MuiSvgIcon-root': {
-    height: '.9em'
-  },
-  '& .RaDatagrid-row': {
-    cursor: 'auto'
-  },
-  '& .column-name': {
-  },
-  '& .opt': {
-    width: 320
-  },
-  '& .status': {
-    width: 100
-  },
-}));
-
-const filters = [
-  <SearchInput source="condition" alwaysOn />,
-  <TextInput source="code" label="table.field.asnOrder.code" />,
-  <TextInput source="poCode" label="table.field.asnOrder.poCode" />,
-  <NumberInput source="poId" label="table.field.asnOrder.poId" />,
-  <TextInput source="type" label="table.field.asnOrder.type" />,
-  <ReferenceInput source="wkType" reference="dictData" filter={{dictTypeCode: 'sys_business_type'}}  label="table.field.asnOrder.wkType">
-    <AutocompleteInput label="table.field.asnOrder.wkType" optionValue="value" />
-  </ReferenceInput>,
-  <NumberInput source="anfme" label="table.field.asnOrder.anfme" />,
-  <NumberInput source="qty" label="table.field.asnOrder.qty" />,
-  <TextInput source="logisNo" label="table.field.asnOrder.logisNo" />,
-  <DateInput source="arrTime" label="table.field.asnOrder.arrTime" />,
-  <SelectInput source="rleStatus" label="table.field.asnOrder.rleStatus"
-    choices={[
-      { id: 0, name: ' 姝e父' },
-      { id: 1, name: ' 宸查噴鏀�' },
-    ]}
-  />,
-
-  <TextInput label="common.field.memo" source="memo" />,
-  <DictionarySelect
-    label='table.field.asnOrder.exceStatus'
-    name="exceStatus"
-    dictTypeCode="sys_asn_exce_status"
-    alwaysOn
-  />,
-
-]
-
-const AsnOrderList = () => {
-  const translate = useTranslate();
-  const [createDialog, setCreateDialog] = useState(false);
-  const [drawerVal, setDrawerVal] = useState(false);
-  const [modalType, setmodalType] = useState(0);
-  const billReload = useRef();
-  const navigate = useNavigate();
-  const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
-
-  const assign = (record) => {
-    navigate(`/asnOrderItem?asnId=${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.asnOrder"}
-        empty={<EmptyData onClick={() => { setCreateDialog(true); setmodalType(0) }} />}
-        filters={filters}
-        sort={{ field: "create_time", order: "desc" }}
-        actions={(
-          <TopToolbar>
-            <FilterButton />
-            <MyCreateButton onClick={() => { setCreateDialog(true); setmodalType(0) }} />
-            <SelectColumnsButton preferenceKey='asnOrder' />
-            <MyExportButton />
-          </TopToolbar>
-        )}
-        perPage={DEFAULT_PAGE_SIZE}
-      >
-        <StyledDatagrid
-          sx={{ width: '100%' }}
-          preferenceKey='asnOrder'
-          bulkActionButtons={<> <InspectionsButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>}
-          rowClick={() => false}
-          expand={<AsnOrderPanel billReload={billReload} />}
-          expandSingle={true}
-          omit={['id', 'createTime', 'createBy', 'memo', 'poId']}
-        >
-          <NumberField source="id" />
-          <TextField source="code" label="table.field.asnOrder.code" />
-          <TextField source="poCode" label="table.field.asnOrder.poCode" />
-          <NumberField source="poId" label="table.field.asnOrder.poId" />
-          <TextField source="type$" label="table.field.asnOrder.type" />
-          {/* <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
-            <TextField source="wkType" />
-          </ReferenceField> */}
-          {/* <AutocompleteInput choices={dicts} optionText="label" label="table.field.qlyInspect.wkType" source="wkType" optionValue="value" /> */}
-          <TextField source="wkType$" label="table.field.asnOrder.wkType" />
-          <NumberField source="anfme" label="table.field.asnOrder.anfme" />
-          <NumberField source="qty" label="table.field.asnOrder.qty" />
-          <TextField source="logisNo" label="table.field.asnOrder.logisNo" />
-          <DateField source="arrTime" label="table.field.asnOrder.arrTime" showTime />
-          <TextField source="rleStatus$" label="table.field.asnOrder.rleStatus" sortable={false} />
-          <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 />
-          <BillStatusField cellClassName="status" source="exceStatus" label="table.field.asnOrder.exceStatus" />
-          <TextField source="memo" label="common.field.memo" sortable={false} />
-          <WrapperField cellClassName="opt" label="common.field.opt" width={300} >
-            {/* <Button label="toolbar.print" onClick={print}>
-              <FileDownloadIcon />
-            </Button> */}
-            {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */}
-            <MyButton setCreateDialog={setCreateDialog} setmodalType={setmodalType} />
-            {/* <Button
-              color="primary"
-              startIcon={<EditIcon />}
-              onClick={(event, record) => handleEditClick(record)}
-              sx={{ ml: 1 }}
-              label={'ra.action.edit'}
-            >
-            </Button> */}
-            <InspectionButton />
-            <CompleteButton />
-            {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
-            <CloseButton />
-          </WrapperField>
-        </StyledDatagrid>
-      </List>
-      <AsnOrderModal
-        open={createDialog}
-        setOpen={setCreateDialog}
-        asnId={modalType}
-        billReload={billReload}
-      />
-      <PageDrawer
-        title='AsnOrder Detail'
-        drawerVal={drawerVal}
-        setDrawerVal={setDrawerVal}
-      >
-      </PageDrawer>
-    </Box >
-  )
-}
-export default AsnOrderList;
-
-const MyButton = ({ setCreateDialog, setmodalType }) => {
-  const record = useRecordContext();
-  const handleEditClick = () => {
-    const id = record.id;
-    setmodalType(id);
-    setCreateDialog(true);
-
-  };
-  return (
-    <Button
-      color="primary"
-      startIcon={<EditIcon />}
-      onClick={() => handleEditClick()}
-      sx={{ ml: 1 }}
-      label={'ra.action.edit'}
-    >
-    </Button>
-  )
-}
-
-const InspectionButton = () => {
-  const record = useRecordContext();
-  const notify = useNotify();
-  const refresh = useRefresh();
-  const inspection = () => {
-    requestInspect([record])
-  };
-
-  const requestInspect = async (rows) => {
-    const { data: { code, data, msg } } = await request.post(`/asnOrder/inspect`, rows);
-
-    if (code === 200) {
-      notify(msg);
-      refresh()
-    } else {
-      notify(msg);
-    }
-  }
-
-
-  return (
-    <Button onClick={inspection} label={"toolbar.inspection"}>
-      <ConstructionIcon />
-    </Button>
-  )
-}
-
-const InspectionsButton = () => {
-  const { selectedIds, onUnselectItems, data } = useListContext();
-  const notify = useNotify();
-  const refresh = useRefresh();
-  const inspection = () => {
-    if (selectedIds.length === 0) {
-      notify('璇烽�夋嫨閫氱煡鍗�');
-      return;
-    } else {
-      const rows = data.filter((item) => selectedIds.includes(item.id))
-      requestInspect(rows)
-    }
-  };
-
-  const requestInspect = async (rows) => {
-    const { data: { code, data, msg } } = await request.post(`/asnOrder/inspect`, rows);
-
-    if (code === 200) {
-      notify(msg);
-      refresh()
-    } else {
-      notify(msg);
-    }
-  }
-
-
-  return (
-    <Button onClick={inspection} label={"toolbar.inspection"}>
-      <ConstructionIcon />
-    </Button>
-  )
-}
-
-const CompleteButton = () => {
-  const record = useRecordContext();
-  const notify = useNotify();
-  const refresh = useRefresh();
-  const requestComplete = async () => {
-    const { data: { code, data, msg } } = await request.post(`/asnOrder/complete/${record.id}`);
-
-    if (code === 200) {
-      notify(msg);
-      refresh()
-    } else {
-      notify(msg);
-    }
-  }
-
-
-  return (
-    record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="success">
-      <TaskIcon />
-    </Button> : <ConfirmButton label={"toolbar.complete"} color="success" data={'褰撳墠鏀惰揣鏁伴噺灏忎簬璁″垝鏁伴噺锛屾槸鍚︾‘璁ゅ畬鎴�'} startIcon={<TaskIcon />} onConfirm={requestComplete} />)
-
-  )
-
-
-}
-
-const CloseButton = () => {
-  const record = useRecordContext();
-  const notify = useNotify();
-  const refresh = useRefresh();
-  const requestClose = async () => {
-    const { data: { code, data, msg } } = await request.post(`/asnOrder/close/${record.id}`);
-
-    if (code === 200) {
-      notify(msg);
-      refresh()
-    } else {
-      notify(msg);
-    }
-  }
-
-  return (
-    <ConfirmButton label={"toolbar.close"} color="error" data={'纭鏄惁鍏抽棴锛�'} startIcon={<CloseIcon />} onConfirm={requestClose} />
-  )
-}
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
deleted file mode 100644
index f12bc46..0000000
--- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
+++ /dev/null
@@ -1,514 +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,
-    useListContext,
-    useRefresh,
-} from 'react-admin';
-import {
-    Dialog,
-    DialogActions,
-    DialogContent,
-    DialogTitle,
-    Stack,
-    Grid,
-    TextField,
-    Box,
-    Button,
-    Paper,
-    TableContainer,
-    Table,
-    TableHead,
-    TableBody,
-    TableRow,
-    TableCell,
-    Tooltip,
-    IconButton,
-    styled
-
-
-} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import ConfirmButton from "../components/ConfirmButton";
-import AsnWareModal from "./AsnWareModal";
-import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
-import SaveIcon from '@mui/icons-material/Save';
-import request from '@/utils/request';
-import { Add, Edit, Delete } from '@mui/icons-material';
-import _, { set } from 'lodash';
-import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
-import DictionarySelect from "../components/DictionarySelect";
-import DictSelect from "../components/DictSelect";
-
-const AsnOrderModal = (props) => {
-    const { open, setOpen, asnId, billReload } = props;
-
-    const translate = useTranslate();
-    const notify = useNotify();
-    const refresh = useRefresh();
-    const [disabled, setDisabled] = useState(false)
-
-    const [createDialog, setCreateDialog] = useState(false);
-
-    const tableRef = useRef();
-
-    useEffect(() => {
-        if (open && asnId !== 0) {
-            requestGetHead()
-            requestGetBody()
-        }
-        setDisabled(false)
-    }, [open])
-
-    const handleClose = (event, reason) => {
-        if (reason !== "backdropClick") {
-            setOpen(false);
-            refresh();
-            setFormData({ type: '', wkType: '' })
-            setTableData([])
-        }
-    };
-
-    const [formData, setFormData] = useState({
-        type: '',
-        wkType: '',
-        poCode: '',
-        logisNo: '',
-        arrTime: ''
-    });
-
-    const [tabelData, setTableData] = useState([]);
-
-
-    const handleChange = (value, name) => {
-        setFormData((prevData) => ({
-            ...prevData,
-            [name]: value
-        }));
-    };
-
-    const resetData = () => {
-        setFormData({
-            type: '',
-            wkType: '',
-            poCode: '',
-            logisNo: '',
-            arrTime: ''
-        })
-        setTableData([])
-    }
-
-    const setFinally = () => {
-        const rows = tableRef.current.state.editRows;
-        for (const key in rows) {
-            const find = tabelData.find(item => item.matnrId === +key);
-            find.anfme = rows[key].anfme.value;
-        }
-        setTableData([...tabelData]);
-    }
-
-    const handleSubmit = async () => {
-        setFinally()
-        setDisabled(true)
-
-        if (asnId === 0) {
-            const parmas = {
-                "orders": formData,
-                "items": tabelData,
-            }
-
-            const res = await request.post(`/asnOrder/items/save`, parmas);
-            if (res?.data?.code === 200) {
-                setOpen(false);
-                refresh();
-                billReload?.current()
-                resetData()
-            } else {
-                notify(res.data.msg);
-            }
-        } else {
-            const parmas = {
-                "orders": formData,
-                "items": tabelData,
-            }
-            const res = await request.post(`/asnOrder/items/update`, parmas);
-            if (res?.data?.code === 200) {
-                setOpen(false);
-                refresh();
-                billReload?.current()
-                resetData()
-            } else {
-                notify(res.data.msg);
-            }
-        }
-        setDisabled(false)
-
-    };
-
-
-    const handleDelete = async () => {
-        const res = await request.post(`/asnOrder/remove/${asnId}`);
-        if (res?.data?.code === 200) {
-            setOpen(false);
-            refresh();
-        } else {
-            notify(res.data.msg);
-        }
-    };
-
-    const requestGetHead = async () => {
-        const res = await request.get(`/asnOrder/${asnId}`);
-        if (res?.data?.code === 200) {
-            setFormData(res.data.data)
-        } else {
-            notify(res.data.msg);
-        }
-    }
-
-    const requestGetBody = async () => {
-        const res = await request.post(`/asnOrderItem/page`, { asnId });
-        if (res?.data?.code === 200) {
-            setTableData(res.data.data.records)
-        } else {
-            notify(res.data.msg);
-        }
-    }
-
-    const [selectedRows, setSelectedRows] = useState([]);
-
-
-
-    const handleDeleteItem = () => {
-        const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId));
-        setTableData(newTableData);
-    }
-
-    return (
-        <>
-            <Dialog
-                open={open}
-                onClose={handleClose}
-                aria-labelledby="form-dialog-title"
-                aria-hidden
-                fullWidth
-                disableRestoreFocus
-                maxWidth="lg"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
-            >
-                <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 }}>
-                    <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
-                        <Form>
-                            <Grid container spacing={2}>
-                                <Grid item md={3}>
-                                    <DictSelect
-                                        label={translate("table.field.asnOrder.type")}
-                                        value={formData.type}
-                                        onChange={(e) => handleChange(e.target.value, 'type')}
-                                        dictTypeCode="sys_order_type"
-                                        required
-                                    />
-                                </Grid>
-                                <Grid item md={3}>
-                                    <DictSelect
-                                        label={translate("table.field.asnOrder.wkType")}
-                                        value={formData.wkType}
-                                        onChange={(e) => handleChange(e.target.value, 'wkType')}
-                                        dictTypeCode="sys_business_type"
-                                        required
-                                    />
-                                </Grid>
-                                <Grid item md={3}>
-                                    <TextField
-                                        label={translate("table.field.asnOrder.poCode")}
-                                        value={formData.poCode}
-                                        onChange={(e) => handleChange(e.target.value, 'poCode')}
-                                    />
-                                </Grid>
-                                <Grid item md={3}>
-                                    <TextField
-                                        label={translate("table.field.asnOrder.logisNo")}
-                                        value={formData.logisNo}
-                                        onChange={(e) => handleChange(e.target.value, 'logisNo')}
-                                    />
-                                </Grid>
-
-                                <Grid item md={3}>
-                                    {/* <TextField
-                                        label={translate("table.field.asnOrder.arrTime")}
-                                        value={formData.arrTime}
-                                        onChange={(e) => handleChange(e.target.value, 'arrTime')}
-                                    /> */}
-                                    <DateInput
-                                        source="arrTime"
-                                        label="table.field.asnOrder.arrTime"
-                                        value={formData.arrTime}
-                                        onChange={(e) => handleChange(e.target.value, 'arrTime')}
-                                    />
-
-                                </Grid>
-                            </Grid>
-                        </Form>
-                    </Box>
-
-                    <Box sx={{ mt: 2 }}>
-                        <Stack direction="row" spacing={2}>
-                            <Button variant="contained" onClick={() => setCreateDialog(true)}>鏂板鐗╂枡</Button>
-                            {/* {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} */}
-                            <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} />
-                        </Stack>
-
-                    </Box>
-
-                    <Box sx={{ mt: 2 }}>
-                        <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable>
-                    </Box>
-                </DialogContent>
-                <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
-                    <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }}  >
-                        <Button disabled={disabled} onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}>
-                            {translate('toolbar.confirm')}
-                        </Button>
-                    </Toolbar>
-                </DialogActions>
-
-            </Dialog>
-
-            <AsnWareModal
-                open={createDialog}
-                setOpen={setCreateDialog}
-                data={tabelData}
-                setData={setTableData}
-            />
-        </>
-    )
-}
-
-export default AsnOrderModal;
-
-const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef }) => {
-    const translate = useTranslate();
-    const notify = useNotify();
-
-    const [columns, setColumns] = useState([
-
-        {
-            field: 'maktx',
-            headerName: translate('table.field.asnOrderItem.maktx'),
-            width: 250,
-            editable: false,
-        },
-        {
-            field: 'matnrCode',
-            headerName: translate('table.field.asnOrderItem.matnrCode'),
-            width: 130,
-            editable: false,
-        },
-        {
-            field: 'anfme',
-            headerName: translate('table.field.asnOrderItem.purQty'),
-            type: 'number',
-            minWidth: 100,
-            flex: 1,
-            editable: true,
-            valueFormatter: (val) => val < 0 ? 0 : val
-        },
-        {
-            field: 'splrCode',
-            headerName: translate('table.field.asnOrderItem.splrCode'),
-            minWidth: 100,
-            flex: 1,
-            editable: true,
-        },
-        {
-            field: 'splrName',
-            headerName: translate('table.field.asnOrderItem.splrName'),
-            minWidth: 100,
-            flex: 1,
-            editable: true,
-        },
-        // {
-        //     field: 'packName',
-        //     headerName: translate('table.field.asnOrderItem.packName'),
-        //     minWidth: 100,
-        //     flex: 1,
-        //     editable: true,
-        // },
-        // {
-        //     field: 'poDetlId',
-        //     headerName: translate('table.field.asnOrderItem.poDetlId'),
-        //     minWidth: 100,
-        //     flex: 1,
-        // },
-        {
-            field: 'poCode',
-            headerName: translate('table.field.asnOrderItem.poDetlCode'),
-            minWidth: 100,
-            flex: 1,
-            editable: true,
-        },
-
-        {
-            field: 'stockUnit',
-            headerName: translate('table.field.asnOrderItem.stockUnit'),
-            minWidth: 100,
-            flex: 1,
-            editable: false,
-        },
-        // {
-        //     field: 'purQty',
-        //     headerName: translate('table.field.asnOrderItem.purQty'),
-        //     minWidth: 100,
-        //     flex: 1,
-        //     editable: true,
-        // },
-        {
-            field: 'purUnit',
-            headerName: translate('table.field.asnOrderItem.purUnit'),
-            minWidth: 100,
-            flex: 1,
-            editable: false,
-        },
-
-
-
-    ])
-
-    const action = {
-        field: 'action',
-        headerName: '鎿嶄綔',
-        width: 70,
-        lockPosition: 'left',
-        renderCell: (params) => (
-            <Tooltip title="Delete">
-                <IconButton onClick={() => handleDelete(params.row)}>
-                    <Delete />
-                </IconButton>
-            </Tooltip>
-        ),
-
-    }
-
-    let cdata = useRef([]);
-
-
-    useEffect(() => {
-        getDynamicFields();
-    }, []);
-
-    useEffect(() => {
-        cdata.current = tabelData
-    }, [tabelData]);
-
-
-    const getDynamicFields = async () => {
-        const {
-            data: { code, data, msg },
-        } = await request.get("/fields/enable/list");
-        if (code === 200) {
-            const cols = data.map(el => ({
-                field: el.fields,
-                headerName: el.fieldsAlise,
-                minWidth: 100,
-                flex: 1,
-                editable: false
-            }))
-            setColumns([...columns, ...cols, action])
-        } else {
-            notify(msg);
-        }
-    }
-
-
-
-    const handleDelete = (row) => {
-        const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
-        setTableData(newData);
-    };
-
-
-    const processRowUpdate = (newRow, oldRow) => {
-        const rows = tabelData.map((r) =>
-            r.matnrId === newRow.matnrId ? { ...newRow } : r
-        )
-        setTableData(rows)
-        // setTableData((prevData) =>
-        //     prevData.map((r) =>
-        //         r.matnrId === newRow.matnrId ? { ...newRow } : r
-        //     )
-
-        // );
-
-        return newRow;
-    };
-
-
-
-    const handleSelectionChange = (ids) => {
-        setSelectedRows(ids)
-
-    };
-
-    tableRef.current = useGridApiRef();
-
-
-    return (
-        <div style={{ height: 400, width: '100%' }}>
-            <DataGrid
-                apiRef={tableRef}
-                rows={tabelData}
-                columns={columns}
-                disableRowSelectionOnClick
-                getRowId={(row) => row.matnrId}
-                disableColumnFilter
-                disableColumnSelector
-                disableColumnSorting
-                disableMultipleColumnsSorting
-                processRowUpdate={processRowUpdate}
-                initialState={{
-                    pagination: {
-                        paginationModel: {
-                            pageSize: 25,
-                        },
-                    },
-                }}
-                pageSizeOptions={[10, 25, 50, 100]}
-                editMode="row"
-                checkboxSelection
-                onRowSelectionModelChange={handleSelectionChange}
-                selectionModel={selectedRows}
-                sx={{
-                    '& .MuiDataGrid-cell input': {
-                        border: '1px solid #ccc'
-                    },
-                }}
-            />
-        </div>
-    );
-};
-
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
deleted file mode 100644
index bf4c274..0000000
--- a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
+++ /dev/null
@@ -1,239 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Button, TextField, Tooltip, Paper, TableContainer, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';
-import {
-    useTranslate,
-    useRecordContext,
-    useNotify,
-    useRefresh,
-    useListContext,
-} 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';
-import debounce from 'lodash/debounce';
-import { DataGrid } from '@mui/x-data-grid';
-import PrintModal from './PrintModal';
-import PrintIcon from '@mui/icons-material/Print';
-const AsnOrderPanel = ({ billReload }) => {
-    const record = useRecordContext();
-    if (!record) return null;
-    const translate = useTranslate();
-    const notify = useNotify();
-    const [rows, setRows] = useState([]);
-    const [maktx, setMaktx] = useState('');
-    const asnId = record.id;
-
-    useEffect(() => {
-        debouncedHttp({ maktx });
-    }, [asnId, maktx]);
-
-    const http = async (parmas) => {
-        const res = await request.post('/asnOrderItem/page', { ...parmas, asnId });
-        if (res?.data?.code === 200) {
-            setRows(res.data.data.records)
-        } else {
-            notify(res.data.msg);
-        }
-    }
-
-
-    useEffect(() => {
-        billReload.current = http
-    }, []);
-
-
-    const debouncedHttp = useMemo(() => debounce(http, 300), []);
-
-    const columns = [
-        {
-            field: 'asnId',
-            headerName: translate('table.field.asnOrderItem.asnId')
-        },
-        {
-            field: 'asnCode',
-            headerName: translate('table.field.asnOrderItem.asnCode'),
-            width: 150,
-        },
-        // {
-        //     field: 'poDetlId',
-        //     headerName: translate('table.field.asnOrderItem.poDetlId')
-        // },
-        {
-            field: 'poCode',
-            headerName: translate('table.field.asnOrderItem.poDetlCode')
-        },
-        {
-            field: 'matnrCode',
-            headerName: translate('table.field.asnOrderItem.matnrCode'),
-            width: 150,
-        },
-        {
-            field: 'maktx',
-            headerName: translate('table.field.asnOrderItem.maktx'),
-            width: 200,
-        },
-        {
-            field: 'anfme',
-            headerName: translate('table.field.asnOrderItem.purQty')
-        },
-        {
-            field: 'stockUnit',
-            headerName: translate('table.field.asnOrderItem.stockUnit')
-        },
-        // {
-        //     field: 'purQty',
-        //     headerName: translate('table.field.asnOrderItem.purQty')
-        // },
-        {
-            field: 'purUnit',
-            headerName: translate('table.field.asnOrderItem.purUnit')
-        },
-        {
-            field: 'qty',
-            headerName: translate('table.field.asnOrderItem.qty')
-        },
-        {
-            field: 'splrBatch',
-            headerName: translate('table.field.asnOrderItem.splrBatch')
-        },
-        {
-            field: 'splrCode',
-            headerName: translate('table.field.asnOrderItem.splrCode')
-        },
-        {
-            field: 'splrName',
-            headerName: translate('table.field.asnOrderItem.splrName')
-        },
-        {
-            field: 'trackCode',
-            headerName: translate('table.field.asnOrderItem.barcode'),
-            width: 150
-        },
-        {
-            field: 'prodTime',
-            headerName: translate('table.field.asnOrderItem.prodTime')
-        },
-        {
-            field: 'packName',
-            headerName: translate('table.field.asnOrderItem.packName')
-        },
-        {
-            field: 'action',
-            headerName: '鎿嶄綔',
-            width: 70,
-            lockPosition: 'left',
-            renderCell: (params) => (
-                <PrintButton rows={[params.row.id]} />
-            ),
-
-        },]
-
-    const [selectedRows, setSelectedRows] = useState([]);
-
-    const handleSelectionChange = (ids) => {
-        setSelectedRows(ids)
-
-    };
-    const maktxChange = (value) => {
-        setMaktx(value)
-    }
-
-
-    return (
-        <Box sx={{
-            position: 'relative',
-            padding: '5px 10px'
-        }}>
-            <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '4px', alignItems: 'center' }}>
-                <TextField value={maktx} onChange={(e) => maktxChange(e.target.value)} label="鎼滅储鐗╂枡" sx={{ width: '300px' }} size="small" />
-
-                <div style={{ display: 'flex', gap: '10px' }}>
-                    <PrintsButton rows={selectedRows} />
-                </div>
-            </div>
-
-
-            <DataGrid
-                sx={{ width: 'calc(100vw - 280px)' }}
-                size="small"
-                rows={rows}
-                columns={columns}
-                disableRowSelectionOnClick
-                checkboxSelection
-                onRowSelectionModelChange={handleSelectionChange}
-                selectionModel={selectedRows}
-                disableColumnMenu={true}
-                disableColumnSorting
-                disableMultipleColumnsSorting
-                columnHeaderHeight={40}
-                rowHeight={42}
-                initialState={{
-                    pagination: {
-                        paginationModel: {
-                            pageSize: 10,
-                        },
-                    },
-                }}
-                pageSizeOptions={[10, 25, 50]}
-            />
-        </Box >
-
-    );
-};
-
-export default AsnOrderPanel;
-
-const PrintsButton = ({ rows }) => {
-    const record = useRecordContext();
-    const { resource, selectedIds } = useListContext();
-    const notify = useNotify();
-    const refresh = useRefresh();
-    const translate = useTranslate();
-
-    const [createDialog, setCreateDialog] = useState(false);
-
-    const modalChange = () => {
-        if (rows?.length === 0) {
-            notify('璇烽�夋嫨鐗╂枡');
-            return;
-        } else {
-            setCreateDialog(true)
-        }
-
-    }
-
-    return (
-        <>
-            <Button size="small" color="secondary" onClick={modalChange} startIcon={<PrintIcon />}>{translate("toolbar.batchPrint")}</Button>
-
-            <PrintModal
-                open={createDialog}
-                setOpen={setCreateDialog}
-                rows={rows}
-            />
-        </>
-    )
-}
-
-const PrintButton = ({ rows }) => {
-    const record = useRecordContext();
-
-    const notify = useNotify();
-    const refresh = useRefresh();
-
-    const [createDialog, setCreateDialog] = useState(false);
-    const translate = useTranslate();
-
-    return (
-        <>
-            <Button size="small" color="secondary" onClick={() => setCreateDialog(true)} startIcon={<PrintIcon />}>{translate("toolbar.print")}</Button>
-
-            <PrintModal
-                open={createDialog}
-                setOpen={setCreateDialog}
-                rows={rows}
-            />
-        </>
-    )
-}
diff --git a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
deleted file mode 100644
index bf73182..0000000
--- a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
+++ /dev/null
@@ -1,258 +0,0 @@
-import React, { useState, useEffect } from "react";
-import {
-    Dialog,
-    DialogActions,
-    DialogContent,
-    DialogTitle,
-    Stack,
-    Grid,
-    TextField,
-    Box,
-    Button,
-    Paper,
-    styled
-} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import ConfirmButton from "../components/ConfirmButton";
-import { useTranslate, useNotify, useRefresh } from 'react-admin';
-import request from '@/utils/request';
-import { DataGrid } from '@mui/x-data-grid';
-import SaveIcon from '@mui/icons-material/Save';
-import TreeSelectInput from "@/page/components/TreeSelectInput";
-const AsnWareModal = (props) => {
-    const { open, setOpen, data, setData } = props;
-
-    const translate = useTranslate();
-    const notify = useNotify();
-    const refresh = useRefresh();
-
-    const asnId = '';
-
-    const handleClose = (event, reason) => {
-        if (reason !== "backdropClick") {
-            setOpen(false);
-        }
-    };
-
-    const [formData, setFormData] = useState({
-        name: '',
-        code: '',
-        groupId: 0
-    });
-
-    const [tableData, setTableData] = useState([]);
-    const [dyFields, setDyFields] = useState([]);
-    const [selectedRows, setSelectedRows] = useState([]);
-
-    const handleChange = (e) => {
-        const { name, value } = e.target;
-        setFormData((prevData) => ({
-            ...prevData,
-            [name]: value
-        }));
-    };
-
-    const reset = () => {
-        setFormData({
-            name: '',
-            code: '',
-            groupId: 0
-        })
-    }
-
-    const handleSubmit = () => {
-        const hasarr = data.map(el => +el.matnrId)
-        const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id)));
-        const value = selectedData.map((el => {
-            const dynamicFields = dyFields.reduce((acc, item) => {
-                acc[item.fields] = el['extendFields']?.[item.fields] || '';
-                return acc;
-            }, {});
-            return {
-                matnrId: el.id,
-                maktx: el.name,
-                matnrCode: el.code,
-                stockUnit: el.stockUnit || '',
-                purUnit: el.purchaseUnit || '',
-                ...dynamicFields
-            }
-        }))
-        setData([...data, ...value]);
-        setOpen(false);
-        reset();
-    };
-
-    const getData = async () => {
-        const res = await request.post(`/matnr/page`, {
-            ...formData,
-            current: 1,
-            pageSize: 100,
-            orderBy: "create_time desc"
-        });
-        if (res?.data?.code === 200) {
-            setTableData(res.data.data.records);
-        } else {
-            notify(res.data.msg);
-        }
-    };
-
-    useEffect(() => {
-        getData();
-    }, [open]);
-
-    const handleSearch = () => {
-        getData()
-    };
-
-    return (
-        <Dialog
-            open={open}
-            onClose={handleClose}
-            aria-labelledby="form-dialog-title"
-            fullWidth
-            disableRestoreFocus
-            maxWidth="lg"
-        >
-            <DialogTitle id="form-dialog-title" sx={{
-                position: 'sticky',
-                top: 0,
-                backgroundColor: 'background.paper',
-                zIndex: 1000
-            }}>
-                閫夋嫨鐗╂枡
-                <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
-                    <DialogCloseButton onClose={handleClose} />
-                </Box>
-            </DialogTitle>
-            <DialogContent sx={{ mt: 2 }}>
-                <Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
-                    <Grid container spacing={2}>
-                        <Grid item md={4}>
-                            <TextField
-                                label={translate('table.field.matnr.name')}
-                                name="name"
-                                value={formData.name}
-                                onChange={handleChange}
-                                size="small"
-                            />
-                        </Grid>
-                        <Grid item md={4}>
-                            <TextField
-                                label={translate('table.field.matnr.code')}
-                                name="code"
-                                value={formData.code}
-                                onChange={handleChange}
-                                size="small"
-                            />
-                        </Grid>
-                        <Grid item md={4}>
-                            <TreeSelectInput
-                                label="table.field.matnr.groupId"
-                                value={formData.groupId}
-                                resource={'matnrGroup'}
-                                source="groupId"
-                                name="groupId"
-                                onChange={handleChange}
-                            />
-                        </Grid>
-                    </Grid>
-                </Box>
-                <Box sx={{ mt: 2 }}>
-                    <Stack direction="row" spacing={2}>
-                        <Button variant="contained" onClick={handleSearch}>鎼滅储</Button>
-                    </Stack>
-                </Box>
-                <Box sx={{ mt: 2, height: 400, width: '100%' }}>
-                    <AsnWareModalTable
-                        tableData={tableData}
-                        setTableData={setTableData}
-                        dyFields={dyFields}
-                        setDyFields={setDyFields}
-                        selectedRows={selectedRows}
-                        setSelectedRows={setSelectedRows}
-                    />
-                </Box>
-            </DialogContent>
-            <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
-                <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}>
-                    <Button onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}>
-                        {translate('toolbar.confirm')}
-                    </Button>
-                </Box>
-            </DialogActions>
-        </Dialog>
-    );
-};
-
-export default AsnWareModal;
-
-const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
-    const translate = useTranslate();
-    const notify = useNotify();
-
-    const [columns, setColumns] = useState([
-        // { field: 'id', headerName: 'ID', width: 100 },
-        { field: 'name', headerName: translate('table.field.matnr.name'), width: 300 },
-        { field: 'code', headerName: translate('table.field.matnr.code'), width: 200 },
-        { field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 },
-        { field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 },
-        { field: 'model', headerName: translate('table.field.matnr.model'), width: 100 },
-        { field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 },
-
-        { field: 'describle', headerName: translate('table.field.matnr.describle'), width: 100 },
-        { field: 'nromNum', headerName: translate('table.field.matnr.nromNum'), width: 100 },
-        { field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 },
-        { field: 'purchaseUnit', headerName: translate('table.field.matnr.purUnit'), width: 100 },
-        { field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 },
-        { field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
-    ])
-
-
-
-    const handleSelectionChange = (ids) => {
-        setSelectedRows(ids)
-
-    };
-
-    useEffect(() => {
-        getDynamicFields();
-    }, []);
-
-    const getDynamicFields = async () => {
-        const {
-            data: { code, data, msg },
-        } = await request.get("/fields/enable/list");
-        if (code === 200) {
-            const cols = data.map(el => ({
-                field: el.fields,
-                headerName: el.fieldsAlise,
-                minWidth: 100,
-                flex: 1,
-                editable: el.unique,
-                valueGetter: (value, row) => {
-                    return row.extendFields?.[el.fields] || '';
-                },
-            }))
-            setDyFields(data)
-            setColumns([...columns, ...cols])
-        } else {
-            notify(msg);
-        }
-    }
-
-    return (
-        <div style={{ height: 400, width: '100%' }}>
-            <DataGrid
-                size="small"
-                rows={tableData}
-                columns={columns}
-                checkboxSelection
-                onRowSelectionModelChange={handleSelectionChange}
-                selectionModel={selectedRows}
-                disableColumnMenu={true}
-                disableColumnSorting
-                disableMultipleColumnsSorting
-            />
-        </div>
-    );
-};
\ No newline at end of file
diff --git a/rsf-admin/src/page/asnOrder/PrintModal.jsx b/rsf-admin/src/page/asnOrder/PrintModal.jsx
deleted file mode 100644
index 2ad47fd..0000000
--- a/rsf-admin/src/page/asnOrder/PrintModal.jsx
+++ /dev/null
@@ -1,310 +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,
-    useListContext,
-    useRefresh,
-} from 'react-admin';
-import {
-    Dialog,
-    DialogActions,
-    DialogContent,
-    DialogTitle,
-    Grid,
-    TextField,
-    Box,
-    Button,
-    Radio,
-    RadioGroup,
-    FormControlLabel,
-    FormControl,
-    FormLabel,
-    TableRow,
-    TableCell,
-    Tooltip,
-    IconButton,
-    styled
-
-
-} from '@mui/material';
-import DialogCloseButton from "@/page/components/DialogCloseButton";
-import DictionarySelect from "@/page/components/DictionarySelect";
-import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
-import SaveIcon from '@mui/icons-material/Save';
-import request from '@/utils/request';
-import { Add, Edit, Delete } from '@mui/icons-material';
-import _ from 'lodash';
-import { DataGrid } from '@mui/x-data-grid';
-import StatusSelectInput from "@/page/components/StatusSelectInput";
-
-import { useReactToPrint } from "react-to-print";
-import jsbarcode from 'jsbarcode'
-import { el } from "date-fns/locale";
-
-const PrintModal = ({ open, setOpen, rows }) => {
-    const refresh = useRefresh();
-    const translate = useTranslate();
-    const notify = useNotify();
-    const contentRef = useRef(null);
-    const reactToPrintFn = useReactToPrint({ contentRef });
-
-    const handleClose = (event, reason) => {
-        if (reason !== "backdropClick") {
-            setOpen(false);
-        }
-    };
-
-    const [value, setValue] = useState('temp1');
-
-    const handleChange = (event) => {
-        setValue(event.target.value);
-    };
-
-    const handlePrint = () => {
-        // handleClose()
-        reactToPrintFn()
-    };
-
-    return (
-        <Dialog open={open} maxWidth="sm" fullWidth>
-            <DialogCloseButton onClose={handleClose} />
-            <DialogTitle>{translate('toolbar.print')}</DialogTitle>
-            <DialogContent >
-                <FormControl >
-                    <RadioGroup
-                        row
-                        aria-labelledby="demo-controlled-radio-buttons-group"
-                        name="controlled-radio-buttons-group"
-                        value={value}
-                        onChange={handleChange}
-                        size="small"
-                        sx={{ justifyContent: 'center' }}
-                    >
-                        <FormControlLabel value="temp1" control={<Radio />} label="妯℃澘1" size="small" />
-                    </RadioGroup>
-                </FormControl>
-
-                <Box>
-                    <div style={{ textAlign: 'center', display: 'flex', justifyContent: 'center' }}>
-                        <table
-                            className="contain"
-                            style={{
-                                overflow: 'hidden',
-                                fontSize: 'small',
-                                tableLayout: 'fixed',
-                                width: '280px',
-                                borderCollapse: 'collapse', // 鍚堝苟杈规
-                                border: '1px solid black' // 璁剧疆琛ㄦ牸鏁翠綋杈规
-                            }}
-                        >
-                            <tbody>
-                                <tr style={{ height: '74px' }}>
-                                    <td
-                                        align="center"
-                                        colSpan={3}
-                                        style={{ border: '1px solid black' }} // 璁剧疆鍗曞厓鏍艰竟妗�
-                                    >
-                                        鍟嗗搧缂栫爜
-                                    </td>
-                                    <td
-                                        align="center"
-                                        className="barcode"
-                                        colSpan={9}
-                                        style={{ border: '1px solid black' }}
-                                    >
-                                        <img className="template-code" src={'/img/barcode.jpeg'} style={{ width: '90%' }} alt="Barcode" />
-                                        <div style={{ letterSpacing: '2px', marginTop: '1px', textAlign: 'center' }}>
-                                            <span>{'xxxxxx'}</span>
-                                        </div>
-                                    </td>
-                                </tr>
-                                <tr style={{ height: '74px' }}>
-                                    <td
-                                        align="center"
-                                        colSpan={3}
-                                        style={{ border: '1px solid black' }}
-                                    >
-                                        鍟嗗搧
-                                    </td>
-                                    <td
-                                        align="center"
-                                        colSpan={5}
-                                        style={{
-                                            overflow: 'hidden',
-                                            whiteSpace: 'nowrap',
-                                            textOverflow: 'ellipsis',
-                                            border: '1px solid black'
-                                        }}
-                                    >
-                                        {'xxxxxxxx'}
-                                    </td>
-                                    <td
-                                        align="center"
-                                        colSpan={2}
-                                        style={{ border: '1px solid black' }}
-                                    >
-                                        澶囨敞
-                                    </td>
-                                    <td
-                                        align="center"
-                                        colSpan={2}
-                                        style={{ border: '1px solid black' }}
-                                    >
-                                        {'xx'}
-                                    </td>
-                                </tr>
-                            </tbody>
-                        </table>
-                    </div>
-                    <style>{`
-                    @media print {
-                    .print-content {
-                            display: block!important;
-                        }
-                    }`} </style>
-                    <div ref={contentRef} className="print-content" style={{ textAlign: 'center', display: 'none' }}>
-                        <PrintTemp key={'bb'} rows={rows} />
-                    </div>
-                </Box>
-            </DialogContent>
-            <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
-                <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}>
-                    <Button onClick={handlePrint} variant="contained" startIcon={<SaveIcon />}>
-                        {translate('toolbar.confirm')}
-                    </Button>
-                </Box>
-            </DialogActions>
-        </Dialog >
-    );
-}
-
-export default PrintModal;
-
-const PrintTemp = ({ rows }) => {
-    const notify = useNotify();
-    const [data, setData] = useState([]);
-    const http = async () => {
-        const res = await request.post(`/asnOrderItem/many/${rows?.join()}`);
-        if (res?.data?.code === 200) {
-            let val = res.data.data.map((el => {
-                return {
-                    barcode: '/img/barcode.jpeg',
-                    code: el.trackCode,
-                    name: el.maktx,
-                    memo: el.memo || ''
-                }
-            }))
-            setData(val)
-            setTimeout(() => {
-                val.forEach((el) => {
-                    jsbarcode(`#barcode${el.code}`, el.code, { height: 30 });
-                });
-            }, 10);
-
-        } else {
-            notify(res.data.msg);
-        }
-    }
-
-    useEffect(() => {
-        if (rows?.length > 0) {
-            http();
-        }
-
-    }, [rows]);
-
-
-    return (
-        <>
-            {data.map((item, index) => (
-                <table
-                    key={index}
-                    className="contain"
-                    style={{
-                        overflow: 'hidden',
-                        fontSize: 'small',
-                        tableLayout: 'fixed',
-                        width: '520px',
-                        borderCollapse: 'collapse',
-                        borderSpacing: 0,
-                        margin: '0 auto',
-                        marginTop: '10px',
-                    }}
-                >
-                    <tbody>
-                        <tr style={{ height: '74px' }}>
-                            <td align="center" colSpan={3} style={{ border: '1px solid black' }} >
-                                鍟嗗搧缂栫爜
-                            </td>
-                            <td
-                                align="center"
-                                className="barcode"
-                                colSpan={9}
-                                style={{ border: '1px solid black' }}
-                            >
-                                <img id={"barcode" + item.code} style={{ width: '70%', verticalAlign: 'middle' }} />
-                                {/* <img className="template-code" src={item.barcode} style={{ width: '90%', verticalAlign: 'middle' }} alt="Barcode" /> */}
-                                {/* <div style={{ letterSpacing: '2px', marginTop: '1px', textAlign: 'center' }}>
-                                    <span>{item.code}</span>
-                                </div> */}
-                            </td>
-                        </tr>
-                        <tr style={{ height: '74px' }}>
-                            <td
-                                align="center"
-                                colSpan={3}
-                                style={{ border: '1px solid black' }}
-                            >
-                                鍟嗗搧
-                            </td>
-                            <td
-                                align="center"
-                                colSpan={5}
-                                style={{
-                                    overflow: 'hidden',
-                                    whiteSpace: 'nowrap',
-                                    textOverflow: 'ellipsis',
-                                    border: '1px solid black'
-                                }}
-                            >
-                                {item.name}
-                            </td>
-                            <td
-                                align="center"
-                                colSpan={2}
-                                style={{ border: '1px solid black' }}
-                            >
-                                澶囨敞
-                            </td>
-                            <td
-                                align="center"
-                                colSpan={2}
-                                style={{ border: '1px solid black' }}
-                            >
-                                {item.memo}
-                            </td>
-                        </tr>
-                    </tbody>
-                </table>
-            ))}
-
-        </>
-    )
-}
-
-
diff --git a/rsf-admin/src/page/asnOrder/index.jsx b/rsf-admin/src/page/asnOrder/index.jsx
deleted file mode 100644
index efc23bb..0000000
--- a/rsf-admin/src/page/asnOrder/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
-    ListGuesser,
-    EditGuesser,
-    ShowGuesser,
-} from "react-admin";
-
-import AsnOrderList from "./AsnOrderList";
-import AsnOrderEdit from "./AsnOrderEdit";
-
-export default {
-    list: AsnOrderList,
-    edit: AsnOrderEdit,
-    show: ShowGuesser,
-    recordRepresentation: (record) => {
-        return `${record.name}`
-    }
-};
diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx
deleted file mode 100644
index c811495..0000000
--- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemCreate.jsx
+++ /dev/null
@@ -1,221 +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 AsnOrderItemCreate = (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.asnOrderItem.asnId"
-                                        source="asnId"
-                                        defaultValue={row.asnId}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.asnCode"
-                                        source="asnCode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.poDetlId"
-                                        source="poDetlId"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.poDetlCode"
-                                        source="poDetlCode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.matnrId"
-                                        source="matnrId"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.maktx"
-                                        source="maktx"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrderItem.anfme"
-                                        source="anfme"
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.stockUnit"
-                                        source="stockUnit"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrderItem.purQty"
-                                        source="purQty"
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.purUnit"
-                                        source="purUnit"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrderItem.qty"
-                                        source="qty"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.splrCode"
-                                        source="splrCode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.splrName"
-                                        source="splrName"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.qrcode"
-                                        source="qrcode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.barcode"
-                                        source="barcode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderItem.packName"
-                                        source="packName"
-                                        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 AsnOrderItemCreate;
diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemEdit.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemEdit.jsx
deleted file mode 100644
index e6c3f8b..0000000
--- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemEdit.jsx
+++ /dev/null
@@ -1,193 +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 AsnOrderItemEdit = () => {
-    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.asnOrderItem.asnId"
-                                source="asnId"
-                                autoFocus
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.asnCode"
-                                source="asnCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.poDetlId"
-                                source="poDetlId"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.poDetlCode"
-                                source="poDetlCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.matnrId"
-                                source="matnrId"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.maktx"
-                                source="maktx"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.asnOrderItem.anfme"
-                                source="anfme"
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.stockUnit"
-                                source="stockUnit"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.asnOrderItem.purQty"
-                                source="purQty"
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.purUnit"
-                                source="purUnit"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.asnOrderItem.qty"
-                                source="qty"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.splrCode"
-                                source="splrCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.splrName"
-                                source="splrName"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.qrcode"
-                                source="qrcode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.barcode"
-                                source="barcode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.asnOrderItem.packName"
-                                source="packName"
-                                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 AsnOrderItemEdit;
diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx
deleted file mode 100644
index c159ad9..0000000
--- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemList.jsx
+++ /dev/null
@@ -1,198 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate, useLocation } 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,
-  Button
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import AsnOrderItemCreate from "./AsnOrderItemCreate";
-import AsnOrderItemPanel from "./AsnOrderItemPanel";
-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';
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import QrCodeIcon from "@mui/icons-material/QrCode";
-import ImportButton from "../components/ImportButton";
-
-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="asnId" label="table.field.asnOrderItem.asnId" />,
-  <TextInput source="asnCode" label="table.field.asnOrderItem.asnCode" />,
-  <TextInput source="poDetlId" label="table.field.asnOrderItem.poDetlId" />,
-  <TextInput source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />,
-  <TextInput source="matnrId" label="table.field.asnOrderItem.matnrId" />,
-  <TextInput source="maktx" label="table.field.asnOrderItem.maktx" />,
-  <NumberInput source="anfme" label="table.field.asnOrderItem.anfme" />,
-  <TextInput source="stockUnit" label="table.field.asnOrderItem.stockUnit" />,
-  <NumberInput source="purQty" label="table.field.asnOrderItem.purQty" />,
-  <TextInput source="purUnit" label="table.field.asnOrderItem.purUnit" />,
-  <NumberInput source="qty" label="table.field.asnOrderItem.qty" />,
-  <TextInput source="splrCode" label="table.field.asnOrderItem.splrCode" />,
-  <TextInput source="splrName" label="table.field.asnOrderItem.splrName" />,
-  <TextInput source="qrcode" label="table.field.asnOrderItem.qrcode" />,
-  <TextInput source="barcode" label="table.field.asnOrderItem.barcode" />,
-  <TextInput source="packName" label="table.field.asnOrderItem.packName" />,
-
-  <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 AsnOrderItemList = () => {
-  const translate = useTranslate();
-
-  const [createDialog, setCreateDialog] = useState(false);
-  const [drawerVal, setDrawerVal] = useState(false);
-
-  const location = useLocation();
-  const queryParams = new URLSearchParams(location.search);
-  const asnId = queryParams.get("asnId");
-
-  const creatCode = () => { };
-
-  return (
-    <>
-      {asnId && <CustomerTopToolBar backPrevious={true} />}
-      <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.asnOrderItem"}
-          empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
-          filters={filters}
-          sort={{ field: "create_time", order: "desc" }}
-          actions={(
-            <TopToolbar>
-              <Button onClick={creatCode} label={"toolbar.creatcode"}>
-                <QrCodeIcon />
-              </Button>
-              <FilterButton />
-              <MyCreateButton onClick={() => { setCreateDialog(true) }} />
-              <SelectColumnsButton preferenceKey='asnOrderItem' />
-              <ImportButton value={'asnOrder'} parmas={{ asnId: asnId }} />
-              <MyExportButton />
-            </TopToolbar>
-          )}
-          perPage={DEFAULT_PAGE_SIZE}
-        >
-          <StyledDatagrid
-            preferenceKey='asnOrderItem'
-            bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
-            rowClick={(id, resource, record) => false}
-            omit={['id', 'createTime', 'createBy', 'memo']}
-          >
-            <NumberField source="id" />
-            <NumberField source="asnId" label="table.field.asnOrderItem.asnId" />
-            <TextField source="asnCode" label="table.field.asnOrderItem.asnCode" />
-            <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />
-            <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />
-            <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />
-            <TextField source="maktx" label="table.field.asnOrderItem.maktx" />
-            <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />
-            <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />
-            <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />
-            <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />
-            <NumberField source="qty" label="table.field.asnOrderItem.qty" />
-            <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />
-            <TextField source="splrName" label="table.field.asnOrderItem.splrName" />
-            <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />
-            <TextField source="barcode" label="table.field.asnOrderItem.barcode" />
-            <TextField source="packName" label="table.field.asnOrderItem.packName" />
-
-            <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>
-        <AsnOrderItemCreate
-          open={createDialog}
-          setOpen={setCreateDialog}
-          row={{ asnId }}
-        />
-        <PageDrawer
-          title='AsnOrderItem Detail'
-          drawerVal={drawerVal}
-          setDrawerVal={setDrawerVal}
-        >
-        </PageDrawer>
-      </Box>
-    </>
-  )
-}
-AsnOrderItemList.Context = React.createContext()
-
-export default AsnOrderItemList;
diff --git a/rsf-admin/src/page/asnOrderItem/AsnOrderItemPanel.jsx b/rsf-admin/src/page/asnOrderItem/AsnOrderItemPanel.jsx
deleted file mode 100644
index 8cfe2e6..0000000
--- a/rsf-admin/src/page/asnOrderItem/AsnOrderItemPanel.jsx
+++ /dev/null
@@ -1,147 +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 AsnOrderItemPanel = () => {
-    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.asnOrderItem.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}>&nbsp;</Box>
-                    <Grid container spacing={2}>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.asnId"
-                                property={record.asnId}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.asnCode"
-                                property={record.asnCode}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.poDetlId"
-                                property={record.poDetlId}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.poDetlCode"
-                                property={record.poDetlCode}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.matnrId"
-                                property={record.matnrId}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.maktx"
-                                property={record.maktx}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.anfme"
-                                property={record.anfme}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.stockUnit"
-                                property={record.stockUnit}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.purQty"
-                                property={record.purQty}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.purUnit"
-                                property={record.purUnit}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.qty"
-                                property={record.qty}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.splrCode"
-                                property={record.splrCode}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.splrName"
-                                property={record.splrName}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.qrcode"
-                                property={record.qrcode}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.barcode"
-                                property={record.barcode}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.asnOrderItem.packName"
-                                property={record.packName}
-                            />
-                        </Grid>
-
-                    </Grid>
-                </CardContent>
-            </Card >
-        </>
-    );
-};
-
-export default AsnOrderItemPanel;
diff --git a/rsf-admin/src/page/asnOrderItem/index.jsx b/rsf-admin/src/page/asnOrderItem/index.jsx
deleted file mode 100644
index 274df6c..0000000
--- a/rsf-admin/src/page/asnOrderItem/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
-    ListGuesser,
-    EditGuesser,
-    ShowGuesser,
-} from "react-admin";
-
-import AsnOrderItemList from "./AsnOrderItemList";
-import AsnOrderItemEdit from "./AsnOrderItemEdit";
-
-export default {
-    list: AsnOrderItemList,
-    edit: AsnOrderItemEdit,
-    show: ShowGuesser,
-    recordRepresentation: (record) => {
-        return `${record.id}`
-    }
-};
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index b145ddb..68564a7 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -12,9 +12,9 @@
       matching-strategy: ANT_PATH_MATCHER
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://192.168.0.116:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://192.168.0.116:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
-#    url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #    username: rsf
     password: 34821015
     type: com.alibaba.druid.pool.DruidDataSource

--
Gitblit v1.9.1