From b3a8cec76cd3d2d3aa6d470e1c28ec161bc1a16b Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 三月 2026 17:22:44 +0800
Subject: [PATCH] 路径管理-初始化功能优化
---
rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx | 62 ++++++++++++++++++++++++++++--
1 files changed, 57 insertions(+), 5 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx b/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
index c30ee51..4e9017d 100644
--- a/rsf-admin/src/page/basicInfo/deviceSite/DeviceSiteList.jsx
+++ b/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
--
Gitblit v1.9.1