chen.lin
1 天以前 b3a8cec76cd3d2d3aa6d470e1c28ec161bc1a16b
rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
@@ -33,7 +33,7 @@
    DeleteButton,
    Button
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { Box, Typography, Card, Stack, Button as MuiButton } from '@mui/material';
import { styled } from '@mui/material/styles';
import DeviceSiteCreate from "./DeviceSiteCreate";
import DeviceSitePanel from "./DeviceSitePanel";
@@ -46,6 +46,7 @@
import * as Common from '@/utils/common';
import InitModal from "./InitModal";
import CabinIcon from '@mui/icons-material/Cabin';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -57,7 +58,10 @@
    '& .column-name': {
    },
    '& .opt': {
        width: 200
        width: 260,
        minWidth: 260,
        overflow: 'visible',
        '& > *': { flexShrink: 0 }
    },
}));
@@ -87,12 +91,57 @@
    />,
]
const CopyButton = ({ setInitCopyData, setInitDialogOpen }) => {
    const record = useRecordContext();
    const translate = useTranslate();
    if (!record) return null;
    const label = translate('toolbar.copy') || '复制';
    return (
        <MuiButton
            size="small"
            color="primary"
            sx={{
                padding: '2px 8px',
                fontSize: '.75rem',
                minWidth: 'auto',
                flexShrink: 0,
                '& .MuiButton-startIcon': { marginRight: 0.5 },
            }}
            startIcon={<ContentCopyIcon fontSize="small" />}
            onClick={(e) => {
                e.stopPropagation();
                setInitCopyData({
                    rows: [{
                        deviceSiteName: record.deviceSite ?? '',
                        siteName: record.site ?? '',
                        target: record.target ?? '',
                    }],
                    channel: record.channel != null ? String(record.channel) : '',
                    type: record.type,
                    typeIds: record.type != null ? [record.type] : [],
                    deviceType: record.device ?? '',
                    deviceCode: record.deviceCode ?? '',
                    areaIdStart: record.areaIdStart,
                    areaIdEnd: record.areaIdEnd,
                    name: record.name ?? '',
                    wcsCode: record.target ?? '',
                    label: record.label ?? '',
                });
                setInitDialogOpen(true);
            }}
        >
            <span style={{ whiteSpace: 'nowrap' }}>{label}</span>
        </MuiButton>
    );
};
const DeviceSiteList = () => {
    const translate = useTranslate();
    const [createDialog, setCreateDialog] = useState(false);
    const [drawerVal, setDrawerVal] = useState(false);
    const [initDialog, setInitDialog] = useState(false);
    const [initCopyData, setInitCopyData] = useState(null);
    return (
        <Box display="flex">
@@ -128,7 +177,7 @@
                                    mt: 2
                                }}
                                onClick={() => { setInitDialog(true) }}>
                                {translate('toolbar.siteInit')}
                                {translate('toolbar.pathInit')}
                            </Button>
                        </Box>
                    }
@@ -149,7 +198,7 @@
                    preferenceKey='deviceSite'
                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    rowClick={(id, resource, record) => false}
                    omit={['id', 'createTime', 'createBy', 'memo', 'label','name','target','statusBool','updateBy']}
                    omit={['id', 'createTime', 'createBy', 'memo', 'statusBool', 'updateBy']}
                >
                    <NumberField source="id" />
                    <TextField source="site" label="table.field.deviceSite.site" />
@@ -171,6 +220,7 @@
                    <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">
                        <CopyButton setInitCopyData={setInitCopyData} setInitDialogOpen={setInitDialog} />
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
@@ -190,6 +240,8 @@
            <InitModal
                open={initDialog}
                setOpen={setInitDialog}
                initialData={initCopyData}
                onClose={() => setInitCopyData(null)}
            />
        </Box>
    )
@@ -205,7 +257,7 @@
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.siteInit"}>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.pathInit"}>
                <CabinIcon />
            </Button>
            <InitModal