|  |  | 
 |  |  | 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' | 
 |  |  | 
 |  |  |             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, | 
 |  |  |  | 
 |  |  | 
 |  |  |                         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({ | 
 |  |  | 
 |  |  |         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); | 
 |  |  | 
 |  |  |                     break; | 
 |  |  |             } | 
 |  |  |             Utils.getMapContainer().addChild(copiedSprite); | 
 |  |  |             Utils.beSettings(copiedSprite, props.setSpriteBySettings, props.setDidClickSprite); | 
 |  |  |             Utils.beSettings(copiedSprite, props.setSpriteBySettings); | 
 |  |  |  | 
 |  |  |             setLastCopiedSprites(prevArr => [...prevArr, copiedSprite]); | 
 |  |  |         } | 
 |  |  | 
 |  |  |             <Form | 
 |  |  |                 form={form} | 
 |  |  |                 onFieldsChange={formValuesChange} | 
 |  |  |                 initialValues={{ | 
 |  |  |                 }} | 
 |  |  |                 onFinish={handleFinish} | 
 |  |  |                 onFinishFailed={onFinishFailed} | 
 |  |  |                 autoComplete="off" | 
 |  |  | 
 |  |  |                 }} | 
 |  |  |                 wrapperCol={{ | 
 |  |  |                     span: 20, | 
 |  |  |                 }} | 
 |  |  |                 initialValues={{ | 
 |  |  |                     scale: 1, | 
 |  |  |                     rotation: 1 | 
 |  |  |                 }} | 
 |  |  |             > | 
 |  |  |                 <Row gutter={[24, 16]}> | 
 |  |  | 
 |  |  |                         </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 | 
 |  |  | 
 |  |  |                     </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, | 
 |  |  | 
 |  |  |                             name="rotation" | 
 |  |  |                         > | 
 |  |  |                             <InputNumber | 
 |  |  |                                 changeOnWheel | 
 |  |  |                                 min={0} max={360} defaultValue={0} | 
 |  |  |                                 min={0} max={360} | 
 |  |  |                                 rules={[ | 
 |  |  |                                     { | 
 |  |  |                                         required: true, | 
 |  |  | 
 |  |  |                                     </Form.Item> | 
 |  |  |                                     <Form.Item> | 
 |  |  |                                         <Button | 
 |  |  |                                             type="dashed" | 
 |  |  |                                             type="link" | 
 |  |  |                                             onClick={() => { | 
 |  |  |                                                 if (lastCopiedSprites) { | 
 |  |  |                                                     lastCopiedSprites.forEach(copiedSprite => { |