#
luxiaotao1123
2024-10-12 81b5bedfa358843c99098f690458f17d5b6ba352
#
1个文件已修改
126 ■■■■■ 已修改文件
zy-acs-flow/src/map/settings/CopyDrawer.jsx 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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'));