#
luxiaotao1123
2024-10-12 57c58f09ea772fe06390a03d5ae9c73d6d6d9e56
#
6个文件已修改
158 ■■■■■ 已修改文件
zy-acs-flow/src/map/MapPage.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/constants.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/settings/ConfigSettings.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/settings/CopyDrawer.jsx 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/settings/MapSettings.jsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/tool.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/MapPage.jsx
@@ -205,7 +205,7 @@
                    padding: '0 16px',
                    height: '64px',
                    flexShrink: 0, // keep height
                    zIndex: 200
                    zIndex: 200,
                }}
            >
                <TextField
zy-acs-flow/src/map/constants.js
@@ -2,18 +2,18 @@
export const DEVICE_TYPE = Object.freeze({
    SHELF: "SHELF",
    STATION: 'STATION',
    AGV: "AGV",
    CHARGE: 'CHARGE',
    STATION: 'STATION',
    DIRECTION: 'DIRECTION',
    POINT: "POINT",
})
export const DEVICE_Z_INDEX = Object.freeze({
    SHELF: 1,
    STATION: 1,
    AGV: 1,
    CHARGE: 1,
    STATION: 1,
    DIRECTION: 1,
    POINT: 1
})
zy-acs-flow/src/map/settings/ConfigSettings.jsx
@@ -90,7 +90,7 @@
                                            value={field.value ?? ''}
                                            fullWidth
                                            onChange={(e) => {
                                                field.onChange(e);
                                                field.onChange(e.target.value === '' ? '' : Number(e.target.value));
                                            }}
                                        />
                                    )}
@@ -108,7 +108,7 @@
                                            value={field.value ?? ''}
                                            fullWidth
                                            onChange={(e) => {
                                                field.onChange(e);
                                                field.onChange(e.target.value === '' ? '' : Number(e.target.value));
                                            }}
                                        />
                                    )}
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));
                                                            }}
                                                        />
                                                    )}
                                                />
zy-acs-flow/src/map/settings/MapSettings.jsx
@@ -24,6 +24,7 @@
    const { sprite, setSpriteSettings, onSubmit, width } = props;
    const translate = useTranslate();
    const [copyVisible, setCopyVisible] = useState(false);
    const [lastCopiedSprites, setLastCopiedSprites] = useState([]);
    const { control, handleSubmit, reset, watch } = useForm({
        defaultValues: {
@@ -313,7 +314,14 @@
                            }}>
                                {translate('page.map.settings.map.copy.execute')}
                            </Button>
                            <Button variant="text" color="primary">
                            <Button variant="text" color="primary" onClick={() => {
                                if (lastCopiedSprites && lastCopiedSprites.length > 0) {
                                    lastCopiedSprites.forEach(copiedSprite => {
                                        Utils.getMapContainer().removeChild(copiedSprite);
                                    })
                                    setLastCopiedSprites([]);
                                }
                            }}>
                                {translate('page.map.settings.map.copy.reverse')}
                            </Button>
                        </Stack>
@@ -359,6 +367,8 @@
                handleOnCopy={() => {
                }}
                setLastCopiedSprites={setLastCopiedSprites}
                setSpriteSettings={setSpriteSettings}
            />
        </>
    );
zy-acs-flow/src/map/tool.js
@@ -189,6 +189,17 @@
    }
}
export const copySprite = (sprite) => {
    const copiedSprite = generateSprite(sprite.data.type)
    initSprite(copiedSprite);
    copiedSprite.position.set(sprite.position.x, sprite.position.y);
    copiedSprite.scale.set(sprite.scale.x, sprite.scale.y);
    copiedSprite.rotation = sprite.rotation;
    copiedSprite.data = deepCopy(sprite.data);
    copiedSprite.data.uuid = generateID();
    return copiedSprite;
}
export const isSpriteInSelectionBox = (sprite, selectionBox) => {
    const spriteBounds = sprite.getBounds();
    const boxBounds = selectionBox.getBounds();
@@ -313,10 +324,27 @@
    effectHalfCircle.position.set(sprite.x, sprite.y);
}
export const incrementSpriteNo = (str, incrementValue) => {
    const match = str.match(/(\D*)(\d+)/);
    if (match) {
        const prefix = match[1];
        const numberPart = match[2];
        const newNumber = parseInt(numberPart, 10) + incrementValue;
        const paddedNumber = newNumber.toString().padStart(numberPart.length, '0');
        return `${prefix}${paddedNumber}`;
    } else {
        return str;
    }
}
export const generateID = () => {
    return Date.now().toString(36) + Math.random().toString(36).substring(2);
}
export const deepCopy = (data) => {
    return JSON.parse(JSON.stringify(data));
}
export const patchRaLayout = (param) => {
    const parentElement = document.getElementById('main-content');
    if (parentElement && parentElement.classList.contains('RaLayout-content')) {