From 1bc33546a044cbc84dd9595c19dbcd9a4e309fc9 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期六, 10 一月 2026 14:06:10 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/areaSettings/index.jsx |   72 ++++++++++++++++++++++++++----------
 1 files changed, 52 insertions(+), 20 deletions(-)

diff --git a/zy-acs-flow/src/map/areaSettings/index.jsx b/zy-acs-flow/src/map/areaSettings/index.jsx
index c7894ab..d86d5be 100644
--- a/zy-acs-flow/src/map/areaSettings/index.jsx
+++ b/zy-acs-flow/src/map/areaSettings/index.jsx
@@ -18,6 +18,7 @@
 import AreaBasicTab from './AreaBasicTab';
 import AreaAdvancedTab from './AreaAdvancedTab';
 import { getAreaInfo, fetchAgvListAll, updateAreaData, removeArea } from '../http';
+import * as Tool from '../tool';
 
 const getAgvOptionId = (option) => {
     if (option == null) {
@@ -62,8 +63,10 @@
     const [code, setCode] = useState('');
     const [maxCount, setMaxCount] = useState('');
     const [speedLimit, setSpeedLimit] = useState('');
-    const [memo, setMemo] = useState('');
+    const [startPoint, setStartPoint] = useState({ x: '', y: '' });
+    const [endPoint, setEndPoint] = useState({ x: '', y: '' });
     const [priority, setPriority] = useState('');
+    const [memo, setMemo] = useState('');
     const [agvOptions, setAgvOptions] = useState([]);
     const [initialBasic, setInitialBasic] = useState({ name: '', agvIds: [] });
     const [curAreaInfo, setCurAreaInfo] = useState(null);
@@ -83,8 +86,10 @@
             setCode('');
             setMaxCount('');
             setSpeedLimit('');
-            setMemo('');
+            setStartPoint({ x: '', y: '' });
+            setEndPoint({ x: '', y: '' });
             setPriority('');
+            setMemo('');
             setAgvList([]);
             setCodeList([]);
             setInitialBasic({ name: '', agvIds: [] });
@@ -106,8 +111,16 @@
             setCode(curAreaInfo.code || '');
             setMaxCount(curAreaInfo.maxCount ?? '');
             setSpeedLimit(curAreaInfo.speedLimit ?? '');
-            setMemo(curAreaInfo.memo || '');
+            setStartPoint({
+                x: curAreaInfo.start?.x ?? '',
+                y: curAreaInfo.start?.y ?? '',
+            });
+            setEndPoint({
+                x: curAreaInfo.end?.x ?? '',
+                y: curAreaInfo.end?.y ?? '',
+            });
             setPriority(curAreaInfo.priority ?? '');
+            setMemo(curAreaInfo.memo || '');
 
             const selected = curAreaInfo.agvList || [];
             const normalizedSelection = mapSelectionToOptions(selected, agvOptions);
@@ -126,21 +139,39 @@
         setActiveTab(newValue);
     };
 
-    const handleSaveBasic = async () => {
-        console.log(agvList);
+    const submitAreaUpdate = async (payload = {}) => {
         const id = sprite?.data?.id;
         if (!id) {
             return;
         }
-        const payload = {
-            id,
-            name,
-            agvIds: agvList.map(getAgvOptionId),
-        };
-        const data = await updateAreaData(payload);
+        const data = await updateAreaData({ id, ...payload });
         if (data) {
             setCurAreaInfo(data);
+            if (sprite) {
+                Tool.updateAreaSpriteName(sprite, data.name || name);
+            }
         }
+    };
+
+    const handleSaveBasic = async () => {
+        await submitAreaUpdate({
+            name,
+            agvIds: agvList.map(getAgvOptionId),
+        });
+    };
+
+    const handleSaveAdvanced = async () => {
+        await submitAreaUpdate({
+            name,
+            agvIds: agvList.map(getAgvOptionId),
+            code,
+            maxCount,
+            speedLimit,
+            priority,
+            memo,
+            start: startPoint,
+            end: endPoint,
+        });
     };
 
     const handleDeleteArea = async () => {
@@ -150,12 +181,11 @@
         }
         const success = await removeArea(id);
         if (success) {
+            if (sprite) {
+                Tool.removeAreaSprite(sprite);
+            }
             onCancel?.();
         }
-    };
-
-    const handleSaveAdvanced = () => {
-        // placeholder for save logic
     };
 
     const basicDirty = name !== initialBasic.name
@@ -179,7 +209,7 @@
                             <Typography variant="h6" flex="1">
                                 {sprite
                                     ? translate(`page.map.devices.${sprite?.data?.type?.toLowerCase()}`) + ' - ' + sprite?.data?.name
-                                    : translate('page.map.settings.title')}
+                                    : translate('page.map.area.title')}
                             </Typography>
                             <IconButton onClick={handleClose} size="small">
                                 <CloseIcon />
@@ -208,8 +238,8 @@
                                         variant="fullWidth"
                                         sx={{ mb: 0 }}
                                     >
-                                        <Tab label={translate('page.map.area.basic', { _: '鍩虹' })} />
-                                        <Tab label={translate('page.map.area.advanced', { _: '楂樼骇' })} />
+                                        <Tab label={translate('page.map.area.tabs.basic')} />
+                                        <Tab label={translate('page.map.area.tabs.advanced')} />
                                     </Tabs>
 
                                     <Divider />
@@ -237,10 +267,12 @@
                                                 setMaxQty={setMaxCount}
                                                 speedLimit={speedLimit}
                                                 setSpeedLimit={setSpeedLimit}
-                                                shapeData={memo}
-                                                setShapeData={setMemo}
+                                                startPoint={startPoint}
+                                                endPoint={endPoint}
                                                 priority={priority}
                                                 setPriority={setPriority}
+                                                memo={memo}
+                                                setMemo={setMemo}
                                                 onSave={handleSaveAdvanced}
                                             />
                                         )}

--
Gitblit v1.9.1