zy-acs-flow/src/map/MapPage.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/constants.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/settings/ConfigSettings.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/settings/CopyDrawer.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/settings/MapSettings.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-flow/src/map/tool.js | ●●●●● 补丁 | 查看 | 原始文档 | 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')) {