From 66790f8fb83be8783427308c2d3db7eb98951d50 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 25 二月 2026 15:27:03 +0800
Subject: [PATCH] 站点初始化,复制改为当前
---
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx | 58 +++++++++++++++++-----------
rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx | 39 +++++++++++++++++--
2 files changed, 69 insertions(+), 28 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx b/rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx
index 30feaaf..d967b43 100644
--- a/rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx
+++ b/rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx
@@ -30,7 +30,7 @@
const defaultPair = () => ({ stationName: '', stationId: '' });
-const BasStationInitModal = ({ open, setOpen }) => {
+const BasStationInitModal = ({ open, setOpen, initialData = null, onClose }) => {
const translate = useTranslate();
const notify = useNotify();
const refresh = useRefresh();
@@ -81,19 +81,48 @@
request.post('/dictData/page', { dictTypeCode: 'sys_container_type', current: 1, pageSize: 100 })
.then((res) => {
if (res?.data?.code === 200 && res?.data?.data?.records) {
- setContainerTypeOptions(res.data.data.records.map((item) => ({
+ const options = res.data.data.records.map((item) => ({
+ id: item.id,
value: item.value,
label: item.label ?? item.value ?? item.id,
- })));
+ }));
+ setContainerTypeOptions(options);
+ if (initialData?.common?.containerTypes?.length) {
+ const list = initialData.common.containerTypes;
+ const mapped = list.map((item) => {
+ const byId = options.find((o) => Number(o.id) === Number(item) || String(o.id) === String(item));
+ if (byId) return String(byId.value);
+ const byVal = options.find((o) => String(o.value) === String(item) || o.value == item);
+ if (byVal) return String(byVal.value);
+ return item;
+ });
+ setCommon((prev) => ({ ...prev, containerTypes: mapped }));
+ }
}
})
.catch(() => {});
}, [open]);
-
+ useEffect(() => {
+ if (!open) return;
+ if (initialData?.pairs?.length) {
+ setPairs(initialData.pairs);
+ }
+ if (initialData?.common) {
+ setCommon({
+ type: initialData.common.type ?? 0,
+ useStatus: initialData.common.useStatus ?? '',
+ areaIds: Array.isArray(initialData.common.areaIds) ? [...initialData.common.areaIds] : [],
+ containerTypes: Array.isArray(initialData.common.containerTypes) ? [...initialData.common.containerTypes] : [],
+ inAble: initialData.common.inAble ?? 0,
+ outAble: initialData.common.outAble ?? 0,
+ });
+ }
+ }, [open, initialData]);
const handleClose = (event, reason) => {
if (reason !== "backdropClick") {
setOpen(false);
setPairs([defaultPair()]);
+ if (typeof onClose === 'function') onClose();
}
};
@@ -299,7 +328,7 @@
onChange={(e) => setCommon((c) => ({ ...c, containerTypes: e.target.value }))}
renderValue={(selected) =>
(selected || [])
- .map((val) => containerTypeOptions.find((c) => c.value === val)?.label ?? val)
+ .map((val) => containerTypeOptions.find((c) => String(c.value) === String(val))?.label ?? val)
.join(', ')
}
>
diff --git a/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx b/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
index 882fcc8..ec224ff 100644
--- a/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
+++ b/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -96,28 +96,37 @@
resettable
/>,
]
-const CopyButton = ({ setCopyRecord, setCreateDialog }) => {
- const record = useRecordContext();
- const translate = useTranslate();
- if (!record) return null;
- return (
- <Button
- size="small"
- startIcon={<ContentCopyIcon fontSize="small" />}
- sx={{ padding: '1px', fontSize: '.75rem', minWidth: 'auto' }}
- onClick={(e) => {
- e.stopPropagation();
- const { id, createTime, updateTime, createBy, updateBy, createBy$, updateBy$, ...rest } = record;
- const copied = { ...rest };
- if (record.areaIds) copied.areaIds = [...(Array.isArray(record.areaIds) ? record.areaIds : [])];
- if (record.containerTypes) copied.containerTypes = [...(Array.isArray(record.containerTypes) ? record.containerTypes : [])];
- setCopyRecord(copied);
- setCreateDialog(true);
- }}
- >
- {translate('toolbar.copy')}
- </Button>
- );
+const CopyButton = ({ setInitCopyData, setInitDialogOpen }) => {
+ const record = useRecordContext();
+ const translate = useTranslate();
+ if (!record) return null;
+ return (
+ <Button
+ size="small"
+ startIcon={<ContentCopyIcon fontSize="small" />}
+ sx={{ padding: '1px', fontSize: '.75rem', minWidth: 'auto' }}
+ onClick={(e) => {
+ e.stopPropagation();
+ const pairs = [{ stationName: record.stationName ?? '', stationId: record.stationId ?? '' }];
+ const areaIds = Array.isArray(record.areaIds) ? [...record.areaIds] : [];
+ const containerTypes = Array.isArray(record.containerTypes) ? [...record.containerTypes] : [];
+ setInitCopyData({
+ pairs,
+ common: {
+ type: record.type ?? 0,
+ useStatus: record.useStatus ?? '',
+ areaIds,
+ containerTypes,
+ inAble: record.inAble ?? 0,
+ outAble: record.outAble ?? 0,
+ },
+ });
+ setInitDialogOpen(true);
+ }}
+ >
+ {translate('toolbar.copy')}
+ </Button>
+ );
};
const BasStationList = () => {
const translate = useTranslate();
@@ -128,6 +137,7 @@
const [areaFieldDialog2, setAreaFieldDialog2] = useState(false);
const [copyRecord, setCopyRecord] = useState(null);
const [initDialogOpen, setInitDialogOpen] = useState(false);
+ const [initCopyData, setInitCopyData] = useState(null);
return (
<Box display="flex">
<List
@@ -238,7 +248,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 setCopyRecord={setCopyRecord} setCreateDialog={setCreateDialog} />
+ <CopyButton setInitCopyData={setInitCopyData} setInitDialogOpen={setInitDialogOpen} />
<EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
<DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
</WrapperField>
@@ -254,6 +264,8 @@
<BasStationInitModal
open={initDialogOpen}
setOpen={setInitDialogOpen}
+ initialData={initCopyData}
+ onClose={() => setInitCopyData(null)}
/>
<PageDrawer
title='BasStation Detail'
--
Gitblit v1.9.1