From 81b5bedfa358843c99098f690458f17d5b6ba352 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 12 十月 2024 10:21:40 +0800 Subject: [PATCH] # --- zy-acs-flow/src/map/settings/CopyDrawer.jsx | 126 ++++++++++++++++++------------------------ 1 files changed, 54 insertions(+), 72 deletions(-) diff --git a/zy-acs-flow/src/map/settings/CopyDrawer.jsx b/zy-acs-flow/src/map/settings/CopyDrawer.jsx index 72b3f5a..1e30d31 100644 --- a/zy-acs-flow/src/map/settings/CopyDrawer.jsx +++ b/zy-acs-flow/src/map/settings/CopyDrawer.jsx @@ -126,95 +126,77 @@ 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; + case DEVICE_TYPE.STATION: + case DEVICE_TYPE.CHARGE: + case DEVICE_TYPE.DIRECTION: + case DEVICE_TYPE.POINT: + if (incrementValue === 'no') { + copiedSprite.data.no = Tool.incrementSpriteNo(sprite.data.no, incrementAmount); + } + break; + case DEVICE_TYPE.AGV: + break; + default: + 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')); -- Gitblit v1.9.1