From 57c58f09ea772fe06390a03d5ae9c73d6d6d9e56 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 12 十月 2024 10:07:53 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/settings/CopyDrawer.jsx |  108 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/zy-acs-flow/src/map/settings/CopyDrawer.jsx b/zy-acs-flow/src/map/settings/CopyDrawer.jsx
index f72ab02..72b3f5a 100644
--- a/zy-acs-flow/src/map/settings/CopyDrawer.jsx
+++ b/zy-acs-flow/src/map/settings/CopyDrawer.jsx
@@ -77,7 +77,16 @@
 });
 
 const CopyDrawer = (props) => {
-    const { open, onCancel, sprite, value, width = PAGE_DRAWER_WIDTH, handleOnCopy } = props;
+    const {
+        open,
+        onCancel,
+        sprite,
+        value,
+        width = PAGE_DRAWER_WIDTH,
+        handleOnCopy,
+        setLastCopiedSprites,
+        setSpriteSettings,
+    } = props;
     const notify = useNotification();
     const translate = useTranslate();
     const theme = useTheme();
@@ -114,7 +123,99 @@
     }
 
     const onFormSubmit = (data) => {
-        console.log(data);
+        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) {
+                case 'left':
+                    copiedSprite.position.x -= (i + 1) * (data.gap + copiedSprite.width);
+                    break;
+                case 'right':
+                    copiedSprite.position.x += (i + 1) * (data.gap + copiedSprite.width);
+                    break;
+                case 'up':
+                    copiedSprite.position.y -= (i + 1) * (data.gap + copiedSprite.height);
+                    break;
+                case 'down':
+                    copiedSprite.position.y += (i + 1) * (data.gap + copiedSprite.height);
+                    break;
+                default:
+                    break;
+            }
+            // 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;
+                }
+            }
+
+            Tool.getMapContainer().addChild(copiedSprite);
+            Tool.beSettings(copiedSprite, setSpriteSettings);
+            setLastCopiedSprites(prevArr => [...prevArr, copiedSprite]);
+        }
+        onCancel();
         handleOnCopy?.(data);
         notify.info(translate('common.response.success'));
     };
@@ -205,6 +306,9 @@
                                                                 min: 0,
                                                                 step: 1,
                                                             }}
+                                                            onChange={(e) => {
+                                                                field.onChange(e.target.value === '' ? '' : Number(e.target.value));
+                                                            }}
                                                         />
                                                     )}
                                                 />

--
Gitblit v1.9.1