#
zhou zhou
2026-01-10 b5b400a615743a74e9d127261bd3785554aa06aa
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>
        </>
    );