From b5b400a615743a74e9d127261bd3785554aa06aa Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期六, 10 一月 2026 13:34:40 +0800
Subject: [PATCH] #

---
 rsf-admin/src/page/system/role/RoleList.jsx |   64 +++++++++++++++++++++++++++++++-
 1 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/rsf-admin/src/page/system/role/RoleList.jsx b/rsf-admin/src/page/system/role/RoleList.jsx
index 0c5ea8f..bfed6b2 100644
--- a/rsf-admin/src/page/system/role/RoleList.jsx
+++ b/rsf-admin/src/page/system/role/RoleList.jsx
@@ -45,6 +45,7 @@
 import AssignPermissions from "./AssignPermissions";
 import AssignPermissionsPda from "./AssignPermissions_pda";
 import AssignPermissionsMatnr from "./AssignPermissions_matnr";
+import AssignPermissionsWarehouse from "./AssignPermissions_warehouse";
 import request from '@/utils/request';
 import AssignmentIndIcon from '@mui/icons-material/AssignmentInd';
 import AdUnitsIcon from '@mui/icons-material/AdUnits';
@@ -88,6 +89,7 @@
     const [drawerVal, setDrawerVal] = useState(false);
     const [drawerValPda, setDrawerValPda] = useState(false);
     const [drawerValMatnr, setDrawerValMatnr] = useState(false);
+    const [drawerValWarehouse, setDrawerValWarehouse] = useState(false);
 
     const [menuIds, setMenuIds] = useState([]);
 
@@ -95,6 +97,8 @@
 
     const assign = (record) => {
         setDrawerValPda(false);
+        setDrawerValMatnr(false);
+        setDrawerValWarehouse(false);
         request('/role/scope/list', {
             method: 'GET',
             params: {
@@ -113,6 +117,8 @@
 
     const assignPda = (record) => {
         setDrawerVal(false);
+        setDrawerValMatnr(false);
+        setDrawerValWarehouse(false);
         request('/rolePda/scope/list', {
             method: 'GET',
             params: {
@@ -131,6 +137,8 @@
 
     const assignMatnr = (record) => {
         setDrawerVal(false);
+        setDrawerValPda(false);
+        setDrawerValWarehouse(false);
         request('/roleMatnr/scope/list', {
             method: 'GET',
             params: {
@@ -147,6 +155,26 @@
         });
     }
 
+    const assignWarehouse = (record) => {
+        setDrawerVal(false);
+        setDrawerValPda(false);
+        setDrawerValMatnr(false);
+        request('/roleWarehouse/scope/list', {
+            method: 'GET',
+            params: {
+                roleId: record.id
+            }
+        }).then((res) => {
+            if (res?.data?.code === 200) {
+                const { data: menuIds } = res.data;
+                setMenuIds(menuIds || []);
+                setDrawerValWarehouse(!!drawerValWarehouse && drawerValWarehouse === record ? null : record);
+            } else {
+                notify(res.data.msg, { type: 'error' });
+            }
+        });
+    }
+
     return (
         <Box display="flex">
             <List
@@ -156,7 +184,7 @@
                         theme.transitions.create(['all'], {
                             duration: theme.transitions.duration.enteringScreen,
                         }),
-                    marginRight: (!!drawerVal || !!drawerValPda || !!drawerValMatnr) ? `${PAGE_DRAWER_WIDTH}px` : 0,
+                    marginRight: (!!drawerVal || !!drawerValPda || !!drawerValMatnr || !!drawerValWarehouse) ? `${PAGE_DRAWER_WIDTH}px` : 0,
                 }}
                 title={"menu.role"}
                 empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
@@ -196,6 +224,7 @@
                             assign={assign}
                             assignPda={assignPda}
                             assignMatnr={assignMatnr}
+                            assignWarehouse={assignWarehouse}
                             setAuthType={setAuthType}
                         />
                         <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
@@ -261,11 +290,29 @@
                     authType={authType}
                 />
             </PageDrawer>
+            <PageDrawer
+                drawerVal={drawerValWarehouse}
+                setDrawerVal={setDrawerValWarehouse}
+                title={!!drawerValWarehouse ? `Scope by ${drawerValWarehouse.code || drawerValWarehouse.name}` : 'Role Detail'}
+                closeCallback={() => {
+                    setMenuIds([]);
+                }}
+            >
+                <AssignPermissionsWarehouse
+                    role={drawerValWarehouse}
+                    originMenuIds={menuIds}
+                    setDrawerVal={setDrawerValWarehouse}
+                    closeCallback={() => {
+                        setMenuIds([]);
+                    }}
+                    authType={authType}
+                />
+            </PageDrawer>
         </Box>
     )
 }
 
-const PermissionMenuButton = ({ assign, assignPda, assignMatnr, setAuthType }) => {
+const PermissionMenuButton = ({ assign, assignPda, assignMatnr, assignWarehouse, setAuthType }) => {
     const record = useRecordContext();
     const [anchorEl, setAnchorEl] = useState(null);
     const open = Boolean(anchorEl);
@@ -298,6 +345,13 @@
         event.stopPropagation();
         setAuthType(2);
         assignMatnr(record);
+        handleClose();
+    };
+
+    const handleWarehousePermission = (event) => {
+        event.stopPropagation();
+        setAuthType(3);
+        assignWarehouse(record);
         handleClose();
     };
 
@@ -343,6 +397,12 @@
                     </ListItemIcon>
                     <ListItemText>鐗╂枡鏉冮檺</ListItemText>
                 </MenuItem>
+                <MenuItem onClick={handleWarehousePermission}>
+                    <ListItemIcon>
+                        <ArticleIcon fontSize="small" />
+                    </ListItemIcon>
+                    <ListItemText>浠撳簱鏉冮檺</ListItemText>
+                </MenuItem>
             </Menu>
         </>
     );

--
Gitblit v1.9.1