From e411a471a08717964937be2e6ac0eadaa84961ca Mon Sep 17 00:00:00 2001
From: DESKTOP-LMJ82IJ\Eno <creaycat@gmail.com>
Date: 星期日, 13 四月 2025 18:39:36 +0800
Subject: [PATCH] #修改 1. 组拖界面优化

---
 rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx                                         |   25 +--
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java                 |    2 
 rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx                                      |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java           |    3 
 rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx                                                 |  160 +++++++++----------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |   13 +
 rsf-admin/src/page/qlyInspect/QlyInspectList.jsx                                               |   12 -
 rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx                                             |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java        |   17 -
 /dev/null                                                                                      |   18 --
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java          |    2 
 rsf-admin/src/page/waitPakin/WaitPakinList.jsx                                                 |   25 --
 rsf-admin/src/i18n/zh.js                                                                       |    2 
 rsf-admin/src/i18n/en.js                                                                       |    2 
 rsf-admin/src/page/ResourceContent.js                                                          |   12 -
 rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx                                               |  149 +++++++++---------
 16 files changed, 192 insertions(+), 257 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index a9d204c..6028053 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -631,6 +631,7 @@
                 ansId: "ansId",
                 asnCode: "asnCode",
                 barcode: "barcode",
+                flagDefect: "Defective",
                 anfme: "anfme",
                 ioStatus: "ioStatus",
             },
@@ -821,6 +822,7 @@
         creatcode: "creatcode",
         print: "print",
         enable: 'enable',
+        detail: "Detail",
         unenable: 'unenable',
         locInit: 'loc init',
         siteInit: 'site init',
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index dc16f18..9bdf742 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -641,6 +641,7 @@
                 ansId: "鏀惰揣閫氱煡鍗曞彿",
                 asnCode: "鏀惰揣閫氱煡鍗曠紪鐮�",
                 barcode: "瀹瑰櫒鐮�",
+                flagDefect: "涓嶈壇鍝�",
                 anfme: "鏁伴噺",
                 ioStatus: "鐘舵��",
             },
@@ -832,6 +833,7 @@
         inspection: "鎶ユ",
         creatcode: "鐢熸垚鏉$爜",
         print: "鎵撳嵃",
+        detail: "鏌ョ湅璇︽儏",
         enable: '鍚敤',
         unenable: '绂佺敤',
         locInit: '搴撲綅鍒濆鍖�',
diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js
index ab19384..f5c5497 100644
--- a/rsf-admin/src/page/ResourceContent.js
+++ b/rsf-admin/src/page/ResourceContent.js
@@ -23,18 +23,14 @@
 import qlyInspect from './qlyInspect';
 import qlyIsptItem from './qlyIsptItem';
 import dictType from './system/dicts/dictType';
-// import dictData from './system/dicts/dictData';
 import companys from './basicInfo/companys';
 import locType from './basicInfo/locType';
 import locArea from './basicInfo//locArea';
 import locAreaMatRela from './basicInfo/locAreaMatRela';
 import locAreaMat from './basicInfo/locAreaMat';
-// import serialRuleItem from './system/serialRuleItem';
 import serialRule from './system/serialRule';
 import whMat from './basicInfo/whMat';
 import asnOrder from './orders/asnOrder';
-// import asnOrderItem from './orders/asnOrderItem';
-// import purchaseItem from './purchaseItem';
 import purchase from './purchase';
 import fields from './fields';
 import fieldsItem from './fieldsItem';
@@ -43,7 +39,7 @@
 import waitPakin from './waitPakin';
 import waitPakinItem from './waitPakinItem';
 import waitPakinLog from './waitPakinLog';
-import asnOrderLog from './asnOrderLog';
+import asnOrderLog from './orders/asnOrderLog';
 import task from './task';
 import taskLog from './taskLog';
 
@@ -89,12 +85,8 @@
             return qlyIsptItem;
         case 'dictType':
             return dictType;
-        // case 'dictData':
-        //     return dictData;
         case 'companys':
             return companys;
-        // case 'serialRuleItem':
-        //     return serialRuleItem;
         case 'serialRule':
             return serialRule;
         case 'whMat':
@@ -105,8 +97,6 @@
             return asnOrderItem;
         case 'asnOrderLog':
             return asnOrderLog;
-        // case 'purchaseItem':
-        //     return purchaseItem;
         case 'purchase':
             return purchase;
         case 'fields':
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderItemLogList.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderItemLogList.jsx
deleted file mode 100644
index 643d4ca..0000000
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderItemLogList.jsx
+++ /dev/null
@@ -1,177 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
-import {
-    List,
-    DatagridConfigurable,
-    SearchInput,
-    TopToolbar,
-    SelectColumnsButton,
-    EditButton,
-    FilterButton,
-    CreateButton,
-    ExportButton,
-    BulkDeleteButton,
-    WrapperField,
-    useRecordContext,
-    useTranslate,
-    useNotify,
-    useListContext,
-    FunctionField,
-    TextField,
-    NumberField,
-    DateField,
-    BooleanField,
-    ReferenceField,
-    TextInput,
-    DateTimeInput,
-    DateInput,
-    SelectInput,
-    NumberInput,
-    ReferenceInput,
-    ReferenceArrayInput,
-    AutocompleteInput,
-    DeleteButton,
-    useGetRecordId,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import EmptyData from "../components/EmptyData";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
-    '& .css-1vooibu-MuiSvgIcon-root': {
-        height: '.9em'
-    },
-    '& .RaDatagrid-row': {
-        cursor: 'auto'
-    },
-    '& .column-name': {
-    },
-    '& .opt': {
-        width: 200
-    },
-}));
-
-const filters = [
-    <SearchInput source="condition" alwaysOn />,
-
-    <NumberInput source="asnId" label="table.field.asnOrderItemLog.asnId" />,
-    <TextInput source="asnCode" label="table.field.asnOrderItemLog.asnCode" />,
-    <TextInput source="platItemId" label="table.field.asnOrderItemLog.platItemId" />,
-    <NumberInput source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" />,
-    <TextInput source="poCode" label="table.field.asnOrderItemLog.poCode" />,
-    <TextInput source="fieldsIndex" label="table.field.asnOrderItemLog.fieldsIndex" />,
-    <TextInput source="matnrId" label="table.field.asnOrderItemLog.matnrId" />,
-    <TextInput source="matnrCode" label="table.field.asnOrderItemLog.matnrCode" />,
-    <TextInput source="maktx" label="table.field.asnOrderItemLog.maktx" />,
-    <NumberInput source="anfme" label="table.field.asnOrderItemLog.anfme" />,
-    <TextInput source="stockUnit" label="table.field.asnOrderItemLog.stockUnit" />,
-    <NumberInput source="purQty" label="table.field.asnOrderItemLog.purQty" />,
-    <TextInput source="purUnit" label="table.field.asnOrderItemLog.purUnit" />,
-    <NumberInput source="qty" label="table.field.asnOrderItemLog.qty" />,
-    <TextInput source="splrCode" label="table.field.asnOrderItemLog.splrCode" />,
-    <TextInput source="splrBatch" label="table.field.asnOrderItemLog.splrBatch" />,
-    <TextInput source="splrName" label="table.field.asnOrderItemLog.splrName" />,
-    <TextInput source="qrcode" label="table.field.asnOrderItemLog.qrcode" />,
-    <TextInput source="trackCode" label="table.field.asnOrderItemLog.trackCode" />,
-    <TextInput source="barcode" label="table.field.asnOrderItemLog.barcode" />,
-    <TextInput source="packName" label="table.field.asnOrderItemLog.packName" />,
-    <SelectInput source="ntyStatus" label="table.field.asnOrderItemLog.ntyStatus"
-        choices={[
-            { id: 0, name: ' 鏈笂鎶�' },
-            { id: 1, name: ' 宸蹭笂鎶�' },
-        ]}
-    />,
-
-    <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 AsnOrderItemLogList = () => {
-    const translate = useTranslate();
-    const [createDialog, setCreateDialog] = useState(false);
-    const [drawerVal, setDrawerVal] = useState(false);
-    const recodeId = useGetRecordId();
-
-    return (
-        <Box display="flex">
-            <List
-                resource="asnOrderItemLog"
-                sx={{
-                    flexGrow: 1,
-                    transition: (theme) =>
-                        theme.transitions.create(['all'], {
-                            duration: theme.transitions.duration.enteringScreen,
-                        }),
-                    marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
-                }}
-                title={"menu.asnOrderItemLog"}
-                empty={false}
-                filters={filters}
-                filter={{ logId: recodeId }}
-                sort={{ field: "create_time", order: "desc" }}
-                actions={(
-                    <TopToolbar>
-                        <FilterButton />
-                        <SelectColumnsButton preferenceKey='asnOrderItemLog' />
-                        <MyExportButton />
-                    </TopToolbar>
-                )}
-                perPage={DEFAULT_PAGE_SIZE}
-            >
-                <StyledDatagrid
-                    preferenceKey='asnOrderItemLog'
-                    bulkActionButtons={false}
-                    rowClick={(id, resource, record) => false}
-                    omit={['id', 'asnId', 'poDetlId', 'poCode', 'qrcode', 'packName', 'createTime', 'memo', 'fieldsIndex', 'matnrId', 'splrCode', 'status', 'createBy$']}
-                >
-                    <NumberField source="id" />
-                    <NumberField source="asnId" label="table.field.asnOrderItemLog.asnId" />
-                    <TextField source="asnCode" label="table.field.asnOrderItemLog.asnCode" />
-                    <TextField source="platItemId" label="table.field.asnOrderItemLog.platItemId" />
-                    <NumberField source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" />
-                    <TextField source="poCode" label="table.field.asnOrderItemLog.poCode" />
-                    <TextField source="fieldsIndex" label="table.field.asnOrderItemLog.fieldsIndex" />
-                    <TextField source="matnrId" label="table.field.asnOrderItemLog.matnrId" />
-                    <TextField source="matnrCode" label="table.field.asnOrderItemLog.matnrCode" />
-                    <TextField source="maktx" label="table.field.asnOrderItemLog.maktx" />
-                    <NumberField source="anfme" label="table.field.asnOrderItemLog.anfme" />
-                    <NumberField source="purQty" label="table.field.asnOrderItemLog.purQty" />
-                    <TextField source="purUnit" label="table.field.asnOrderItemLog.purUnit" />
-                    <NumberField source="qty" label="table.field.asnOrderItemLog.qty" />
-                    <TextField source="splrCode" label="table.field.asnOrderItemLog.splrCode" />
-                    <TextField source="splrBatch" label="table.field.asnOrderItemLog.splrBatch" />
-                    <TextField source="splrName" label="table.field.asnOrderItemLog.splrName" />
-                    <TextField source="qrcode" label="table.field.asnOrderItemLog.qrcode" />
-                    <TextField source="trackCode" label="table.field.asnOrderItemLog.trackCode" />
-                    <TextField source="packName" label="table.field.asnOrderItemLog.packName" />
-                    <TextField source="ntyStatus$" label="table.field.asnOrderItemLog.ntyStatus" sortable={false} />
-                    <TextField source="updateBy$" label="common.field.updateBy" />
-                    <TextField source="createBy$" label="common.field.createBy" />
-                    <DateField source="createTime" label="common.field.createTime" showTime />
-                    <TextField source="memo" label="common.field.memo" sortable={false} />
-                </StyledDatagrid>
-            </List>
-            <PageDrawer
-                title='AsnOrderItemLog Detail'
-                drawerVal={drawerVal}
-                setDrawerVal={setDrawerVal}
-            >
-            </PageDrawer>
-        </Box>
-    )
-}
-
-export default AsnOrderItemLogList;
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogCreate.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogCreate.jsx
deleted file mode 100644
index cedf651..0000000
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogCreate.jsx
+++ /dev/null
@@ -1,195 +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 AsnOrderLogCreate = (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.asnOrderLog.code"
-                                        source="code"
-                                        parse={v => v}
-                                        autoFocus
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderLog.poCode"
-                                        source="poCode"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrderLog.poId"
-                                        source="poId"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderLog.type"
-                                        source="type"
-                                        parse={v => v}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderLog.wkType"
-                                        source="wkType"
-                                        parse={v => v}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrderLog.anfme"
-                                        source="anfme"
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.asnOrderLog.qty"
-                                        source="qty"
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.asnOrderLog.logisNo"
-                                        source="logisNo"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <DateInput
-                                        label="table.field.asnOrderLog.arrTime"
-                                        source="arrTime"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <SelectInput
-                                        label="table.field.asnOrderLog.rleStatus"
-                                        source="rleStatus"
-                                        choices={[
-                                            { id: 0, name: ' 姝e父' },
-                                            { id:  1, name: ' 宸查噴鏀�' },
-                                        ]}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <SelectInput
-                                        label="table.field.asnOrderLog.ntyStatus"
-                                        source="ntyStatus"
-                                        choices={[
-                                            { id: 0, name: ' 鏈笂鎶�' },
-                                            { id:  1, name: ' 宸蹭笂鎶�' },
-                                            { id:  2, 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 AsnOrderLogCreate;
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx
deleted file mode 100644
index 4e61d1b..0000000
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx
+++ /dev/null
@@ -1,144 +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, Card } from '@mui/material';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import AsnOrderItemLogList from "./AsnOrderItemLogList"
-const FormToolbar = () => {
-    return (
-        <Toolbar sx={{ justifyContent: 'end' }}>
-            <SaveButton />
-        </Toolbar>
-    )
-}
-
-const AsnOrderLogEdit = () => {
-    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={24} md={12}>
-                            <Typography variant="h6" gutterBottom>
-                                {translate('common.edit.title.main')}
-                            </Typography>
-                            <Stack direction='row' gap={2}>
-                                <TextInput
-                                    label="table.field.asnOrderLog.code"
-                                    source="code"
-                                    parse={v => v}
-                                    readOnly
-                                />
-                                <TextInput
-                                    label="table.field.asnOrderLog.poCode"
-                                    source="poCode"
-                                    readOnly
-                                    parse={v => v}
-                                />
-                                <NumberInput
-                                    label="table.field.asnOrderLog.poId"
-                                    readOnly
-                                    source="poId"
-                                />
-                                <TextInput
-                                    label="table.field.asnOrderLog.type"
-                                    source="type"
-                                    readOnly
-                                    parse={v => v}
-                                    validate={required()}
-                                />
-                                <TextInput
-                                    label="table.field.asnOrderLog.wkType"
-                                    source="wkType"
-                                    readOnly
-                                    parse={v => v}
-                                    validate={required()}
-                                />
-                            </Stack>
-                            <Stack direction='row' gap={2}>
-                                <NumberInput
-                                    label="table.field.asnOrderLog.anfme"
-                                    source="anfme"
-                                    readOnly
-                                    validate={required()}
-                                />
-                                <NumberInput
-                                    label="table.field.asnOrderLog.qty"
-                                    source="qty"
-                                    readOnly
-                                    validate={required()}
-                                />
-                                <TextInput
-                                    label="table.field.asnOrderLog.logisNo"
-                                    source="logisNo"
-                                    readOnly
-                                    parse={v => v}
-                                />
-                                <DateInput
-                                    label="table.field.asnOrderLog.arrTime"
-                                    readOnly
-                                    source="arrTime"
-                                />
-                                <SelectInput
-                                    label="table.field.asnOrderLog.ntyStatus"
-                                    source="ntyStatus"
-                                    readOnly
-                                    choices={[
-                                        { id: 0, name: ' 鏈笂鎶�' },
-                                        { id: 1, name: ' 宸蹭笂鎶�' },
-                                        { id: 2, name: ' 閮ㄥ垎涓婃姤' },
-                                    ]}
-                                    validate={required()}
-                                />
-                            </Stack>
-                        </Grid>
-                    </Grid>
-                </SimpleForm>
-            </Edit >
-            <Grid item xs={24} md={16} sx={{ marginTop: '1em' }}>
-                <Typography variant="h6" gutterBottom >
-                    {translate('common.edit.title.common')}
-                </Typography>
-            </Grid>
-            <AsnOrderItemLogList />
-        </>
-    )
-}
-
-export default AsnOrderLogEdit;
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx
deleted file mode 100644
index ceb24f6..0000000
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx
+++ /dev/null
@@ -1,170 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
-import {
-    List,
-    DatagridConfigurable,
-    SearchInput,
-    TopToolbar,
-    SelectColumnsButton,
-    EditButton,
-    FilterButton,
-    CreateButton,
-    ExportButton,
-    BulkDeleteButton,
-    WrapperField,
-    useRecordContext,
-    useTranslate,
-    useNotify,
-    useListContext,
-    FunctionField,
-    TextField,
-    NumberField,
-    DateField,
-    BooleanField,
-    ReferenceField,
-    TextInput,
-    DateTimeInput,
-    DateInput,
-    SelectInput,
-    NumberInput,
-    ReferenceInput,
-    ReferenceArrayInput,
-    AutocompleteInput,
-    DeleteButton,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import AsnOrderLogCreate from "./AsnOrderLogCreate";
-import AsnOrderLogPanel from "./AsnOrderLogPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
-    '& .css-1vooibu-MuiSvgIcon-root': {
-        height: '.9em'
-    },
-    '& .RaDatagrid-row': {
-        cursor: 'auto'
-    },
-    '& .column-name': {
-    },
-    '& .opt': {
-        width: 200
-    },
-}));
-
-const filters = [
-    <SearchInput source="condition" alwaysOn />,
-    <TextInput source="code" label="table.field.asnOrderLog.code" />,
-    <TextInput source="poCode" label="table.field.asnOrderLog.poCode" />,
-    <NumberInput source="poId" label="table.field.asnOrderLog.poId" />,
-    <TextInput source="type" label="table.field.asnOrderLog.type" />,
-    <TextInput source="wkType" label="table.field.asnOrderLog.wkType" />,
-    <NumberInput source="anfme" label="table.field.asnOrderLog.anfme" />,
-    <NumberInput source="qty" label="table.field.asnOrderLog.qty" />,
-    <TextInput source="logisNo" label="table.field.asnOrderLog.logisNo" />,
-    <DateInput source="arrTime" label="table.field.asnOrderLog.arrTime" />,
-    <SelectInput source="rleStatus" label="table.field.asnOrderLog.rleStatus"
-        choices={[
-            { id: 0, name: ' 姝e父' },
-            { id: 1, name: ' 宸查噴鏀�' },
-        ]}
-    />,
-    <SelectInput source="ntyStatus" label="table.field.asnOrderLog.ntyStatus"
-        choices={[
-            { id: 0, name: ' 鏈笂鎶�' },
-            { id: 1, name: ' 宸蹭笂鎶�' },
-            { id: 2, name: ' 閮ㄥ垎涓婃姤' },
-        ]}
-    />,
-
-    <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 AsnOrderLogList = () => {
-    const translate = useTranslate();
-    const [createDialog, setCreateDialog] = useState(false);
-    const [drawerVal, setDrawerVal] = useState(false);
-
-    return (
-        <Box display="flex">
-            <List
-                sx={{
-                    flexGrow: 1,
-                    transition: (theme) =>
-                        theme.transitions.create(['all'], {
-                            duration: theme.transitions.duration.enteringScreen,
-                        }),
-                    marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
-                }}
-                title={"menu.asnOrderLog"}
-                empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
-                filters={filters}
-                sort={{ field: "create_time", order: "desc" }}
-                actions={(
-                    <TopToolbar>
-                        <FilterButton />
-                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
-                        <SelectColumnsButton preferenceKey='asnOrderLog' />
-                        <MyExportButton />
-                    </TopToolbar>
-                )}
-                perPage={DEFAULT_PAGE_SIZE}
-            >
-                <StyledDatagrid
-                    preferenceKey='asnOrderLog'
-                    bulkActionButtons={false}
-                    rowClick={'edit'}
-                    expand={false}
-                    expandSingle={true}
-                    omit={['id', 'createTime', 'createBy', 'memo', 'rleStatus']}
-                >
-                    <NumberField source="id" />
-                    <TextField source="code" label="table.field.asnOrderLog.code" />
-                    <TextField source="poCode" label="table.field.asnOrderLog.poCode" />
-                    <NumberField source="poId" label="table.field.asnOrderLog.poId" />
-                    <TextField source="type$" label="table.field.asnOrderLog.type" />
-                    <TextField source="wkType$" label="table.field.asnOrderLog.wkType" />
-                    <NumberField source="anfme" label="table.field.asnOrderLog.anfme" />
-                    <NumberField source="qty" label="table.field.asnOrderLog.qty" />
-                    <TextField source="logisNo" label="table.field.asnOrderLog.logisNo" />
-                    <DateField source="arrTime" label="table.field.asnOrderLog.arrTime" showTime />
-                    <TextField source="rleStatus$" label="table.field.asnOrderLog.rleStatus" sortable={false} />
-                    <TextField source="ntyStatus$" label="table.field.asnOrderLog.ntyStatus" 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 />
-                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
-                    <TextField source="memo" label="common.field.memo" sortable={false} />
-                </StyledDatagrid>
-            </List>
-            <AsnOrderLogCreate
-                open={createDialog}
-                setOpen={setCreateDialog}
-            />
-            <PageDrawer
-                title='AsnOrderLog Detail'
-                drawerVal={drawerVal}
-                setDrawerVal={setDrawerVal}
-            >
-            </PageDrawer>
-        </Box>
-    )
-}
-
-export default AsnOrderLogList;
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx
deleted file mode 100644
index 1058e9d..0000000
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx
+++ /dev/null
@@ -1,143 +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';
-
-const AsnOrderLogPanel = () => {
-    const record = useRecordContext();
-    if (!record) return null;
-    const translate = useTranslate();
-    const notify = useNotify();
-    const [rows, setRows] = useState([]);
-    const [maktx, setMaktx] = useState('');
-    const asnId = record.asnId;
-
-    useEffect(() => {
-        debouncedHttp({ maktx });
-    }, [asnId, maktx]);
-
-
-    const http = async (parmas) => {
-        const res = await request.post('/asnOrderItemLog/page', { ...parmas, asnId });
-        if (res?.data?.code === 200) {
-            setRows(res.data.data.records)
-        } else {
-            notify(res.data.msg);
-        }
-    }
-
-    const debouncedHttp = useMemo(() => debounce(http, 300), []);
-
-    const columns = [
-        {
-            field: 'asnId',
-            headerName: translate('table.field.asnOrderItemLog.asnId')
-        },
-        {
-            field: 'asnCode',
-            headerName: translate('table.field.asnOrderItemLog.asnCode')
-        },
-        {
-            field: 'poDetlId',
-            headerName: translate('table.field.asnOrderItemLog.poDetlId')
-        },
-        {
-            field: 'poCode',
-            headerName: translate('table.field.asnOrderItemLog.poDetlCode')
-        },
-        {
-            field: 'matnrId',
-            headerName: translate('table.field.asnOrderItemLog.matnrId')
-        },
-        {
-            field: 'matnrCode',
-            headerName: translate('table.field.asnOrderItemLog.matnrCode')
-        },
-        {
-            field: 'maktx',
-            headerName: translate('table.field.asnOrderItemLog.maktx')
-        },
-        {
-            field: 'anfme',
-            headerName: translate('table.field.asnOrderItemLog.purQty')
-        },
-        {
-            field: 'purUnit',
-            headerName: translate('table.field.asnOrderItemLog.purUnit')
-        },
-        {
-            field: 'qty',
-            headerName: translate('table.field.asnOrderItemLog.qty')
-        },
-        {
-            field: 'splrBatch',
-            headerName: translate('table.field.asnOrderItem.splrBatch')
-        },
-        {
-            field: 'splrCode',
-            headerName: translate('table.field.asnOrderItemLog.splrCode')
-        },
-        {
-            field: 'splrName',
-            headerName: translate('table.field.asnOrderItemLog.splrName')
-        },
-        {
-            field: 'trackCode',
-            headerName: translate('table.field.asnOrderItemLog.barcode')
-        },
-        {
-            field: 'prodTime',
-            headerName: translate('table.field.asnOrderItem.prodTime')
-        },
-        {
-            field: 'packName',
-            headerName: translate('table.field.asnOrderItemLog.packName')
-        },
-        {
-            field: 'ntyStatus$',
-            headerName: translate('table.field.asnOrderItemLog.ntyStatus')
-        }]
-
-    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="鎼滅储鐗╂枡" variant="outlined" sx={{ width: '300px' }} size="small" />
-
-                <div style={{ display: 'flex', gap: '10px' }}>
-                </div>
-            </div>
-
-
-            <DataGrid
-                size="small"
-                rows={rows}
-                columns={columns}
-                disableRowSelectionOnClick
-                disableColumnMenu={true}
-                disableColumnSorting
-                disableMultipleColumnsSorting
-            />
-        </Box >
-    );
-};
-
-export default AsnOrderLogPanel;
diff --git a/rsf-admin/src/page/asnOrderLog/index.jsx b/rsf-admin/src/page/asnOrderLog/index.jsx
deleted file mode 100644
index e292c57..0000000
--- a/rsf-admin/src/page/asnOrderLog/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
-    ListGuesser,
-    EditGuesser,
-    ShowGuesser,
-} from "react-admin";
-
-import AsnOrderLogList from "./AsnOrderLogList";
-import AsnOrderLogEdit from "./AsnOrderLogEdit";
-
-export default {
-    list: AsnOrderLogList,
-    edit: AsnOrderLogEdit,
-    show: ShowGuesser,
-    recordRepresentation: (record) => {
-        return `${record.id}`
-    }
-};
diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx
index 895ebc6..d44da31 100644
--- a/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx
+++ b/rsf-admin/src/page/qlyInspect/QlyInspectEdit.jsx
@@ -28,12 +28,13 @@
 import CustomerTopToolBar from "../components/EditTopToolBar";
 import MemoInput from "../components/MemoInput";
 import StatusSelectInput from "../components/StatusSelectInput";
+import QlyIsptItemList from "./QlyIsptItemList";
 
 const FormToolbar = () => {
     const { getValues } = useFormContext();
 
     return (
-        <Toolbar sx={{ justifyContent: 'space-between' }}>
+        <Toolbar sx={{ justifyContent: 'end' }}>
             <SaveButton />
             <DeleteButton mutationMode="optimistic" />
         </Toolbar>
@@ -42,86 +43,82 @@
 
 const QlyInspectEdit = () => {
     const translate = useTranslate();
+    const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
 
     return (
-        <Edit
-            redirect="list"
-            mutationMode={EDIT_MODE}
-            actions={<CustomerTopToolBar />}
-            aside={<EditBaseAside />}
-        >
-            <SimpleForm
-                shouldUnregister
-                warnWhenUnsavedChanges
-                toolbar={<FormToolbar />}
-                mode="onTouched"
-                defaultValues={{}}
-            // validate={(values) => { }}
+        <>
+            <Edit
+                redirect="list"
+                mutationMode={EDIT_MODE}
+                actions={<CustomerTopToolBar />}
+                aside={<EditBaseAside />}
             >
-                <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.qlyInspect.asnItemId"
-                                source="asnItemId"
-                                autoFocus
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.qlyInspect.code"
-                                source="code"
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.qlyInspect.wkType"
-                                source="wkType"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.qlyInspect.safeQty"
-                                source="safeQty"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.qlyInspect.dlyQty"
-                                source="dlyQty"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.qlyInspect.rcptQty"
-                                source="rcptQty"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.qlyInspect.isptQty"
-                                source="isptQty"
-                            />
-                        </Stack>
+                <SimpleForm
+                    shouldUnregister
+                    warnWhenUnsavedChanges
+                    toolbar={<FormToolbar />}
+                    mode="onTouched"
+                    defaultValues={{}}
+                >
+                    <Grid container width={{ xs: '100%', xl: '100%' }}>
+                        <Grid item xs={24} md={12}>
+                            <Typography variant="h6" gutterBottom>
+                                {translate('common.edit.title.main')}
+                            </Typography>
+                            <Stack direction='row' gap={2}>
+                                <TextInput
+                                    label="table.field.qlyInspect.asnCode"
+                                    source="asnCode"
+                                    readOnly
+                                />
+                                <TextInput
+                                    label="table.field.qlyInspect.code"
+                                    source="code"
+                                    parse={v => v}
+                                    readOnly
+                                    validate={required()}
+                                />
+                                <AutocompleteInput
+                                    choices={business}
+                                    optionText="label"
+                                    label="table.field.asnOrder.wkType"
+                                    source="wkType"
+                                    readOnly
+                                    optionValue="value"
+                                    parse={v => v}
+                                />
+                            </Stack>
+                            <Stack direction='row' gap={2}>
+                                <NumberInput
+                                    label="table.field.qlyInspect.safeQty"
+                                    source="safeQty"
+                                    readOnly
+                                />
+                                <NumberInput
+                                    label="table.field.qlyInspect.dlyQty"
+                                    source="dlyQty"
+                                    readOnly
 
+                                />
+                                <NumberInput
+                                    label="table.field.qlyInspect.rcptQty"
+                                    source="rcptQty"
+                                    readOnly
+
+                                />
+                                <NumberInput
+                                    label="table.field.qlyInspect.isptQty"
+                                    source="isptQty"
+                                    readOnly
+
+                                />
+                            </Stack>
+                        </Grid>
                     </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 >
+                </SimpleForm>
+            </Edit >
+            <QlyIsptItemList />
+        </>
     )
 }
 
diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
index 5a0bbc3..76c6410 100644
--- a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
+++ b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
@@ -128,8 +128,7 @@
                 <StyledDatagrid
                     preferenceKey='qlyInspect'
                     bulkActionButtons={<BulkDeleteButton mutationMode={OPERATE_MODE} />}
-                    rowClick={(id, resource, record) => false}
-                    expand={() => <QlyInspectPanel />}
+                    rowClick='edit'
                     expandSingle={true}
                     omit={['id', 'createTime', 'createBy', 'memo', 'asnId', 'statusBool']}
                 >
@@ -143,14 +142,9 @@
                     <NumberField source="dlyQty" label="table.field.qlyInspect.dlyQty" />
                     <NumberField source="rcptQty" label="table.field.qlyInspect.rcptQty" />
                     <NumberField source="isptQty" label="table.field.qlyInspect.isptQty" />
-
-                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
-                        <TextField source="nickname" />
-                    </ReferenceField>
+                    <TextField source="updateBy$" label="common.field.updateBy"  />
                     <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>
+                    <TextField source="createBy$" label="common.field.createBy" />
                     <DateField source="createTime" label="common.field.createTime" showTime />
                     <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                     <TextField source="memo" label="common.field.memo" sortable={false} />
diff --git a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx
index ff12b3d..fa17cff 100644
--- a/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx
+++ b/rsf-admin/src/page/qlyIsptItem/QlyIsptItemList.jsx
@@ -88,7 +88,6 @@
 
 const QlyIsptItemList = () => {
     const translate = useTranslate();
-
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
 
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx
index 9f5bad2..f41049c 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx
@@ -43,7 +43,7 @@
 import MyCreateButton from "../../../components/MyCreateButton";
 import MyExportButton from '../../../components/MyExportButton';
 import PageDrawer from "../../../components/PageDrawer";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
 import DictDataEdit from "./DictDataEdit";
 import { use } from "react";
 
@@ -117,7 +117,7 @@
                             <MyExportButton />
                         </TopToolbar>
                     )}
-                    perPage={DEFAULT_PAGE_SIZE}
+                    perPage={DEFAULT_ITEM_PAGE_SIZE}
                 >
                     <StyledDatagrid
                         bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
@@ -140,7 +140,7 @@
                         <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">
-                            <Button onClick={() => { setEditDialog(true) }}>缂栬緫</Button>
+                            <Button onClick={() => { setEditDialog(true) }} label="ra.action.edit"></Button>
                             <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode='pessimistic' redirect={"/dictType/" + dictId} />
                         </WrapperField>
                     </StyledDatagrid>
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx b/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
index 93a66e4..91fcd56 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
@@ -2,38 +2,29 @@
 import {
     Edit,
     SimpleForm,
-    FormDataConsumer,
     useTranslate,
     TextInput,
     NumberInput,
-    BooleanInput,
-    DateInput,
     SelectInput,
-    ReferenceInput,
-    ReferenceArrayInput,
-    AutocompleteInput,
     SaveButton,
     Toolbar,
-    Labeled,
-    NumberField,
-    required,
-    useRecordContext,
     DeleteButton,
 } from 'react-admin';
 import { useWatch, useFormContext } from "react-hook-form";
 import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
 import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
 import EditBaseAside from "../components/EditBaseAside";
 import CustomerTopToolBar from "../components/EditTopToolBar";
 import MemoInput from "../components/MemoInput";
 import StatusSelectInput from "../components/StatusSelectInput";
+import WaitPakinItem from "../waitPakinItem";
+import WaitPakinItemList from "../waitPakinItem/WaitPakinItemList";
 
 const FormToolbar = () => {
     const { getValues } = useFormContext();
 
     return (
-        <Toolbar sx={{ justifyContent: 'space-between' }}>
+        <Toolbar sx={{ justifyContent: 'end' }}>
             <SaveButton />
             <DeleteButton mutationMode="optimistic" />
         </Toolbar>
@@ -44,82 +35,79 @@
     const translate = useTranslate();
 
     return (
-        <Edit
-            redirect="list"
-            mutationMode={EDIT_MODE}
-            actions={<CustomerTopToolBar />}
-            aside={<EditBaseAside />}
-        >
-            <SimpleForm
-                shouldUnregister
-                warnWhenUnsavedChanges
-                toolbar={<FormToolbar />}
-                mode="onTouched"
-                defaultValues={{}}
-            // validate={(values) => { }}
+        <>
+            <Edit
+                redirect="list"
+                mutationMode={EDIT_MODE}
+                actions={<CustomerTopToolBar />}
+                aside={<EditBaseAside />}
             >
-                <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.waitPakin.code"
-                                source="code"
-                                parse={v => v}
-                                autoFocus
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.waitPakin.ansId"
-                                source="ansId"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.waitPakin.asnCode"
-                                source="asnCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.waitPakin.barcode"
-                                source="barcode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.waitPakin.anfme"
-                                source="anfme"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <SelectInput
-                                label="table.field.waitPakin.ioStatus"
-                                source="ioStatus"
-                                choices={[
-                                    { id: 0, name: '寰呭叆搴�' },
-                                    { id:  1, name: ' 鍏ュ簱涓�' },
-                                ]}
-                            />
-                        </Stack>
-
+                <SimpleForm
+                    shouldUnregister
+                    warnWhenUnsavedChanges
+                    toolbar={<FormToolbar />}
+                    mode="onTouched"
+                    defaultValues={{}}
+                >
+                    <Grid container width={{ xs: '100%', xl: '100%' }}>
+                        <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.waitPakin.code"
+                                    source="code"
+                                    readOnly
+                                    parse={v => v}
+                                    autoFocus
+                                />
+                                <NumberInput
+                                    label="table.field.waitPakin.ansId"
+                                    readOnly
+                                    source="ansId"
+                                />
+                                <TextInput
+                                    label="table.field.waitPakin.asnCode"
+                                    readOnly
+                                    source="asnCode"
+                                    parse={v => v}
+                                />
+                                <SelectInput
+                                    label="table.field.waitPakin.flagDefect"
+                                    readOnly
+                                    source="flagDefect"
+                                    parse={v => v}
+                                />
+                            </Stack>
+                            <Stack direction='row' gap={2}>
+                                <TextInput
+                                    label="table.field.waitPakin.barcode"
+                                    readOnly
+                                    source="barcode"
+                                    parse={v => v}
+                                />
+                                <NumberInput
+                                    label="table.field.waitPakin.anfme"
+                                    readOnly
+                                    source="anfme"
+                                />
+                                <SelectInput
+                                    label="table.field.waitPakin.ioStatus"
+                                    readOnly
+                                    source="ioStatus"
+                                    choices={[
+                                        { id: 0, name: '寰呭叆搴�' },
+                                        { id: 1, name: ' 鍏ュ簱涓�' },
+                                    ]}
+                                />
+                            </Stack>
+                        </Grid>
                     </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 >
+                </SimpleForm>
+            </Edit >
+            <WaitPakinItemList />
+        </>
     )
 }
 
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
index 11405c2..39739cc 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
@@ -39,12 +39,9 @@
 import WaitPakinCreate from "./WaitPakinCreate";
 import WaitPakinPanel from "./WaitPakinPanel";
 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 AddIcon from '@mui/icons-material/Add';
 import request from '@/utils/request';
 
@@ -64,7 +61,6 @@
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
-
     <TextInput source="code" label="table.field.waitPakin.code" />,
     <NumberInput source="ansId" label="table.field.waitPakin.ansId" />,
     <TextInput source="asnCode" label="table.field.waitPakin.asnCode" />,
@@ -76,7 +72,6 @@
             { id: 1, name: ' 鍏ュ簱涓�' },
         ]}
     />,
-
     <TextInput label="common.field.memo" source="memo" />,
     <SelectInput
         label="common.field.status"
@@ -91,7 +86,6 @@
 
 const WaitPakinList = () => {
     const translate = useTranslate();
-
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
 
@@ -113,7 +107,6 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                         <SelectColumnsButton preferenceKey='waitPakin' />
                         <MyExportButton />
                     </TopToolbar>
@@ -123,8 +116,8 @@
                 <StyledDatagrid
                     preferenceKey='waitPakin'
                     bulkActionButtons={<> <CreateTaskButton /> <BulkDeleteButton mutationMode={OPERATE_MODE} /></>}
-                    rowClick={(id, resource, record) => false}
-                    expand={() => <WaitPakinPanel />}
+                    rowClick='edit'
+                    expand={false}
                     expandSingle={true}
                     omit={['id', 'createTime', 'createBy', 'memo']}
                 >
@@ -135,20 +128,14 @@
                     <TextField source="barcode" label="table.field.waitPakin.barcode" />
                     <NumberField source="anfme" label="table.field.waitPakin.anfme" />
                     <TextField source="ioStatus$" label="table.field.waitPakin.ioStatus" sortable={false} />
-
-                    <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>
+                    <TextField source="updateBy$" label="common.field.updateBy" />
+                    <DateField source="updateTime" label="common.field.updateTime" showTime  />
                     <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} />
+                        <EditButton label="toolbar.detail" sx={{ padding: '1px', fontSize: '.75rem' }} />
+                        {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
                     </WrapperField>
                 </StyledDatagrid>
             </List>
diff --git a/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx b/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx
index 6cbc531..9d8f88f 100644
--- a/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx
+++ b/rsf-admin/src/page/waitPakinItem/WaitPakinItemList.jsx
@@ -31,6 +31,7 @@
     ReferenceArrayInput,
     AutocompleteInput,
     DeleteButton,
+    useGetRecordId,
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
@@ -41,7 +42,7 @@
 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 { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
 import * as Common from '@/utils/common';
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
@@ -60,7 +61,6 @@
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
-
     <NumberInput source="pakinId" label="table.field.waitPakinItem.pakinId" />,
     <TextInput source="maktx" label="table.field.waitPakinItem.maktx" />,
     <NumberInput source="matnrId" label="table.field.waitPakinItem.matnrId" />,
@@ -71,7 +71,6 @@
     <TextInput source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" />,
     <NumberInput source="qty" label="table.field.waitPakinItem.qty" />,
     <TextInput source="batch" label="table.field.waitPakinItem.batch" />,
-
     <TextInput label="common.field.memo" source="memo" />,
     <SelectInput
         label="common.field.status"
@@ -86,13 +85,15 @@
 
 const WaitPakinItemList = () => {
     const translate = useTranslate();
-
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
+    const pakinId = useGetRecordId();
 
     return (
         <Box display="flex">
             <List
+            resource="waitPakinItem"
+            filter={{pakinId: pakinId}}
                 sx={{
                     flexGrow: 1,
                     transition: (theme) =>
@@ -113,7 +114,7 @@
                         <MyExportButton />
                     </TopToolbar>
                 )}
-                perPage={DEFAULT_PAGE_SIZE}
+                perPage={DEFAULT_ITEM_PAGE_SIZE}
             >
                 <StyledDatagrid
                     preferenceKey='waitPakinItem'
@@ -132,21 +133,13 @@
                     <TextField source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" />
                     <NumberField source="qty" label="table.field.waitPakinItem.qty" />
                     <TextField source="batch" label="table.field.waitPakinItem.batch" />
-
-                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
-                        <TextField source="nickname" />
-                    </ReferenceField>
+                    <TextField source="updateBy$" label="common.field.updateBy" />
                     <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>
+                    <TextField source="createBy$" label="common.field.createBy"  />
+                    <TextField source="flagDefect" label="common.field.createBy"  />
                     <DateField source="createTime" label="common.field.createTime" showTime />
                     <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                     <TextField source="memo" label="common.field.memo" sortable={false} />
-                    <WrapperField cellClassName="opt" label="common.field.opt">
-                        {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */}
-                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
-                    </WrapperField>
                 </StyledDatagrid>
             </List>
             <WaitPakinItemCreate
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index ddeb48c..c0d588d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -145,6 +145,7 @@
     @ApiOperation("缁勬嫋")
     @PostMapping("/waitPakin/merge")
     public R pikinOrder(@RequestBody WaitPakinParam waitPakin) {
+        Long userId = getLoginUserId();
         if (Objects.isNull(waitPakin)) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
@@ -154,7 +155,7 @@
         if (Objects.isNull(waitPakin.getItems()) || waitPakin.getItems().isEmpty()) {
             return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�");
         }
-        return R.ok(mobileService.mergeItems(waitPakin));
+        return R.ok(mobileService.mergeItems(waitPakin, userId));
     }
 
     @PreAuthorize("hasAuthority('manager:waitPakin:update')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
index ab4daa7..932f558 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -38,7 +38,7 @@
 
     R getDeltByCode(String code);
 
-    WaitPakin mergeItems(WaitPakinParam waitPakin);
+    WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId);
 
     WaitPakin unBind(WaitPakinParam param);
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index c8cd598..5dd5d83 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -16,7 +16,6 @@
 import com.vincent.rsf.server.common.security.JwtSubject;
 import com.vincent.rsf.server.common.utils.CommonUtil;
 import com.vincent.rsf.server.common.utils.FieldsUtils;
-import com.vincent.rsf.server.common.utils.JSONUtil;
 import com.vincent.rsf.server.common.utils.JwtUtil;
 import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
@@ -32,13 +31,10 @@
 import com.vincent.rsf.server.system.entity.*;
 import com.vincent.rsf.server.system.mapper.FieldsMapper;
 import com.vincent.rsf.server.system.mapper.TenantMapper;
-import com.vincent.rsf.server.system.mapper.UserMapper;
 import com.vincent.rsf.server.system.service.FieldsItemService;
 import com.vincent.rsf.server.system.service.UserLoginService;
 import com.vincent.rsf.server.system.service.UserService;
-import com.vincent.rsf.server.system.utils.ExtendFieldsUtils;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
-import net.sf.jsqlparser.statement.select.Wait;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,7 +44,6 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -370,7 +365,8 @@
      */
     @Override
     public R getReceiptAreas() {
-        return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)));
+        List<WarehouseAreas> areas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type));
+        return R.ok(areas);
     }
 
     /**
@@ -403,15 +399,16 @@
     }
 
     /**
+     * @param
+     * @param userId
+     * @return
      * @author Ryan
      * @description PDA缁勬嫋
-     * @param
-     * @return
      * @time 2025/3/29 14:26
      */
     @Override
-    public WaitPakin mergeItems(WaitPakinParam waitPakin) {
-        return waitPakinService.mergeItems(waitPakin);
+    public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) {
+        return waitPakinService.mergeItems(waitPakin, userId);
     }
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
index 32752f4..f6a22fb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
@@ -6,7 +6,7 @@
 
 public interface WaitPakinService extends IService<WaitPakin> {
 
-    WaitPakin mergeItems(WaitPakinParam waitPakin);
+    WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId);
 
     WaitPakin unBind(WaitPakinParam param);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 07e3d46..4ab88da 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.controller.params.PakinItem;
 import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
@@ -16,7 +15,6 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.parameters.P;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,15 +39,16 @@
     private LocService locService;
 
     /**
+     * @param
+     * @param userId
+     * @return
      * @author Ryan
      * @description 缁勬嫋
-     * @param
-     * @return
      * @time 2025/3/29 14:42
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public WaitPakin mergeItems(WaitPakinParam waitPakin) {
+    public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) {
         if (waitPakin.getItems().isEmpty()) {
             throw new CoolException("鍙傛暟閿欒锛氱墿鏂欒窡韪爜涓虹┖锛�");
         }
@@ -125,6 +124,8 @@
                         .setFieldsIndex(item.getFieldsIndex())
                         .setMatnrId(item.getMatnrId())
                         .setMaktx(item.getMaktx())
+                        .setUpdateBy(userId)
+                        .setCreateBy(userId)
                         .setMatnrCode(item.getMatnrCode());
                 for (PakinItem waitPakinItem : waitPakin.getItems()) {
                     if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {
@@ -159,6 +160,8 @@
                         .setFieldsIndex(item.getFieldsIndex())
                         .setMatnrId(item.getMatnrId())
                         .setMaktx(item.getMaktx())
+                        .setUpdateBy(userId)
+                        .setCreateBy(userId)
                         .setMatnrCode(item.getMatnrCode());
                 for (PakinItem waitPakinItem : waitPakin.getItems()) {
                     if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {

--
Gitblit v1.9.1