#
Junjie
2025-07-06 0d04bc5d8080b82338302fba0a59fccff2eaedfc
zy-asrs-flow/src/pages/map/components/mapSettings.jsx
@@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from 'react';
import { Col, Form, Input, Row, Checkbox, Slider, Select, Drawer, Space, Button, InputNumber, Card } from 'antd';
import { Col, Form, Input, Row, message, Slider, Select, Drawer, Space, Button, InputNumber, Card } from 'antd';
import { FormattedMessage, useIntl, useModel } from '@umijs/max';
import { createStyles } from 'antd-style';
import * as Utils from '../utils'
@@ -28,8 +28,10 @@
            form.setFieldsValue({
                x: curSprite.position.x,
                y: curSprite.position.y,
                scale: Math.max(curSprite.scale.x, curSprite.scale.y),
                scaleSlider: Math.max(curSprite.scale.x, curSprite.scale.y),
                scaleX: curSprite.scale.x,
                scaleSliderX: curSprite.scale.x,
                scaleY: curSprite.scale.y,
                scaleSliderY: curSprite.scale.y,
                rotation: curSprite.rotation * 180 / Math.PI,
                rotationSlider: curSprite.rotation * 180 / Math.PI,
@@ -55,17 +57,29 @@
                        case 'y':
                            curSprite.position.y = value;
                            break;
                        case 'scaleSlider':
                        case 'scaleSliderX':
                            form.setFieldsValue({
                                scale: value
                                scaleX: value
                            })
                            curSprite.scale.set(value);
                            curSprite.scale.x = value;
                            break;
                        case 'scale':
                        case 'scaleX':
                            form.setFieldsValue({
                                scaleSlider: value
                                scaleSliderX: value
                            })
                            curSprite.scale.set(value);
                            curSprite.scale.x = value;
                            break;
                        case 'scaleSliderY':
                            form.setFieldsValue({
                                scaleY: value
                            })
                            curSprite.scale.y = value;
                            break;
                        case 'scaleY':
                            form.setFieldsValue({
                                scaleSliderY: value
                            })
                            curSprite.scale.y = value;
                            break;
                        case 'rotationSlider':
                            form.setFieldsValue({
@@ -99,6 +113,98 @@
        setLastCopiedSprites([]);
        for (let i = 0; i < values.copyCount; i++) {
            const copiedSprite = Utils.copySprite(curSprite);
            // auto-increment-value
            if (values.autoIncrement && values.type) {
                switch (values.type) {
                    case Utils.SENSOR_TYPE.SHELF:
                        if (values.incrementValue === 'row') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.row = curSprite.data.row - i - 1;
                            } else {
                                copiedSprite.data.row = curSprite.data.row + i + 1;
                            }
                        }
                        if (values.incrementValue === 'bay') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.bay = curSprite.data.bay - i - 1;
                            } else {
                                copiedSprite.data.bay = curSprite.data.bay + i + 1;
                            }
                        }
                        // reference value
                        if (copiedSprite.data.refx && copiedSprite.data.refy) {
                            switch (values.copyDire) {
                                case 'left':
                                    copiedSprite.data.refx -= curSprite.data.left * (i + 1);
                                    break;
                                case 'right':
                                    copiedSprite.data.refx += curSprite.data.right * (i + 1);
                                    break;
                                case 'top':
                                    copiedSprite.data.refy -= curSprite.data.top * (i + 1);
                                    break;
                                case 'bottom':
                                    copiedSprite.data.refy += curSprite.data.bottom * (i + 1);
                                    break;
                                default:
                                    break;
                            }
                        }
                        if (copiedSprite.data.row && copiedSprite.data.bay) {
                            copiedSprite.data.no = Utils.pureNumStr(copiedSprite.data.row) + '-' + Utils.pureNumStr(copiedSprite.data.bay);
                        }
                        break;
                    case Utils.SENSOR_TYPE.POINT:
                        if (values.incrementValue === 'vertical') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.vertical = curSprite.data.vertical - i - 1;
                            } else {
                                copiedSprite.data.vertical = curSprite.data.vertical + i + 1;
                            }
                        }
                        if (values.incrementValue === 'horizontal') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.horizontal = curSprite.data.horizontal - i - 1;
                            } else {
                                copiedSprite.data.horizontal = curSprite.data.horizontal + i + 1;
                            }
                        }
                        if (copiedSprite.data.vertical && copiedSprite.data.horizontal) {
                            copiedSprite.data.no = Utils.pureNumStr(copiedSprite.data.vertical) + '-' + Utils.pureNumStr(copiedSprite.data.horizontal);
                        }
                        break;
                    case Utils.SENSOR_TYPE.CONVEYOR:
                        if (values.incrementValue === 'no') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.no = Number(curSprite.data.no) - i - 1;
                            } else {
                                copiedSprite.data.no = Number(curSprite.data.no) + i + 1;
                            }
                        }
                        break;
                    case Utils.SENSOR_TYPE.SHUTTLE:
                        if (values.incrementValue === 'no') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.no = Number(curSprite.data.no) - i - 1;
                            } else {
                                copiedSprite.data.no = Number(curSprite.data.no) + i + 1;
                            }
                        }
                        break;
                    case Utils.SENSOR_TYPE.AGV:
                        if (values.incrementValue === 'no') {
                            if (values.incrementMode === 'descending') {
                                copiedSprite.data.no = Number(curSprite.data.no) - i - 1;
                            } else {
                                copiedSprite.data.no = Number(curSprite.data.no) + i + 1;
                            }
                        }
                        break;
                    default:
                        break;
                }
            }
            // graph copy
            switch (values.copyDire) {
                case 'left':
                    copiedSprite.position.x -= (i + 1) * (values.copyGap + copiedSprite.width);
@@ -116,7 +222,7 @@
                    break;
            }
            Utils.getMapContainer().addChild(copiedSprite);
            Utils.beSettings(copiedSprite, props.setSpriteBySettings, props.setDidClickSprite);
            Utils.beSettings(copiedSprite, props.setSpriteBySettings);
            setLastCopiedSprites(prevArr => [...prevArr, copiedSprite]);
        }
@@ -128,8 +234,6 @@
            <Form
                form={form}
                onFieldsChange={formValuesChange}
                initialValues={{
                }}
                onFinish={handleFinish}
                onFinishFailed={onFinishFailed}
                autoComplete="off"
@@ -146,6 +250,10 @@
                }}
                wrapperCol={{
                    span: 20,
                }}
                initialValues={{
                    scale: 1,
                    rotation: 1
                }}
            >
                <Row gutter={[24, 16]}>
@@ -201,11 +309,11 @@
                        </Form.Item>
                    </Col>
                    {/* scale */}
                    {/* scale x */}
                    <Col span={18}>
                        <Form.Item
                            name="scaleSlider"
                            label={intl.formatMessage({ id: 'map.settings.scale', defaultMessage: '缩放' })}
                            name="scaleSliderX"
                            label={intl.formatMessage({ id: 'map.settings.scale.x', defaultMessage: '缩放-x' })}
                            labelCol={{ span: 5 }}
                        >
                            <Slider
@@ -225,11 +333,47 @@
                    </Col>
                    <Col span={6}>
                        <Form.Item
                            name="scale"
                            name="scaleX"
                        >
                            <InputNumber
                                changeOnWheel
                                min={0.1} max={10} defaultValue={1} step={0.1}
                                min={0.1} max={10} step={0.1}
                                rules={[
                                    {
                                        required: true,
                                    },
                                ]}
                            />
                        </Form.Item>
                    </Col>
                    {/* scale */}
                    <Col span={18}>
                        <Form.Item
                            name="scaleSliderY"
                            label={intl.formatMessage({ id: 'map.settings.scale.y', defaultMessage: '缩放-y' })}
                            labelCol={{ span: 5 }}
                        >
                            <Slider
                                min={0.1}
                                max={10}
                                step={0.1}
                                marks={{
                                    0.1: '0.1',
                                    1: '1',
                                    10: '10',
                                }}
                                style={{
                                    width: '100%'
                                }}
                            />
                        </Form.Item>
                    </Col>
                    <Col span={6}>
                        <Form.Item
                            name="scaleY"
                        >
                            <InputNumber
                                min={0.1} max={10} step={0.1}
                                rules={[
                                    {
                                        required: true,
@@ -268,8 +412,7 @@
                            name="rotation"
                        >
                            <InputNumber
                                changeOnWheel
                                min={0} max={360} defaultValue={0}
                                min={0} max={360}
                                rules={[
                                    {
                                        required: true,
@@ -339,7 +482,7 @@
                                    </Form.Item>
                                    <Form.Item>
                                        <Button
                                            type="dashed"
                                            type="link"
                                            onClick={() => {
                                                if (lastCopiedSprites) {
                                                    lastCopiedSprites.forEach(copiedSprite => {