From d127e27168d07199b0d4d55c0a5d431761f490d1 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 23 七月 2025 08:36:19 +0800
Subject: [PATCH] 保存一个版本

---
 zy-acs-flow/src/map/settings/CopyDrawer.jsx |  119 +++++++++++++++++++++++------------------------------------
 1 files changed, 46 insertions(+), 73 deletions(-)

diff --git a/zy-acs-flow/src/map/settings/CopyDrawer.jsx b/zy-acs-flow/src/map/settings/CopyDrawer.jsx
index 72b3f5a..19fc976 100644
--- a/zy-acs-flow/src/map/settings/CopyDrawer.jsx
+++ b/zy-acs-flow/src/map/settings/CopyDrawer.jsx
@@ -126,95 +126,68 @@
         if (!sprite || !data || Object.keys(data).length === 0) {
             return;
         }
-        setLastCopiedSprites([]);
-        for (let i = 0; i < data.copyCount; i++) {
-            const copiedSprite = Tool.copySprite(sprite);
-            // copy
-            switch (data.copyDirect) {
+
+        const { copyCount, copyDirect, gap, autoIncrement, incrementMode, incrementValue } = data;
+        const copiedSprites = [];
+
+        const adjustPosition = (sprite, direction, gap, index) => {
+            const factor = index + 1;
+            switch (direction) {
                 case 'left':
-                    copiedSprite.position.x -= (i + 1) * (data.gap + copiedSprite.width);
+                    sprite.position.x -= factor * (gap + sprite.width);
                     break;
                 case 'right':
-                    copiedSprite.position.x += (i + 1) * (data.gap + copiedSprite.width);
+                    sprite.position.x += factor * (gap + sprite.width);
                     break;
                 case 'up':
-                    copiedSprite.position.y -= (i + 1) * (data.gap + copiedSprite.height);
+                    sprite.position.y -= factor * (gap + sprite.height);
                     break;
                 case 'down':
-                    copiedSprite.position.y += (i + 1) * (data.gap + copiedSprite.height);
+                    sprite.position.y += factor * (gap + sprite.height);
                     break;
                 default:
                     break;
             }
+        };
+
+        const incrementSpriteData = (copiedSprite, index) => {
+            const incrementAmount = incrementMode === 'descending' ? -(index + 1) : index + 1;
+            switch (deviceType) {
+                case DEVICE_TYPE.SHELF:
+                    if (incrementValue === 'row') {
+                        copiedSprite.data.row = sprite.data.row + incrementAmount;
+                    }
+                    if (incrementValue === 'bay') {
+                        copiedSprite.data.bay = sprite.data.bay + incrementAmount;
+                    }
+                    if (copiedSprite.data.row && copiedSprite.data.bay) {
+                        copiedSprite.data.no = `${copiedSprite.data.row}-${copiedSprite.data.bay}`;
+                    }
+                    break;
+                default:
+                    if (incrementValue === 'no') {
+                        copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, incrementAmount);
+                    }
+                    break;
+            }
+        };
+
+        for (let i = 0; i < copyCount; i++) {
+            const copiedSprite = Tool.copySprite(sprite);
+
+            adjustPosition(copiedSprite, copyDirect, gap, i);
+
             // auto-increment-value
-            if (data.autoIncrement && deviceType) {
-                switch (deviceType) {
-                    case DEVICE_TYPE.SHELF:
-                        if (data.incrementValue === 'row') {
-                            if (data.incrementMode === 'descending') {
-                                copiedSprite.data.row = sprite.data.row - i - 1;
-                            } else {
-                                copiedSprite.data.row = sprite.data.row + i + 1;
-                            }
-                        }
-                        if (data.incrementValue === 'bay') {
-                            if (data.incrementMode === 'descending') {
-                                copiedSprite.data.bay = sprite.data.bay - i - 1;
-                            } else {
-                                copiedSprite.data.bay = sprite.data.bay + i + 1;
-                            }
-                        }
-                        if (copiedSprite.data.row && copiedSprite.data.bay) {
-                            copiedSprite.data.no = copiedSprite.data.row + '-' + copiedSprite.data.bay;
-                        }
-                        break;
-                    case DEVICE_TYPE.STATION:
-                        if (data.incrementValue === 'no') {
-                            if (data.incrementMode === 'descending') {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1);
-                            } else {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1);
-                            }
-                        }
-                        break;
-                    case DEVICE_TYPE.CHARGE:
-                        if (data.incrementValue === 'no') {
-                            if (data.incrementMode === 'descending') {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1);
-                            } else {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1);
-                            }
-                        }
-                        break;
-                    case DEVICE_TYPE.DIRECTION:
-                        if (data.incrementValue === 'no') {
-                            if (data.incrementMode === 'descending') {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1);
-                            } else {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1);
-                            }
-                        }
-                        break;
-                    case DEVICE_TYPE.POINT:
-                        if (data.incrementValue === 'no') {
-                            if (data.incrementMode === 'descending') {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, - i - 1);
-                            } else {
-                                copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, + i + 1);
-                            }
-                        }
-                        break;
-                    case DEVICE_TYPE.AGV:
-                        break;
-                    default:
-                        break;
-                }
+            if (autoIncrement && deviceType) {
+                incrementSpriteData(copiedSprite, i);
             }
 
             Tool.getMapContainer().addChild(copiedSprite);
             Tool.beSettings(copiedSprite, setSpriteSettings);
-            setLastCopiedSprites(prevArr => [...prevArr, copiedSprite]);
+            copiedSprites.push(copiedSprite);
         }
+
+        setLastCopiedSprites(copiedSprites);
         onCancel();
         handleOnCopy?.(data);
         notify.info(translate('common.response.success'));
@@ -303,7 +276,7 @@
                                                             sx={{ width: '50%' }}
                                                             fullWidth
                                                             inputProps={{
-                                                                min: 0,
+                                                                // min: 0,
                                                                 step: 1,
                                                             }}
                                                             onChange={(e) => {

--
Gitblit v1.9.1