From f0bcc3aaa31f9658cbed0ef4bcc5b6de486fd903 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 26 三月 2025 12:32:19 +0800
Subject: [PATCH] 物料上级分组不显示问题修复

---
 rsf-admin/src/page/basicInfo/loc/LocList.jsx |  144 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 127 insertions(+), 17 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
index 02de0c2..af7f744 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -33,18 +33,19 @@
     DeleteButton,
     useRefresh,
     Button,
-    useList
+    useList,
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
 import LocCreate from "./LocCreate";
-import LocPanel from "./LocPanel";
+import BindModal from "./BindModal";
 import EmptyData from "../../components/EmptyData";
 import DynamicField from "../../components/DynamicField";
 import MyCreateButton from "../../components/MyCreateButton";
 import MyExportButton from '../../components/MyExportButton';
 import InitButton from './InitButton';
 import BatchModal from './BatchModal';
+import SubzoneModal from './SubzoneModal';
 import PageDrawer from "../../components/PageDrawer";
 import MyField from "../../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
@@ -52,7 +53,10 @@
 import DashboardIcon from '@mui/icons-material/Dashboard';
 import EditIcon from '@mui/icons-material/Edit';
 import request from '@/utils/request';
-
+import DiscountIcon from '@mui/icons-material/Discount';
+import LinkIcon from '@mui/icons-material/Link';
+import InitModal from "./InitModal";
+import LocListAside from "./LocListAside";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -66,13 +70,41 @@
     '& .opt': {
         width: 200
     },
+    '& .RaDatagrid-headerCell': {
+        textAlign: 'left'
+    },
+    '& .RaDatagrid-rowCell': {
+        textAlign: 'left'
+    }
 }));
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
 
-    <NumberField source="warehouseId$" label="table.field.loc.warehouseId" />,
-    <NumberField source="areaId$" label="table.field.loc.areaId" />,
+    <ReferenceInput
+        source="warehouseId"
+        label="table.field.loc.warehouseId"
+        reference="warehouse"
+        alwaysOn
+    >
+        <AutocompleteInput
+            label="table.field.loc.warehouseId"
+            optionText="name"
+            filterToQuery={(val) => ({ name: val })}
+        />
+    </ReferenceInput>,
+    <ReferenceInput
+        source="areaId"
+        label="table.field.loc.areaId"
+        reference="warehouseAreas"
+        alwaysOn
+    >
+        <AutocompleteInput
+            label="table.field.loc.areaId"
+            optionText="name"
+            filterToQuery={(val) => ({ name: val })}
+        />
+    </ReferenceInput>,
     <TextInput source="code" label="table.field.loc.code" />,
     <TextInput source="type" label="table.field.loc.type" />,
     <TextInput source="name" label="table.field.loc.name" />,
@@ -104,14 +136,13 @@
 
 const LocList = () => {
     const translate = useTranslate();
+    const notify = useNotify();
+    const refresh = useRefresh();
 
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
+    const [initDialog, setInitDialog] = useState(false);
 
-    const dynamicFields = [
-        { type: 'text', source: 'code', label: '娴嬭瘯1' },
-        { type: 'text', source: 'type$', label: '娴嬭瘯2' },
-    ];
     return (
         <Box display="flex">
             <List
@@ -124,7 +155,33 @@
                     marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                 }}
                 title={"menu.loc"}
-                empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+                empty={<EmptyData
+                    children={
+                        <Box sx={{ gap: 2, display: 'flex' }}>
+                            <Button
+                                variant="contained"
+                                color="primary"
+                                sx={{
+                                    fontSize: '1em',
+                                    mt: 2
+                                }}
+                                onClick={() => { setCreateDialog(true) }}>
+                                {translate('create.empty.button')}
+                            </Button>
+
+                            <Button
+                                variant="contained"
+                                color="primary"
+                                sx={{
+                                    fontSize: '1em',
+                                    mt: 2
+                                }}
+                                onClick={() => { setInitDialog(true) }}>
+                                {translate('toolbar.locInit')}
+                            </Button>
+                        </Box>
+                    }
+                    onClick={() => { }} />}
                 filters={filters}
                 sort={{ field: "create_time", order: "desc" }}
                 actions={(
@@ -137,17 +194,20 @@
                     </TopToolbar>
                 )}
                 perPage={DEFAULT_PAGE_SIZE}
+                aside={<LocListAside />}
             >
                 <StyledDatagrid
                     preferenceKey='loc'
+                    align="left"
                     bulkActionButtons={
                         <>
                             <BatchButton />
+                            <BindButton />
+                            <SubzoneButton />
                             <BulkDeleteButton />
                         </>
                     }
                     rowClick={() => false}
-                    expand={() => <LocPanel />}
                     omit={['id', 'createTime', 'createBy', 'memo', 'updateTime', 'updateBy']}
                 >
                     <NumberField source="id" />
@@ -175,15 +235,13 @@
                     <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}>
+                    <DateField source="updateTime" label="common.field.updateTime" showTime align="left" />
+                    <ReferenceField source="createBy" label="common.field.createBy" align="left" 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} />
+                    <DateField source="createTime" label="common.field.createTime" showTime align="left" />
+                    <BooleanField source="statusBool" label="common.field.status" sortable={false} align="left" />
                     <TextField source="memo" label="common.field.memo" sortable={false} />
-
-                    {/* <DynamicField fields={dynamicFields} /> */}
 
                     <WrapperField cellClassName="opt" label="common.field.opt">
                         <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
@@ -203,6 +261,11 @@
                 setDrawerVal={setDrawerVal}
             >
             </PageDrawer>
+
+            <InitModal
+                open={initDialog}
+                setOpen={setInitDialog}
+            />
         </Box>
     )
 }
@@ -243,6 +306,7 @@
 
     const [createDialog, setCreateDialog] = useState(false);
 
+
     return (
         <>
             <Button onClick={() => setCreateDialog(true)} label={"toolbar.batch"}>
@@ -256,4 +320,50 @@
         </>
 
     )
+}
+
+const SubzoneButton = () => {
+    const record = useRecordContext();
+    const notify = useNotify();
+    const refresh = useRefresh();
+
+
+    const [createDialog, setCreateDialog] = useState(false);
+
+    return (
+        <>
+            <Button onClick={() => setCreateDialog(true)} label={"toolbar.subzone"}>
+                <DiscountIcon />
+            </Button>
+
+            <SubzoneModal
+                open={createDialog}
+                setOpen={setCreateDialog}
+            />
+        </>
+
+    )
+}
+
+const BindButton = () => {
+    const record = useRecordContext();
+    const notify = useNotify();
+    const refresh = useRefresh();
+
+
+    const [createDialog, setCreateDialog] = useState(false);
+
+    return (
+        <>
+            <Button onClick={() => setCreateDialog(true)} label={"toolbar.bindmatnr"}>
+                <LinkIcon />
+            </Button>
+
+            <BindModal
+                open={createDialog}
+                setOpen={setCreateDialog}
+            />
+        </>
+
+    )
 }
\ No newline at end of file

--
Gitblit v1.9.1