From a3be22ab605418ed8da9d50db541190fd892a7cf Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 10 四月 2025 11:38:54 +0800
Subject: [PATCH] no message
---
rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx | 233 +++++++++++++++++++++++++++++++++
rsf-admin/src/page/system/serialRule/SerialRuleItemCreate.jsx | 151 +++++++++++++++++++++
2 files changed, 384 insertions(+), 0 deletions(-)
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleItemCreate.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleItemCreate.jsx
new file mode 100644
index 0000000..f51326e
--- /dev/null
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleItemCreate.jsx
@@ -0,0 +1,151 @@
+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/serialRule/SerialRuleItemList.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
new file mode 100644
index 0000000..709c9f4
--- /dev/null
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
@@ -0,0 +1,233 @@
+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,
+} from "react-admin";
+import { Box, Typography, Card, Stack } from "@mui/material";
+import { styled } from "@mui/material/styles";
+import SerialRuleItemCreate from "./SerialRuleItemCreate";
+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" />,
+ <DateInput label="common.time.before" source="timeEnd" />,
+
+ <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 ruleId = useGetRecordId();
+
+ return (
+ <>
+ {ruleId && <CustomerTopToolBar backPrevious={true} />}
+ <Box display="flex">
+ <List
+ resource="serialRuleItem"
+ 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 }}
+ 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={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;
--
Gitblit v1.9.1