| | |
| | | useNotify, |
| | | Button, |
| | | } from 'react-admin'; |
| | | import { Box, Card, Stack } from '@mui/material'; |
| | | import { Box, Card, Stack, Menu, MenuItem, ListItemIcon, ListItemText } from '@mui/material'; |
| | | import SecurityIcon from '@mui/icons-material/Security'; |
| | | import { styled } from '@mui/material/styles'; |
| | | import RoleCreate from "./RoleCreate"; |
| | | import RolePanel from "./RolePanel"; |
| | |
| | | import * as Common from '@/utils/common'; |
| | | import AssignPermissions from "./AssignPermissions"; |
| | | import AssignPermissionsPda from "./AssignPermissions_pda"; |
| | | import AssignPermissionsMatnr from "./AssignPermissions_matnr"; |
| | | import request from '@/utils/request'; |
| | | import AssignmentIndIcon from '@mui/icons-material/AssignmentInd'; |
| | | import AdUnitsIcon from '@mui/icons-material/AdUnits'; |
| | | import ArticleIcon from '@mui/icons-material/Article'; |
| | | import { margin } from "@mui/system"; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | const [drawerValPda, setDrawerValPda] = useState(false); |
| | | const [drawerValMatnr, setDrawerValMatnr] = useState(false); |
| | | |
| | | const [menuIds, setMenuIds] = useState([]); |
| | | |
| | | const [authType, setAuthType] = useState(0) |
| | | |
| | | const assign = (record) => { |
| | | setDrawerValPda(false); |
| | | request('/role/scope/list', { |
| | | method: 'GET', |
| | | params: { |
| | |
| | | } |
| | | |
| | | const assignPda = (record) => { |
| | | setDrawerVal(false); |
| | | request('/rolePda/scope/list', { |
| | | method: 'GET', |
| | | params: { |
| | |
| | | }); |
| | | } |
| | | |
| | | const assignMatnr = (record) => { |
| | | setDrawerVal(false); |
| | | request('/roleMatnr/scope/list', { |
| | | method: 'GET', |
| | | params: { |
| | | roleId: record.id |
| | | } |
| | | }).then((res) => { |
| | | if (res?.data?.code === 200) { |
| | | const { data: menuIds } = res.data; |
| | | setMenuIds(menuIds || []); |
| | | setDrawerValMatnr(!!drawerValMatnr && drawerValMatnr === record ? null : record); |
| | | } else { |
| | | notify(res.data.msg, { type: 'error' }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | return ( |
| | | <Box display="flex"> |
| | | <List |
| | |
| | | theme.transitions.create(['all'], { |
| | | duration: theme.transitions.duration.enteringScreen, |
| | | }), |
| | | marginRight: (!!drawerVal || !!drawerValPda) ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | marginRight: (!!drawerVal || !!drawerValPda || !!drawerValMatnr) ? `${PAGE_DRAWER_WIDTH}px` : 0, |
| | | }} |
| | | title={"menu.role"} |
| | | empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} |
| | |
| | | <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"> |
| | | <ScopeButton sx={{ padding: '1px', fontSize: '.75rem' }} assign={assign} auType={0} setAuthType={setAuthType} label="网页权限 " /> |
| | | <PdaScopeButton sx={{ padding: '1px', fontSize: '.75rem' }} assignPda={assignPda} auType={1} setAuthType={setAuthType} label="PDA权限 " /> |
| | | <ScopeButton sx={{ padding: '1px', fontSize: '.75rem' }} assign={assign} auType={2} setAuthType={setAuthType} label="仓库权限 " /> |
| | | <PermissionMenuButton |
| | | assign={assign} |
| | | assignPda={assignPda} |
| | | assignMatnr={assignMatnr} |
| | | setAuthType={setAuthType} |
| | | /> |
| | | <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> |
| | | <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> |
| | | </WrapperField> |
| | |
| | | authType={authType} |
| | | /> |
| | | </PageDrawer> |
| | | <PageDrawer |
| | | drawerVal={drawerValMatnr} |
| | | setDrawerVal={setDrawerValMatnr} |
| | | title={!!drawerValMatnr ? `Scope by ${drawerValMatnr.code || drawerValMatnr.name}` : 'Role Detail'} |
| | | closeCallback={() => { |
| | | setMenuIds([]); |
| | | }} |
| | | > |
| | | <AssignPermissionsMatnr |
| | | role={drawerValMatnr} |
| | | originMenuIds={menuIds} |
| | | setDrawerVal={setDrawerValMatnr} |
| | | closeCallback={() => { |
| | | setMenuIds([]); |
| | | }} |
| | | authType={authType} |
| | | /> |
| | | </PageDrawer> |
| | | </Box> |
| | | ) |
| | | } |
| | | |
| | | const ScopeButton = (props) => { |
| | | const PermissionMenuButton = ({ assign, assignPda, assignMatnr, setAuthType }) => { |
| | | const record = useRecordContext(); |
| | | const { assign, auType, setAuthType, label, ...rest } = props; |
| | | return ( |
| | | <Button |
| | | variant="text" |
| | | color="primary" |
| | | startIcon={<AssignmentIndIcon />} |
| | | label={label} |
| | | onClick={(event) => { |
| | | setAuthType(auType); |
| | | event.stopPropagation(); |
| | | assign(record); |
| | | }} |
| | | {...rest} |
| | | /> |
| | | ) |
| | | } |
| | | const [anchorEl, setAnchorEl] = useState(null); |
| | | const open = Boolean(anchorEl); |
| | | |
| | | const PdaScopeButton = (props) => { |
| | | const record = useRecordContext(); |
| | | const { assignPda, auType, setAuthType, label, ...rest } = props; |
| | | const handleClick = (event) => { |
| | | event.stopPropagation(); |
| | | setAnchorEl(event.currentTarget); |
| | | }; |
| | | |
| | | const handleClose = (event) => { |
| | | if (event) event.stopPropagation(); |
| | | setAnchorEl(null); |
| | | }; |
| | | |
| | | const handleWebPermission = (event) => { |
| | | event.stopPropagation(); |
| | | setAuthType(0); |
| | | assign(record); |
| | | handleClose(); |
| | | }; |
| | | |
| | | const handlePdaPermission = (event) => { |
| | | event.stopPropagation(); |
| | | setAuthType(1); |
| | | assignPda(record); |
| | | handleClose(); |
| | | }; |
| | | |
| | | const handleMatnrPermission = (event) => { |
| | | event.stopPropagation(); |
| | | setAuthType(2); |
| | | assignMatnr(record); |
| | | handleClose(); |
| | | }; |
| | | |
| | | return ( |
| | | <Button |
| | | variant="text" |
| | | color="primary" |
| | | startIcon={<AdUnitsIcon />} |
| | | label={label} |
| | | onClick={(event) => { |
| | | setAuthType(auType); |
| | | event.stopPropagation(); |
| | | assignPda(record); |
| | | }} |
| | | {...rest} |
| | | /> |
| | | ) |
| | | <> |
| | | <Button |
| | | variant="text" |
| | | color="primary" |
| | | startIcon={<SecurityIcon />} |
| | | label="权限" |
| | | onClick={handleClick} |
| | | sx={{ marginLeft: '2px', padding: '1px', fontSize: '.75rem' }} |
| | | /> |
| | | <Menu |
| | | anchorEl={anchorEl} |
| | | open={open} |
| | | onClose={handleClose} |
| | | onClick={(e) => e.stopPropagation()} |
| | | anchorOrigin={{ |
| | | vertical: 'bottom', |
| | | horizontal: 'left', |
| | | }} |
| | | transformOrigin={{ |
| | | vertical: 'top', |
| | | horizontal: 'left', |
| | | }} |
| | | > |
| | | <MenuItem onClick={handleWebPermission}> |
| | | <ListItemIcon> |
| | | <AssignmentIndIcon fontSize="small" /> |
| | | </ListItemIcon> |
| | | <ListItemText>网页权限</ListItemText> |
| | | </MenuItem> |
| | | <MenuItem onClick={handlePdaPermission}> |
| | | <ListItemIcon> |
| | | <AdUnitsIcon fontSize="small" /> |
| | | </ListItemIcon> |
| | | <ListItemText>PDA权限</ListItemText> |
| | | </MenuItem> |
| | | <MenuItem onClick={handleMatnrPermission}> |
| | | <ListItemIcon> |
| | | <ArticleIcon fontSize="small" /> |
| | | </ListItemIcon> |
| | | <ListItemText>物料权限</ListItemText> |
| | | </MenuItem> |
| | | </Menu> |
| | | </> |
| | | ); |
| | | } |
| | | |
| | | export default RoleList; |