From aab84ae44701ea0088a5eb10f0c89136cf7779c8 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期四, 26 二月 2026 13:23:42 +0800
Subject: [PATCH] lsh#

---
 rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx |   65 ++++++++++++++++++++++++++++++--
 1 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx b/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
index 8e9407d..ec224ff 100644
--- a/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
+++ b/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -33,9 +33,12 @@
     DeleteButton,
 
 } from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
+import { Box, Typography, Card, Stack, Button } from '@mui/material';
+import ContentCopyIcon from '@mui/icons-material/ContentCopy';
+import PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';
 import { styled } from '@mui/material/styles';
 import BasStationCreate from "./BasStationCreate";
+import BasStationInitModal from "./BasStationInitModal";
 import BasStationPanel from "./BasStationPanel";
 import EmptyData from "../../components/EmptyData";
 import MyCreateButton from "../../components/MyCreateButton";
@@ -59,7 +62,7 @@
     '& .column-name': {
     },
     '& .opt': {
-        width: 200
+        width: 220
     },
 }));
 
@@ -93,7 +96,38 @@
         resettable
     />,
 ]
-
+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();
 
@@ -101,6 +135,9 @@
     const [drawerVal, setDrawerVal] = useState(false);
     const [areaFieldDialog, setAreaFieldDialog] = useState(false);
     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
@@ -120,6 +157,16 @@
                     <TopToolbar>
                         <FilterButton />
                         <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+                        <Button
+                          variant="text"
+                          color="primary"
+                          size="small"
+                          startIcon={<PlaylistAddIcon />}
+                          onClick={() => setInitDialogOpen(true)}
+                          sx={{ ml: 1 }}
+                        >
+                          {translate('toolbar.siteInit')}
+                        </Button>
                         <SelectColumnsButton preferenceKey='basStation' />
                         <MyExportButton />
                     </TopToolbar>
@@ -162,7 +209,7 @@
                     <FunctionField
                         source="outAble"
                         label="table.field.basStation.outAble"
-                        render={record => record.inAble === 1 ? '鏄�' : '鍚�'}
+                        render={record => record.outAble === 1 ? '鏄�' : '鍚�'}
                     />
                     <NumberField source="area$" label="table.field.basStation.area" />
                     <FunctionField
@@ -201,6 +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 setInitCopyData={setInitCopyData} setInitDialogOpen={setInitDialogOpen} />
                         <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                         <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                     </WrapperField>
@@ -210,8 +258,15 @@
             <BasStationCreate
                 open={createDialog}
                 setOpen={setCreateDialog}
+                copyRecord={copyRecord}
+                onClose={() => setCopyRecord(null)}
             />
-
+            <BasStationInitModal
+              open={initDialogOpen}
+              setOpen={setInitDialogOpen}
+              initialData={initCopyData}
+              onClose={() => setInitCopyData(null)}
+            />
             <PageDrawer
                 title='BasStation Detail'
                 drawerVal={drawerVal}

--
Gitblit v1.9.1