verou
2025-04-10 34079a90f7fbdd0f1c47aeb75588628ebf21f15a
rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
New file
@@ -0,0 +1,225 @@
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 ruleId = useGetRecordId();
  return (
    <>
      <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;