From 0f0d395bb06debf5018e69dcb8528dacaae87a5a Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 11 四月 2025 12:49:44 +0800
Subject: [PATCH] 编码规则,数据字典界面优化及修改

---
 /dev/null                                                   |   18 ------
 rsf-admin/src/page/system/dicts/dictType/index.jsx          |    2 
 rsf-admin/src/page/system/serialRule/SerialRuleList.jsx     |   27 ++------
 rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx   |    6 +-
 rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx |   47 +++++++--------
 rsf-admin/src/i18n/zh.js                                    |    3 +
 rsf-admin/src/page/ResourceContent.js                       |   12 ++--
 rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx   |   18 ++----
 rsf-admin/.env                                              |    2 
 9 files changed, 49 insertions(+), 86 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=127.0.0.1
 # VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index e1546a9..f2bf06e 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -9,6 +9,9 @@
             fail: "鏈嶅姟鍣ㄩ敊璇�",
             dataError: "鏁版嵁閿欒锛岃浠旂粏妫�鏌�",
         },
+        button: {
+            edit: "缂栬緫",
+        },
         field: {
             id: 'ID',
             uuid: '缂栧彿',
diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js
index 7f54c8c..82f7ee1 100644
--- a/rsf-admin/src/page/ResourceContent.js
+++ b/rsf-admin/src/page/ResourceContent.js
@@ -23,13 +23,13 @@
 import qlyInspect from './qlyInspect';
 import qlyIsptItem from './qlyIsptItem';
 import dictType from './system/dicts/dictType';
-import dictData from './system/dicts/dictData';
+// 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 serialRuleItem from './system/serialRuleItem';
 import serialRule from './system/serialRule';
 import whMat from './basicInfo/whMat';
 import asnOrder from './asnOrder';
@@ -89,12 +89,12 @@
             return qlyIsptItem;
         case 'dictType':
             return dictType;
-        case 'dictData':
-            return dictData;
+        // case 'dictData':
+        //     return dictData;
         case 'companys':
             return companys;
-        case 'serialRuleItem':
-            return serialRuleItem;
+        // case 'serialRuleItem':
+        //     return serialRuleItem;
         case 'serialRule':
             return serialRule;
         case 'whMat':
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
deleted file mode 100644
index 058996b..0000000
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
+++ /dev/null
@@ -1,160 +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 DictDataCreate = (props) => {
-    const { open, setOpen, record } = 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
-                resource="dictData"
-                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.dictData.dictTypeId"
-                                        source="dictTypeId"
-                                        defaultValue={record?.id}
-                                        parse={v => v}
-                                        readOnly
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.dictData.dictTypeCode"
-                                        source="dictTypeCode"
-                                        parse={v => v}
-                                        readOnly
-                                        defaultValue={record?.code}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.dictData.value"
-                                        source="value"
-                                        parse={v => v}
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.dictData.label"
-                                        validate={required()}
-                                        autoFocus
-                                        source="label"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.dictData.sort"
-                                        source="sort"
-                                    />
-                                </Grid>
-                                {/* <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.dictData.color"
-                                        source="color"
-                                        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 DictDataCreate;
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
deleted file mode 100644
index e0f2fbe..0000000
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
+++ /dev/null
@@ -1,134 +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,
-    useNotify,
-    useRedirect,
-    useEditContext,
-} 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 form = useFormContext();
-    const { record, isPending } = useEditContext();
-    const redirect = useRedirect();
-    return (
-        <Toolbar sx={{ justifyContent: 'end' }}>
-            <SaveButton type="button" mutationOptions={{onSuccess:() => {
-                redirect('/dictType/' + record?.dictTypeId)
-            } }}/>
-            <DeleteButton mutationMode="optimistic" />
-        </Toolbar>
-    )
-}
-
-const DictDataEdit = () => {
-    const translate = useTranslate();
-
-    return (
-        <Edit
-            redirect="list"
-            resource="dictData"
-            mutationMode={EDIT_MODE}
-            actions={<CustomerTopToolBar backPrevious={true} />}
-            aside={<EditBaseAside />}
-        >
-            <SimpleForm
-                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.dictData.dictTypeId"
-                                source="dictTypeId"
-                                readOnly
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.dictData.dictTypeCode"
-                                source="dictTypeCode"
-                                readOnly
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.dictData.value"
-                                source="value"
-                                parse={v => v}
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.dictData.label"
-                                source="label"
-                                validate={required()}
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.dictData.sort"
-                                source="sort"
-                            />
-                        </Stack>
-                        {/* <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.dictData.color"
-                                source="color"
-                                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 DictDataEdit;
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
deleted file mode 100644
index 8c508bd..0000000
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
+++ /dev/null
@@ -1,158 +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,
-    useGetRecordId,
-    useGetPathForRecord,
-    useGetOne,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import DictDataCreate from "./DictDataCreate";
-import EmptyData from "../../../components/EmptyData";
-import MyCreateButton from "../../../components/MyCreateButton";
-import MyExportButton from '../../../components/MyExportButton';
-import PageDrawer from "../../../components/PageDrawer";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
-    '& .css-1vooibu-MuiSvgIcon-root': {
-        height: '.9em'
-    },
-    '& .RaDatagrid-row': {
-        cursor: 'auto'
-    },
-    '& .column-name': {
-    },
-    '& .opt': {
-        width: 200
-    },
-}));
-
-const filters = [
-    <SearchInput source="condition" alwaysOn />,
-    <TextInput source="dictTypeId" label="table.field.dictData.dictTypeId" />,
-    <TextInput source="dictTypeCode" label="table.field.dictData.dictTypeCode" />,
-    <TextInput source="value" label="table.field.dictData.value" />,
-    <TextInput source="label" label="table.field.dictData.label" />,
-    <NumberInput source="sort" label="table.field.dictData.sort" />,
-    // <TextInput source="color" label="table.field.dictData.color" />,
-    <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 DictDataList = () => {
-    const translate = useTranslate();
-    const [createDialog, setCreateDialog] = useState(false);
-    const [drawerVal, setDrawerVal] = useState(false);
-    const dictId = useGetRecordId();
-    const {data: dicts, isPending, error} =  useGetOne('dictType', {id: dictId});
-    
-    return (
-        <>
-            <Box display="flex" >
-                <List
-                    resource="dictData"
-                    sx={{
-                        flexGrow: 1,
-                        transition: (theme) =>
-                            theme.transitions.create(['all'], {
-                                duration: theme.transitions.duration.enteringScreen,
-                            }),
-                        marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
-                    }}
-                    title={"menu.dictData"}
-                    empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
-                    filters={filters}
-                    filter={{ dictTypeId: dictId }}
-                    sort={{ field: "create_time", order: "desc" }}
-                    actions={(
-                        <TopToolbar>
-                            <FilterButton />
-                            <MyCreateButton onClick={() => { setCreateDialog(true) }} />
-                            <SelectColumnsButton preferenceKey='dictData' />
-                            <MyExportButton />
-                        </TopToolbar>
-                    )}
-                    perPage={DEFAULT_PAGE_SIZE}
-                >
-                    <StyledDatagrid
-                        preferenceKey='dictData'
-                        bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
-                        rowClick="edit"
-                        omit={['id', 'createTime', 'createBy', 'memo']}
-                    >
-                        <NumberField source="id" />
-                        <TextField source="dictTypeId" label="table.field.dictData.dictTypeId" />
-                        <TextField source="dictTypeCode" label="table.field.dictData.dictTypeCode" />
-                        <TextField source="value" label="table.field.dictData.value" />
-                        <TextField source="label" label="table.field.dictData.label" />
-                        <NumberField source="sort" label="table.field.dictData.sort" />
-                        <TextField source="updateBy$" label="common.field.updateBy" />
-                        <DateField source="updateTime" label="common.field.updateTime" showTime />
-                        <TextField source="createBy$" label="common.field.createBy" />
-                        <DateField source="createTime" label="common.field.createTime" showTime />
-                        <BooleanField source="statusBool" label="common.field.status" sortable={false} />
-                        <TextField source="memo" label="common.field.memo" sortable={false} />
-                        <WrapperField cellClassName="opt" label="common.field.opt">
-                            <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE}  redirect={"/dictType/" + dictId}/>
-                            <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} redirect={"/dictType/" + dictId} />
-                        </WrapperField>
-                    </StyledDatagrid>
-                </List>
-                <DictDataCreate
-                    open={createDialog}
-                    record={dicts}
-                    setOpen={setCreateDialog}
-                />
-                <PageDrawer
-                    title='DictData Detail'
-                    drawerVal={drawerVal}
-                    setDrawerVal={setDrawerVal}
-                >
-                </PageDrawer>
-            </Box>
-        </>
-
-    )
-}
-
-export default DictDataList;
diff --git a/rsf-admin/src/page/system/dicts/dictData/index.jsx b/rsf-admin/src/page/system/dicts/dictData/index.jsx
deleted file mode 100644
index 31b11ac..0000000
--- a/rsf-admin/src/page/system/dicts/dictData/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
-    ListGuesser,
-    EditGuesser,
-    ShowGuesser,
-} from "react-admin";
-
-import DictDataList from "./DictDataList";
-import DictDataEdit from "./DictDataEdit";
-
-export default {
-    list: DictDataList,
-    edit: DictDataEdit,
-    show: ShowGuesser,
-    recordRepresentation: (record) => {
-        return `${record.id}`
-    }
-};
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx
index d938890..c9905f0 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx
@@ -28,12 +28,13 @@
 import CustomerTopToolBar from "../../../components/EditTopToolBar";
 import MemoInput from "../../../components/MemoInput";
 import StatusSelectInput from "../../../components/StatusSelectInput";
-import DictDataList from "../dictData/DictDataList";
+import DictDataEdit  from "./DictDataEdit";
+import DictDataList from "./DictDataList";
 
 const FormToolbar = () => {
     const { getValues } = useFormContext();
     return (
-        <Toolbar sx={{ justifyContent: 'space-between' }}>
+        <Toolbar sx={{ justifyContent: 'end' }}>
             <SaveButton />
             <DeleteButton mutationMode="optimistic" />
         </Toolbar>
@@ -42,7 +43,6 @@
 
 const DictTypeEdit = () => {
     const translate = useTranslate();
-
     return (
         <>
             <Edit
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
index 41e773d..e5b7332 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
@@ -35,14 +35,10 @@
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
 import DictTypeCreate from "./DictTypeCreate";
-import DictTypePanel from "./DictTypePanel";
 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': {
@@ -62,11 +58,9 @@
     <SearchInput source="condition" alwaysOn />,
     <DateInput label='common.time.after' source="timeStart" alwaysOn />,
     <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
     <TextInput source="code" label="table.field.dictType.code" />,
     <TextInput source="name" label="table.field.dictType.name" />,
     <TextInput source="description" label="table.field.dictType.description" />,
-
     <TextInput label="common.field.memo" source="memo" />,
     <SelectInput
         label="common.field.status"
@@ -111,15 +105,15 @@
                 <StyledDatagrid
                     preferenceKey='dictType'
                     bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
-                    rowClick={(id, resource, record) => false}
+                    rowClick={'edit'}
                     omit={['id', 'createTime', 'createBy', 'memo']}
                 >
                     <NumberField source="id" />
-                    <MyField source="code" label="table.field.dictType.code"
-                        onClick={(event, record, val) => {
-                            event.stopPropagation();
-                            assign(record);
-                        }}
+                    <TextField source="code" label="table.field.dictType.code"
+                        // onClick={(event, record, val) => {
+                        //     event.stopPropagation();
+                        //     assign(record);
+                        // }}
                     />
                     <TextField source="name" label="table.field.dictType.name" />
                     <TextField source="description" label="table.field.dictType.description" />
diff --git a/rsf-admin/src/page/system/dicts/dictType/index.jsx b/rsf-admin/src/page/system/dicts/dictType/index.jsx
index 7dc7dcb..b0f025e 100644
--- a/rsf-admin/src/page/system/dicts/dictType/index.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/index.jsx
@@ -11,7 +11,7 @@
 export default {
     list: DictTypeList,
     edit: DictTypeEdit,
-    show: ShowGuesser,
+    // show: ShowGuesser,
     recordRepresentation: (record) => {
         return `${record.name}`
     }
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
deleted file mode 100644
index c3d15cc..0000000
--- a/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
+++ /dev/null
@@ -1,90 +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 SerialRuleItem from "../serialRuleItem/index";
-
-const SerialRuleDetail = (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 (
-    <>
-      <Dialog
-        open={open}
-        onClose={handleClose}
-        aria-labelledby="form-dialog-title"
-        fullWidth
-        disableRestoreFocus
-        maxWidth="xl" // '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 }}>
-          <SerialRuleItem.list />
-        </DialogContent>
-      </Dialog>
-    </>
-  );
-};
-
-export default SerialRuleDetail;
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
index c99a1bc..d21dae8 100644
--- a/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
@@ -38,6 +38,7 @@
   AutocompleteInput,
   DeleteButton,
   useGetRecordId,
+  Button,
 } from "react-admin";
 import { Box, Typography, Card, Stack } from "@mui/material";
 import { styled } from "@mui/material/styles";
@@ -54,6 +55,7 @@
 } from "@/config/setting";
 import * as Common from "@/utils/common";
 import CustomerTopToolBar from "../../components/EditTopToolBar";
+import SerialRuleItemEdit from "./SerialRuleItemEdit";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
   "& .css-1vooibu-MuiSvgIcon-root": {
@@ -93,7 +95,9 @@
 const SerialRuleItemList = () => {
   const translate = useTranslate();
   const [createDialog, setCreateDialog] = useState(false);
+  const [editDialog, setEditDialog] = useState(false);
   const [drawerVal, setDrawerVal] = useState(false);
+  const [select, setSelect] = useState({});
   const ruleId = useGetRecordId();
 
   return (
@@ -110,13 +114,7 @@
             marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
           }}
           title={"menu.serialRuleItem"}
-          empty={
-            <EmptyData
-              onClick={() => {
-                setCreateDialog(true);
-              }}
-            />
-          }
+          empty={false}
           filters={filters}
           filter={{ ruleId: ruleId }}
           sort={{ field: "create_time", order: "desc" }}
@@ -139,7 +137,10 @@
             bulkActionButtons={() => (
               <BulkDeleteButton mutationMode={OPERATE_MODE} />
             )}
-            rowClick={false}
+            rowClick={(id, resource, record) => {
+              setSelect(record)
+              setEditDialog(true)
+            }}
             omit={["id", "createTime", "createBy", "memo"]}
           >
             <NumberField source="id" />
@@ -164,29 +165,19 @@
               source="sort"
               label="table.field.serialRuleItem.sort"
             />
-            <ReferenceField
-              source="updateBy"
+            <TextField
+              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"
+            <TextField
+              source="createBy$"
               label="common.field.createBy"
-              reference="user"
-              link={false}
-              sortable={false}
-            >
-              <TextField source="nickname" />
-            </ReferenceField>
+            />
             <DateField
               source="createTime"
               label="common.field.createTime"
@@ -203,15 +194,21 @@
               sortable={false}
             />
             <WrapperField cellClassName="opt" label="common.field.opt">
-              <EditButton sx={{ padding: "1px", fontSize: ".75rem" }} />
+              <Button onClick={() => {
+                setSelect(re)
+                setEditDialog(true)
+              }} label={'ra.action.edit'}
+              > </Button>
               <DeleteButton
                 sx={{ padding: "1px", fontSize: ".75rem" }}
                 mutationMode={OPERATE_MODE}
+                redirect={'/serialRule/' + ruleId}
               />
             </WrapperField>
           </StyledDatagrid>
         </List>
         <SerialRuleItemCreate open={createDialog} setOpen={setCreateDialog} />
+        <SerialRuleItemEdit open={editDialog} setOpen={setEditDialog} record={select} />
         <PageDrawer
           title="SerialRuleItem Detail"
           drawerVal={drawerVal}
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
index 8b4c623..d7a19a9 100644
--- a/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
@@ -41,8 +41,6 @@
 import { Box, Typography, Card, Stack } from "@mui/material";
 import { styled } from "@mui/material/styles";
 import SerialRuleCreate from "./SerialRuleCreate";
-import SerialRuleDetail from "./SerialRuleDetail";
-import SerialRulePanel from "./SerialRulePanel";
 import EmptyData from "../../components/EmptyData";
 import MyCreateButton from "../../components/MyCreateButton";
 import MyExportButton from "../../components/MyExportButton";
@@ -79,7 +77,6 @@
   <TextInput source="resetDep" label="table.field.serialRule.resetDep" />,
   <TextInput source="currValue" label="table.field.serialRule.currValue" />,
   <TextInput source="lastCode" label="table.field.serialRule.lastCode" />,
-
   <TextInput label="common.field.memo" source="memo" />,
   <SelectInput
     label="common.field.status"
@@ -165,29 +162,19 @@
             label="table.field.serialRule.lastCode"
           />
 
-          <ReferenceField
-            source="updateBy"
+          <TextField
+            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"
+          <TextField
+            source="createBy$"
             label="common.field.createBy"
-            reference="user"
-            link={false}
-            sortable={false}
-          >
-            <TextField source="nickname" />
-          </ReferenceField>
+          />
           <DateField
             source="createTime"
             label="common.field.createTime"
@@ -209,7 +196,7 @@
         </StyledDatagrid>
       </List>
       <SerialRuleCreate open={createDialog} setOpen={setCreateDialog} />
-      <SerialRuleDetail open={detailDialog} setOpen={setDetailDialog} />
+      {/* <SerialRuleDetail open={detailDialog} setOpen={setDetailDialog} /> */}
       <PageDrawer
         title="SerialRule Detail"
         drawerVal={drawerVal}
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx
deleted file mode 100644
index f51326e..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx
+++ /dev/null
@@ -1,151 +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 SerialRuleItemCreate = (props) => {
-    const { open, setOpen } = props;
-
-    const translate = useTranslate();
-    const notify = useNotify();
-
-    const handleClose = (event, reason) => {
-        if (reason !== "backdropClick") {
-            setOpen(false);
-        }
-    };
-
-    const handleSuccess = async (data) => {
-        setOpen(false);
-        notify('common.response.success');
-    };
-
-    const handleError = async (error) => {
-        notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
-    };
-
-    return (
-        <>
-            <CreateBase
-                record={{}}
-                transform={(data) => {
-                    return data;
-                }}
-                mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
-            >
-                <Dialog
-                    open={open}
-                    onClose={handleClose}
-                    aria-labelledby="form-dialog-title"
-                    fullWidth
-                    disableRestoreFocus
-                    maxWidth="md"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
-                >
-                    <Form>
-                        <DialogTitle id="form-dialog-title" sx={{
-                            position: 'sticky',
-                            top: 0,
-                            backgroundColor: 'background.paper',
-                            zIndex: 1000
-                        }}
-                        >
-                            {translate('create.title')}
-                            <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
-                                <DialogCloseButton onClose={handleClose} />
-                            </Box>
-                        </DialogTitle>
-                        <DialogContent sx={{ mt: 2 }}>
-                            <Grid container rowSpacing={2} columnSpacing={2}>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.serialRuleItem.ruleId"
-                                        source="ruleId"
-                                        autoFocus
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.serialRuleItem.wkType"
-                                        source="wkType"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <TextInput
-                                        label="table.field.serialRuleItem.feildValue"
-                                        source="feildValue"
-                                        parse={v => v}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.serialRuleItem.len"
-                                        source="len"
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.serialRuleItem.lenStr"
-                                        source="lenStr"
-                                        validate={required()}
-                                    />
-                                </Grid>
-                                <Grid item xs={6} display="flex" gap={1}>
-                                    <NumberInput
-                                        label="table.field.serialRuleItem.sort"
-                                        source="sort"
-                                        validate={required()}
-                                    />
-                                </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 SerialRuleItemCreate;
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx
deleted file mode 100644
index ecd5ba0..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx
+++ /dev/null
@@ -1,123 +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 SerialRuleItemEdit = () => {
-    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.serialRuleItem.ruleId"
-                                source="ruleId"
-                                autoFocus
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.serialRuleItem.wkType"
-                                source="wkType"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.serialRuleItem.feildValue"
-                                source="feildValue"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.serialRuleItem.len"
-                                source="len"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.serialRuleItem.lenStr"
-                                source="lenStr"
-                                validate={required()}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.serialRuleItem.sort"
-                                source="sort"
-                                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 SerialRuleItemEdit;
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx
deleted file mode 100644
index 703190d..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx
+++ /dev/null
@@ -1,234 +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,
-} from "react-admin";
-import { Box, Typography, Card, Stack } from "@mui/material";
-import { styled } from "@mui/material/styles";
-import SerialRuleItemCreate from "./SerialRuleItemCreate";
-import SerialRuleItemPanel from "./SerialRuleItemPanel";
-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";
-
-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 />,
-  <DateInput label="common.time.after" source="timeStart" alwaysOn />,
-  <DateInput label="common.time.before" source="timeEnd" alwaysOn />,
-
-  <NumberInput source="ruleId" label="table.field.serialRuleItem.ruleId" />,
-  <TextInput source="wkType" label="table.field.serialRuleItem.wkType" />,
-  <TextInput
-    source="feildValue"
-    label="table.field.serialRuleItem.feildValue"
-  />,
-  <NumberInput source="len" label="table.field.serialRuleItem.len" />,
-  <NumberInput source="lenStr" label="table.field.serialRuleItem.lenStr" />,
-  <NumberInput source="sort" label="table.field.serialRuleItem.sort" />,
-
-  <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 SerialRuleItemList = () => {
-  const translate = useTranslate();
-  const [createDialog, setCreateDialog] = useState(false);
-  const [drawerVal, setDrawerVal] = useState(false);
-
-  const location = useLocation();
-  const queryParams = new URLSearchParams(location.search);
-  const ruleId = queryParams.get("ruleId");
-
-  return (
-    <>
-      {ruleId && <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.serialRuleItem"}
-          empty={
-            <EmptyData
-              onClick={() => {
-                setCreateDialog(true);
-              }}
-            />
-          }
-          filters={filters}
-          filter={ruleId ? { ruleId } : undefined}
-          sort={{ field: "create_time", order: "desc" }}
-          actions={
-            <TopToolbar>
-              <FilterButton />
-              <MyCreateButton
-                onClick={() => {
-                  setCreateDialog(true);
-                }}
-              />
-              <SelectColumnsButton preferenceKey="serialRuleItem" />
-              <MyExportButton />
-            </TopToolbar>
-          }
-          perPage={DEFAULT_PAGE_SIZE}
-        >
-          <StyledDatagrid
-            preferenceKey="serialRuleItem"
-            bulkActionButtons={() => (
-              <BulkDeleteButton mutationMode={OPERATE_MODE} />
-            )}
-            rowClick={(id, resource, record) => false}
-            omit={["id", "createTime", "createBy", "memo"]}
-          >
-            <NumberField source="id" />
-            <NumberField
-              source="ruleId"
-              label="table.field.serialRuleItem.ruleId"
-            />
-            <TextField
-              source="wkType"
-              label="table.field.serialRuleItem.wkType"
-            />
-            <TextField
-              source="feildValue"
-              label="table.field.serialRuleItem.feildValue"
-            />
-            <NumberField source="len" label="table.field.serialRuleItem.len" />
-            <NumberField
-              source="lenStr"
-              label="table.field.serialRuleItem.lenStr"
-            />
-            <NumberField
-              source="sort"
-              label="table.field.serialRuleItem.sort"
-            />
-
-            <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>
-        <SerialRuleItemCreate open={createDialog} setOpen={setCreateDialog} />
-        <PageDrawer
-          title="SerialRuleItem Detail"
-          drawerVal={drawerVal}
-          setDrawerVal={setDrawerVal}
-        ></PageDrawer>
-      </Box>
-    </>
-  );
-};
-
-export default SerialRuleItemList;
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx
deleted file mode 100644
index 47d94ce..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx
+++ /dev/null
@@ -1,87 +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 SerialRuleItemPanel = () => {
-    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.serialRuleItem.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.serialRuleItem.ruleId" 
-                                property={record.ruleId}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.serialRuleItem.wkType" 
-                                property={record.wkType$}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.serialRuleItem.feildValue" 
-                                property={record.feildValue}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.serialRuleItem.len" 
-                                property={record.len}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.serialRuleItem.lenStr" 
-                                property={record.lenStr}
-                            />
-                        </Grid>
-                        <Grid item xs={6}>
-                            <PanelTypography
-                                title="table.field.serialRuleItem.sort" 
-                                property={record.sort}
-                            />
-                        </Grid>
-
-                    </Grid>
-                </CardContent>
-            </Card >
-        </>
-    );
-};
-
-export default SerialRuleItemPanel;
diff --git a/rsf-admin/src/page/system/serialRuleItem/index.jsx b/rsf-admin/src/page/system/serialRuleItem/index.jsx
deleted file mode 100644
index d7a3bde..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
-    ListGuesser,
-    EditGuesser,
-    ShowGuesser,
-} from "react-admin";
-
-import SerialRuleItemList from "./SerialRuleItemList";
-import SerialRuleItemEdit from "./SerialRuleItemEdit";
-
-export default {
-    list: SerialRuleItemList,
-    edit: SerialRuleItemEdit,
-    show: ShowGuesser,
-    recordRepresentation: (record) => {
-        return `${record.id}`
-    }
-};

--
Gitblit v1.9.1